Ubuntu Weekly Recipe

第359回 Muninでサーバーのリソースを可視化しよう

この記事を読むのに必要な時間:およそ 7 分

リソース監視の必要性

VPSやクラウドの流行で,安価にサーバーを持てる時代になりました。ところで皆さん,手持ちのサーバーの状態はきちんとモニタリングしていますか? もしもサーバーに障害が発生したら,ただちにサービスを復旧させなければなりません。そのためZabbixやNagios等を使い,Pingに応答するか? 80番ポートにコネクションを張れるか? と言うように,サーバーが生きているかどうかを常に監視していることでしょう。また,外部から特定のURLへの疎通を監視し,応答しなくなった際にアラートメールを送ってくれるようなサービスもあります。

しかし,それだけでは起こり得る障害を未然に防ぐことはできません。たとえばデータが溜まってきてHDDがあふれそうだったり,Webサービスへのアクセスが増えたことによってメモリが不足ぎみになっていたり,DBのスロークエリーが出ていたりといったサーバーのリソースの変化を監視し,障害が起きる前に策を講じることも大切です。また実際に障害が起きてしまった際にも,⁠その時何が起きていたのか」を後から分析できるのは非常に重要です。

Muninは,そんなリソースのモニタリングに特化した監視システムです。今週のRecipeでは,Ubuntu 14.04とMuninを使って監視サーバーを作ってみましょう。

Muninノードのセットアップ

Muninは,監視対象のサーバーにインストールするmunin-nodeと,各ノードから情報を集め,Webページとして表示するmuninサーバーで構成されています。munin-nodeはTCPのポート4949でサーバーからの接続を待ち受け,サーバーはこのポートに接続してノードの情報を取得します。それではmuninサーバーと監視対象のサーバーを作るため,サーバーを2台用意しましょう。なおこの例ではさくらのクラウドを利用しています注1)⁠

注1)
本記事では便宜上,muninが動作しているサーバーを「muninサーバー」⁠監視対象のサーバーを「munin-nodeサーバー」⁠後述するローカルネットワークでつながれたサーバーを「データベースサーバー」と呼称します。

まずは監視対象となるmunin-nodeサーバーです。Ubuntu 14.04が起動したら,以下のように「munin-node」パッケージをインストールします。これだけで基本的な設定は完了で,munin-nodeプロセスが4949ポートをLISTENしはじめます。しかし今回のケースでは,これだけでは設定が足りません。munin-nodeの設定ファイルである/etc/munin/munin-node.confをエディタで開いてみてください。実行図のように「allow」ではじまる行があります。これはmunin-nodeに接続できるIPアドレスの正規表現で,デフォルトでは見ての通りローカルホストのみとなっています。つまりこのままでは別のmuninサーバーからの接続が拒否されてしまいます。ここに「allow」行を書き足して,muninサーバーにするもう1台のサーバーのIPアドレスを記述しましょう。変更を保存した後は,munin-nodeを再起動しておいてください。

munin-nodeのインストール

$ sudo apt-get install munin-node

munin-nodeに接続できるサーバーを追加する

allow ^127\.0\.0\.1$
allow ^::1$
allow ^219\.xxx\.yyy\.zzz$    muninサーバーのIPアドレスを追加

munin-nodeの再起動

$ sudo service munin-node restart

munin-nodeがTCP:4949をLISTENしている状態

$ sudo ss -lntp
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port 
LISTEN     0      128                       *:22                       *:*      users:(("sshd",882,3))
LISTEN     0      128                      :::4949                    :::*      users:(("munin-node",2118,5))
LISTEN     0      128                      :::22                      :::*      users:(("sshd",882,4))

プラグインの追加と削除

munin-nodeはCPU負荷,ロードアベレージ,ネットワーク転送量など,さまざまな情報を取得することができます。これらの監視項目はプラグインとして実装されており,/etc/munin/plugins以下にあります。正確には/usr/share/munin/plugins以下がプラグインの実体で,/etc/munin/plugins以下にあるのは,使いたいプラグインに対して張られたシンボリックリンクです注2)⁠

注2)
別名でリンクを張ることで,監視対象を変化させられるプラグインもあります。たとえば「if_」プラグインはネットワークのトラフィックをモニタリングするプラグインですが,⁠if_eth0」⁠if_em0」のような名前でリンクを張ることによって,監視対象のNICを指定することができます。このようなプラグインをワイルドカードプラグインと呼びます。

パッケージをインストールした段階で一通り必要と思われるプラグインは有効になっていますが,もしも不要なプラグインがあったらシンボリックリンクを削除してください。また新たにプラグインを追加したい場合は,シンボリックリンクを張ってください。プラグインの追加,削除を行った後は,munin-nodeの再起動が必要です。

プラグインが動作しているかテストしたい場合は,⁠munin-run」コマンドを使いましょう。コマンドの引数にプラグイン名を与えて,⁠プラグイン名.value」として値が返ってきたならば,そのプラグインは正常に動作しています。

ロードアベレージを取得するloadプラグインのテスト

$ sudo -u munin munin-run load
load.value 0.01

著者プロフィール

水野源(みずのはじめ)

Ubuntu Japanese Teamメンバー。理想のフリーデスクトップ環境を求めて東へ西へ……のはずが,気がついたら北の大地で就職していたインフラ寄りのエンジニア。株式会社インフィニットループ所属。

コメント

コメントの記入