mackerelでオンプレサーバーの監視を強化してみたら幸せになった
いつもM研テックブログをご覧いただきまして、ありがとうございます。朝日新聞社メディア研究開発センター(M研)の田森です。
さて、M研では研究用のGPU搭載サーバーをはじめとして、何台かのオンプレサーバーやNASが存在します。
結構台数があるので、それなりの管理が必要なのですが、中でも困っているのは
各ストレージはどれくらい使われているのか?
GPUはどのサーバーででどのくらい動いているのか?
がなかなか分かりづらい。これらの項目を含めて、サーバーの状況を包括的に監視できるものを探していたのですが、 mackerel というサービスで実現できそうなことがわかり、試してみました。
Disclaimer
当記事の内容については、mackerelを運営されている株式会社はてな様の保証や推薦を得たものではなく、弊社で独自に実施した内容をまとめたものです。
mackerelエージェントのインストール
サインアップを済ませると、いきなり新規ホストの登録になります。登録とはここではすなわち、エージェント(監視プログラム)のインストールと等価です。OSごとに用意されたエージェントを導入します。
弊社のサーバーはすべてUbuntu系列のOSで統一しており、この画面でUbuntuを選択します。
下記のような1行のコマンドが提供されますので、そのコマンドをそれぞれのサーバー上のターミナルで実行すれば終わりです。なんて簡単なんでしょうか。
wget -q -O - <https://mackerel.io/file/script/setup-all-apt-v2.sh> | MACKEREL_APIKEY='APIキー。ここは最初から埋められています' sh
実行してすぐに、mackerelの管理画面にホストが表示されます。
この状態ですでに、各サーバーのCPU使用率、メモリー使用率、ネットワークの通信状況などが監視できるようになります。
ストレージの監視
インストールしたままの状態でも、各ストレージの全体容量と利用容量がバイト単位で確認できるのですが、もう少し工夫して、ある一定の利用割合を超えたらアラートを出したいと思います。「全体のx%以上使用するとアラートを出す」というような感じです。
このためにはプラグインを利用しますが、今回は公式で公開されているチェックプラグインの中でも check-disk を利用します。
Ubuntu前提(apt)ですが、下記のコマンドでインストールできます。
sudo apt install mackerel-check-plugins
このプラグインを利用するためには、エージェントの設定ファイル /etc/mackerel-agent/mackerel-agent.conf の変更が必要です。2つの領域を確認したかったので2つの設定を追加しています。
[plugin.checks.disk_0]
# 残り容量10%でwarning、5%でcriticalで発報する
command = ["check-disk", "--path", "/", "--warning", "10%", "--critical", "5%"]
# 2台目 もっと増やしたいときは plugin.checks.disk_xxxx とする。 xxxxは被らないようにする。
[plugin.checks.disk_1]
command = ["check-disk", "--path", "/data", "--warning", "10%", "--critical", "5%"]
設定を変更後、エージェントを再起動します。
sudo systemctl restart mackerel-agent.service
このあと、mackerelの管理画面の「アラート」で、もししきい値を切っていれば、すでにアラートが出ているはずです。
設定ファイルにはNASの領域も設定できます。基本的には df コマンドで見られる単位の領域を設定できます。NASの場合は、NASをマウントしているサーバー1台だけに設定しておけばよいかと思います。
GPUの監視
さらに、GPUの監視もできました。
GPUの監視にもプラグインが必要です。一時期は公式プラグインだったようですが、現状はそうではないようで、少しインストールの手順が必要です。
注意:繰り返しですが公式プラグインではないようですので、自己責任でインストールしてみてください。
まずはmakerelのCLIツールである mkr をインストールします。
sudo apt install mkr
この mkr を利用して、GPU監視プラグインをインストールします。
sudo mkr plugin install mackerelio/mackerel-plugin-nvidia-smi
また、設定ファイル /etc/mackerel-agent/mackerel-agent.conf の変更も必要です。
[plugin.metrics.nvidia-smi]
command = "/opt/mackerel-agent/plugins/bin/mackerel-plugin-nvidia-smi"
最後に、先程同様エージェントを再起動します。
sudo systemctl restart mackerel-agent.service
ホストの監視画面でみると、GPUのメモリー使用状況や温度、利用率がわかります。複数のGPUがあれば、GPUごとの状況が見られます。
このグラフに関しては、カスタムダッシュボードとして、各サーバーのGPU利用率(GPU Utilization)を並べてひと目で見ることもできますので、サーバー全体のGPU稼働状況を見るのに便利です。
料金
料金で気をつけないといけないのは「メトリック数」です。普通のサーバーにいれると、多分それはスタンダードホストと認識され、1スタンダードホストにつき税込み1,833円(ただしスタンダードプラン)が請求されます。1スタンダードホストには、200メトリックが含まれます。メトリックというのはつまり「監視項目」で、わかりやすくいうと監視画面に現れるグラフの1本の線が、1つの監視項目に当たります。1スタンダードホストの契約では、200本の線まで書いてくれるということです。ただし200メトリックを超過すると、新たに1台分の料金が追加になりますので要注意です。
なお、2024/11より値上がりするそうですので、新しい料金はこちらをご覧ください。
さて、設定を進めた後、アカウント管理画面のプランを見ると、1台のホストでメトリック数が200を超えている、となっていました。このままだとこのサーバーは2台分の料金が請求されます。
例えば「disk」や「filesystem」という項目を見ると、「loop」というものがズラッと並んでいます。これらも一本一本グラフになっていますが、Snapパッケージをインストールすると増えていくループバックデバイスと呼ばれるものなんだそうです(詳細は端折ります…)。
コイツらは監視する必要がないので、監視項目から外したいと思います。設定ファイル/etc/mackerel-agent/mackerel-agent.confの変更をします。 ignore で、無視する項目を指定します。
[disks]
# loopから始まるもの
ignore = "loop"
[filesystems]
# 正規表現でもかける
ignore = "(loop.*|_snap.*)"
最後に、先程同様エージェントを再起動します。
sudo systemctl restart mackerel-agent.service
これで、これらのメトリックは監視画面でこれ以降、見られなくなるはずです。監視項目もこれで減っているはずなのですが、アカウント管理画面にはすぐには反映されません。この数は月平均で算出されるようなので、反映されるまで気長に待ちましょう。
楽しい監視ライフを
グラフになると見ているだけでも楽しいです。みんなの研究の進捗具合の一片がつかめるようにもなったりします。
サーバーの台数があるとそれなりの料金がかかりますが、手軽に監視も始められますし、ここに挙げた以外にも様々な監視ができるようですので、サーバー監視でお困りの読者の皆さん、mackerelをぜひ試してみてください。
(メディア事業本部 メディア研究開発センター 田森秀明)