前回まではServersMan@VPS上に構築したWordPressで発生したメモリリーク(?)とその対策を紹介しました。
突然のサーバの停止を避けるためには定常的な監視が欠かせないのですが、毎回sshでログインしてチェックするのは面倒です。
今回はWebブラウザで接続して状態を監視するためにMuninをセットアップします。
Muninとは?
Muninとはネットワークでリソース(メモリやHDDなど)を監視してグラフ化してくれるソフトです。グラフ化されてた結果はHTMLファイルで出力されるので、Webサーバを適切に設定すればリモートからブラウザで監視結果を見ることができます。
Muninは監視対象にインストールする「munin-node」と、複数のmunn-nodeを監視する「munin」から構成されます。「munin-node」と「munin」を同じサーバで動かせば自分自信を監視することができます。
Muninをインストールする
インストール環境はServersMan@VPS上に構築したDebian GNU/Linux環境です。このLinuxにWordPressをインストールしてこのブログを構築しています。
このサーバにMunin(muninとmunin-nodeの両方)をインストールします。
Debian向けのパッケージを確認
DebianのバージョンはSqueeze(6.0)となっています(ちなみにWheezyにはアップグレードに失敗しました)。
Debian向けのMuninパッケージがどうなっているのかDebianのサイトで確認してみます。
Squeeze向けにパッケージはありましたが、バージョンは1.4.5です。この記事を作成している時点で、Muninの最新バージョンは2.0.17ですからこれはちょっと古すぎます。Wheezy向けなら2.0.6なのですが、これを無理やり使うとトラブルが発生する可能性は高いです。
そこでSqueeze-Backportsを確認してみます。
2.0.6のMuninパッケージがありました。Squeeze-Backportsというのは、Wheezy(あるいはそれ以降)のパッケージをSqueezeで動くようにコンパイルしたものなので、基本的にSqueezeで使うことができます。
今回はこのSqueeze-BackportsにあるMuninパッケージを使うことにします。
Squeeze-Backportsを使えるようにする
Squeeze-Backportsを使えるようにするには、まずはapt-getコマンドがSqueeze-Backportsのパッケージリストを取得できるようにする必要があります。
これには/etc/apt/sources.list.d以下にsqueeze-backports.listというファイル名で次の内容のファイルを作ります。
deb http://ftp.jp.debian.org/debian-backports squeeze-backports main contrib non-free deb-src http://ftp.jp.debian.org/debian-backports squeeze-backports main contrib non-free
そしてapt-get updateを実行します。これでSqueeze-Backportsにあるパッケージもインストール対象として選べるようになります。
sudo apt-get update
Muninパッケージをインストールする
それではSqueeze-BackportsからMuninパッケージをインストールします。今回はついでにプラグインのパッケージもインストールしておきます。
sudo apt-get -t squeeze-backports install munin munin-plugins-extra
ポイントは「-t」です。これでどのバージョンのDebianからインストールするかを選択しています。
Muninを設定する
インストールが終わったらMuninの設定を行います。Muninの設定には監視対象(munin-node)としての設定と、監視側(munin)としての設定の二つがあります。
munin-nodeの設定
監視対象としての設定で/etc/munin/munin-node.confで行います。
ほとんどインストールしたままでよいのですが、host_nameだけは修正しておきます。
host_nameは、Webブラウザで監視結果を見る際に、ここで設定したホスト名で表示されます。監視対象が一台だけだったらデフォルトのままでも問題ないのですが、デフォルトの「localhost.localdomain」だとどのサーバを監視しているのかわからなくなってしまいます。
ですので「host_name munin.scratchpad.jp」というようにわかりやすいホスト名をつけておきます。
また、allowで始まる行が「allow ^127\.0\.0\.1$」となっていることを確認しておきます。このようになっていると、自分自身でしか監視できないことになります。
修正が終わったらmunin-nodeを再起動します。
sudo service munin-node restart
muninの設定
監視側としての設定で/etc/munin/munin.confで行います。
こちらはどのホストを監視するのかを記載します。デフォルトでは[localhost.localdomain]を監視することになっているのですが、munin-node.confでホスト名を設定したので、それにあわせて変更しておきます。
#[localhost.localdomain] # address 127.0.0.1 # use_node_name yes [munin.scratchpad.jp] address 127.0.0.1 use_node_name yes
Nginxを設定する
munin.scratchpad.jpで監視結果を表示できるようにnginxを設定します。またBasic認証も設定しておき、パスワードがない場合は接続できないようにしておきます。
まずmuninというファイル名で/etc/nginx/sites-availableに次の内容のファイルを作ります。
server { # munin.scratchpad.jpに対するポート80への接続を処理する listen 80; server_name munin.scratchpad.jp; # コンテンツがあるローカルのトップディレクトリの設定 root /var/cache/munin/www; # URIにファイルの指定がない場合にはindex.htmlかindex.htmを表示 index index.html index.htm; # ログファイルの設定 エラーは警告レベル以上を記録 error_log /var/log/nginx/munin-error.log warn; access_log /var/log/nginx/munin-access.log combined; # 共通の制限事項を設定 include global/restrictions.conf; auth_basic "Munin Login"; auth_basic_user_file "/etc/munin/munin-htpasswd"; }
Basic認証の設定ファイルは次のコマンドで生成します</O\P>
sudo htpasswd -c /etc/munin/munin-htpasswd ユーザ名
sites-enabledにシンボリックリンクを作成して設定を有効にしたあと、nginxを再起動します
sudo ln -s /etc/nginx/sites-available/munin /etc/nginx/sites-enabled/ sudo service nginx restart
動作確認
Muninは5分ごとに監視結果を更新するので、5分以上待った後、Webブラウザでmuninを設定したサーバ(nginxで設定したホスト名)にアクセスしてみます。
次のような画面が表示されればOKです(下記の画面では監視項目は若干デフォルトから変更しています)。
例えば左側の「disk」をクリックすると、ハードディスクの使用状況がグラフ化されて表示されるはずです。
まとめ
今回はServersMan@VPSにMuninを導入して動作状況を監視できるようにしてみました。これならsshでいちいちログインする必要もないので、だいぶ監視しやすくなりました。
しかし、監視項目などはまだ調整が必要です。次回は監視項目の調整を行います。
コメント