Munin
プロジェクトウェブページ より:
- Munin はコンピュータに何があったのか調べる事ができるモニタリングツールです。調べた全ての情報をウェブインターフェースを介して表示する事ができます。インストールが完了した後は、沢山のモニタリングプラグインたちがあなたに代わって仕事をしてくれる事でしょう。
- Munin を使えばネットワーク、SAN、アプリケーション、気象状況等による計算機の性能評価が簡単になります。性能の問題について「おや、この日は何が違ったのかな?」とか簡単に分かるようになります。リソース毎の過不足を簡単に判断できるようになるでしょう。
- Munin は優れた RRDTool (著 Tobi Oetiker) と Perl で書かれたフレームワーク、それと様々な言語で書かれたプラグインたちによって構成されています。Munin は マスター/ノード アーキテクチャー を採っていて、マスターが全てのノードに対し定期的にデータ収集を行います。データは RRDファイル に記録され、必要に応じてグラフを更新します。とりあえずの目標としてプラグイン(グラフ)を自在に扱える様になりましょう。
と、いうわけで、 Munin はシステムの統計を採りグラフに図示してくれるものです。詳しくはオスロ大学の Munin install など見ると良いでしょう。
インストール
マスター機には munin パッケージを、監視したい各デバイスには munin-node をインストールしてください。
マスター機自身を監視対象とする場合は、両方のパッケージを同じマシンにインストールすることも可能です。
さらに詳しいドキュメントは、Munin ドキュメント Wiki にあります。
設定
Munin master
ディレクトリ
munin-master が生成する HTML やグラフ画像を書き込むためのディレクトリを作成します。このディレクトリには、munin ユーザーが書き込み権限を持っている必要があります。
以下の例では /srv/http/munin を使用しています。Webサーバーがインストールされて起動していれば、生成された出力は http://localhost/munin/ で閲覧できます:
# mkdir /srv/http/munin # chown munin:munin /srv/http/munin
/etc/munin/munin.conf の htmldir エントリのコメントを外し、前のステップで作成したディレクトリに変更します:
htmldir /srv/http/munin
Cron
crontab
次の設定で5分措きに munin がデータを更新し、HTMLとグラフ画像を生成します:
# crontab /etc/munin/munin-cron-entry -u munin
ユーザー munin へのメール配送のエイリアスも設定して措くと良いでしょう。もしも postfix を使っているのならば /etc/postfix/aliases に次のように設定し、
munin: root
それから
# newaliases
とかコマンドを実行すると良いでしょう。
systemd タイマー
cron ジョブではなく systemd のタイマーを使うこともできます。
タイマーにはサービスユニットの設定が必要です:
/etc/systemd/system/munin-cron.service
[Unit] Description=Survey monitored computers After=network.target [Service] User=munin ExecStart=/usr/bin/munin-cron
タイマーユニットの設定:
/etc/systemd/system/munin-cron.timer
[Unit] Description=Survey monitored computers every five minutes [Timer] OnCalendar=*-*-* *:00/5:00 [Install] WantedBy=multi-user.target
systemd の設定をリロードして、munin-cron.timer を起動し、問題が発生しないことを確認してください:
$ journalctl --unit munin-cron.service $ less /var/log/munin/munin-update.log
最後に、munin-cron.timer を有効化してください。
パーミッション
/etc/munin/munin.conf で graph_strategy cgi が有効になっている場合、/usr/share/munin/cgi/munin-cgi-graph スクリプトが PNG ファイルをこのディレクトリに書き込めるように、/var/lib/munin/cgi-tmp ディレクトリの所有者とグループが munin になっていることを確認してください。
# chown munin: /var/lib/munin/cgi-tmp
テスト
munin-cron が実行されるように設定されると、Munin はグラフの生成を開始できるようになります。すべてのノードで munin-node.service が実行中であることを確認してください。ノードが稼働してからこのセクションに戻るには、先に #Munin node セクションに進むと良いでしょう。
munin ユーザーとして手動で munin-cron コマンドを実行すると、次の cron 実行を待たずに HTML とグラフ画像の生成を即座にトリガーできます:
[munin]$ munin-cron
Munin のログ出力が設定されている場合、ログは通常 /var/log/munin/ にあります。別のターミナルで munin-cron 実行後に munin-update.log を監視することで、問題の診断に役立つ場合があります:
# tail -f /var/log/munin/munin-update.log
Munin node
デーモン
ノード側では、munin-node.service を起動/有効化します。
IPv6
munin-node で IPv6 をサポートするには、以下のように設定します:
/etc/munin/munin-node.conf
host :::1
以下をインストールしてください:
カスタマイズ
Munin を実行する前に、システムのホスト名を設定しておくと良いでしょう。/etc/munin/munin.conf では、デフォルトのホスト名は myhostname になっています。これを任意のホスト名に変更可能です。ホスト名は、/var/lib/munin 内の .rrd ファイルのグループ化や命名に使用され、さらに指定された munin-master のディレクトリ内で HTML ファイルやグラフをグループ化するのにも使用されます。
プラグイン
munin-node-configure を --suggest オプション付きで実行すると、Munin が現在の環境に適していると思われるプラグインを提案してくれます:
# munin-node-configure --suggest
使用したいプラグインが提案された場合は、その提案に従い、再度コマンドを実行します。munin-node-configure による提案に満足したら、--shell オプションを使ってプラグインを設定できます:
# munin-node-configure --shell | sh
追加方法
基本的に、すべてのプラグインは以下の手順で追加できます(例外もあるため、それぞれのプラグインのドキュメントを確認してください):
プラグインをダウンロードし、/usr/lib/munin/plugins にコピーまたは移動します:
# cp plugin /usr/lib/munin/plugins/
次に、プラグインを /etc/munin/plugins にリンクします:
# ln -s /usr/lib/munin/plugins/plugin /etc/munin/plugins/
次にプラグインをテストします。プラグインのフルパスを使う必要はありません。munin-run が自動で認識してくれます:
# munin-run plugin
そして munin-node.service を再起動し、Webページを更新してください。
追加プラグイン
Munin にはまだまだたくさんのプラグインが存在します。インストールして使える状態になっています。MuninExchange は探し始めるのに最適な場所です。また、必要なプラグインが見つからない場合は、自分で作成するのも簡単です。Munin のドキュメント Wiki の Developing Plugins を参照してください。
削除方法
プラグインを削除したい場合は、/etc/munin/plugins にあるリンクファイルを削除するだけで OK です。/usr/lib/munin/plugins からプラグイン本体を削除する必要はありません。
# rm /etc/munin/plugins/plugin
デバッグ
期待通りに動作しないプラグイン(出力が全く無いなど)がある場合は、直接実行してみると良いでしょう。例えば、ここまでの手順に従っていると、apache_accesses プラグインが有効になっていても全く出力されないことに気づくかもしれません。このプラグインを直接実行するには:
# munin-run apache_accesses
次のようなエラーが表示されることがあります:
LWP::UserAgent not found at /etc/munin/plugins/apache_accesses line 86.
これは、Perl の関数が見つからないことを意味しています。この場合、不足しているライブラリ (ここでは perl-libwww) をインストールすることで問題を解決できます。
パーミッション
多くのプラグインがログファイルを読み込むため、munin ユーザーを log グループに追加すると便利です:
# usermod -a -G log munin
Web server (オプション)
このガイドでは、Munin を設定して静的 HTML およびグラフ画像を生成し、任意のディレクトリに書き込むようにします。これらの生成されたファイルは、ローカルの任意のウェブブラウザで閲覧可能です。生成されたファイルをリモートマシンから閲覧したい場合は、以下のいずれかのウェブサーバーをインストールして設定する必要があります:
または ウェブサーバー カテゴリにある他のサーバーのいずれか。
Apache
Apache VirtualHost の例
以下の情報に基づいています:
- http://guide.munin-monitoring.org/en/stable-2.0/example/webserver/apache-virtualhost.html
- http://munin-monitoring.org/wiki/MuninConfigurationMasterCGI[リンク切れ 2021-05-17]
次のメジャーリリースの Munin では、よりシンプルになります。以下を確認してください:
基本的な静的 HTML
<VirtualHost *:80>
ServerName localhost
ServerAdmin root@localhost
DocumentRoot /srv/http/munin
ErrorLog /var/log/httpd/munin-error.log
CustomLog /var/log/httpd/munin-access.log combined
</VirtualHost>
DynaZoom 機能を備えた静的 HTML
perl-cgi-fast をインストールします。
以下のいずれかを有効にする必要があります:
mod_cgid(またはmod_cgi、mpm_prefork_module を使用している場合)をhttpd.conf内でアンコメント- または mod_fcgidAUR をインストールし、
LoadModule fcgid_module modules/mod_fcgid.soをhttpd.confに追加
<VirtualHost *:80>
ServerName localhost
ServerAdmin root@localhost
DocumentRoot /srv/http/munin
ErrorLog /var/log/httpd/munin-error.log
CustomLog /var/log/httpd/munin-access.log combined
# Rewrites
RewriteEngine On
# Images
RewriteRule ^/munin-cgi(.*) /usr/share/munin/cgi/$1 [L]
# Ensure we can run (fast)cgi scripts
<Directory "/usr/share/munin/cgi">
Require all granted
Options +ExecCGI
<IfModule mod_fcgid.c>
SetHandler fcgid-script
</IfModule>
<IfModule !mod_fcgid.c>
SetHandler cgi-script
</IfModule>
</Directory>
</VirtualHost>
DynaZoom パーミッション
Munin がグラフを描画できず、Could not draw graph "/var/lib/munin/cgi-tmp/munin-cgi-graph/" のようなメッセージをログに記録する場合は、/var/lib/munin/cgi-tmp/munin-cgi-graph/ にグループ権限が設定されていることを確認してください。これにより、munin-cgi-graph ディレクトリに、drwxrwxr-x 3 munin http 4096 Aug 9 20:11 munin-cgi-graph などの書き込み可能なグループ権限が与えられます:
ls -l /var/lib/munin/cgi-tmp/
グループ権限が設定されていない場合は、次のようにします。
chmod g+w /var/lib/munin/cgi-tmp/munin-cgi-graph/
Full dynamic
html_strategy および graph_strategy を cgi に設定する場合、この VirtualHost を使用します。ページの読み込みには時間がかかりますが、munin-cron の実行時間は短くなります。これは、多数のノードをポーリングしており、munin-cron が5分以上かかる可能性がある場合に有効です。
perl-cgi-fast をインストールします。
以下のいずれかを有効にする必要があります:
mod_cgid(またはmod_cgi)をhttpd.confでアンコメント- または mod_fcgidAUR をインストールして、
httpd.confに以下を追加
<VirtualHost *:80>
ServerName localhost
ServerAdmin root@localhost
DocumentRoot /srv/http/munin
ErrorLog /var/log/httpd/munin-error.log
CustomLog /var/log/httpd/munin-access.log combined
# Rewrites
RewriteEngine On
# Static content in /static
RewriteRule ^/favicon.ico /etc/munin/static/favicon.ico [L]
RewriteRule ^/static/(.*) /etc/munin/static/$1 [L]
# HTML
RewriteCond %{REQUEST_URI} .html$ [or]
RewriteCond %{REQUEST_URI} =/
RewriteRule ^/(.*) /usr/share/munin/cgi/munin-cgi-html/$1 [L]
# Images
RewriteRule ^/munin-cgi(.*) /usr/share/munin/cgi/$1 [L]
<Directory "/etc/munin/static">
Require all granted
</Directory>
# Ensure we can run (fast)cgi scripts
<Directory "/usr/share/munin/cgi">
Require all granted
Options +ExecCGI
<IfModule mod_fcgid.c>
SetHandler fcgid-script
</IfModule>
<IfModule !mod_fcgid.c>
SetHandler cgi-script
</IfModule>
</Directory>
</VirtualHost>
Nginx
Munin 2.0.x
この Nginx 設定例は、Munin 2.0.x の munin マスターインストールに基づいています。FastCGI を必要とし、munin.conf で html_strategy cgi および graph_strategy cgi を使用します。
Munin-Master に nginx, perl-cgi-fast, perl-html-template-expr をインストールします。
cgi 戦略を使用するため、systemd ソケットファイルを有効化して、Nginx FastCGI 設定が以下のソケットに接続できるようにします /run/munin/fcgi-graph.sock、/run/munin/fcgi-html.sock
次を起動/有効化してください、munin-graph.socket と munin-html.socket
Munin 用の vhost 設定ファイルを作成
/etc/nginx/sites-available/munin
server {
server_name yourhost.example.com;
listen 80;
access_log /var/log/nginx/munin-access.log;
error_log /var/log/nginx/munin-error.log info;
location ^~ /munin-cgi/munin-cgi-graph/ {
fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*);
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/run/munin/fcgi-graph.sock;
include fastcgi_params;
}
location /munin/static/ {
alias /etc/munin/static/;
}
location /munin/ {
fastcgi_split_path_info ^(/munin)(.*);
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/run/munin/fcgi-html.sock;
include fastcgi_params;
}
}
その後、ウェブサーバー(nginx.service)を再起動します。
うまくいけば、ブラウザで http://yourhost.example.com/munin/ にアクセスすると Munin の概要ページが表示されるはずです。
Munin 2.1.x
Munin 2.1.x はまだ Arch リポジトリにはありませんが、このバージョンでは FastCGI を使用せず、代わりに munin-httpd が使用されるようになります。
このページ に設定例があります。
ヒントとテクニック
MySQL
MySQL プラグインは AUR のパッケージに依存しています: perl-dbi, perl-cache-cacheAUR, perl-ipc-shareliteAUR
また、データベースにアクセスするときは専用の MySQL ユーザーを使うことが推奨されています。ユーザーを作成するには以下の MySQL コマンドを実行:
MariaDB> CREATE USER 'muninuser'@'localhost' IDENTIFIED BY 'muninpassword'; MariaDB> GRANT SUPER,PROCESS ON *.* TO 'muninuser'@'localhost'; MariaDB> GRANT SELECT ON mysql.* TO 'muninuser'@'localhost'; MariaDB> FLUSH PRIVILEGES;
この新しいユーザーを使うように Munin を設定するには、以下を作成:
/etc/munin/plugin-conf.d/mysql_
[mysql_*]
env.mysqlconnection DBI:mysql:mysql;host=127.0.0.1;port=3306
env.mysqluser muninuser
env.mysqlpassword muninpassword
S.M.A.R.T.
S.M.A.R.T. データの監視を有効にするには smartmontools パッケージをインストールして、以下を使用:
/etc/munin/plugin-conf.d/munin-node
[smart_*]
user root
group disk
そして監視するディスクのシンボリックリンクを適切に作成してください。sda の場合:
# ln -s /usr/lib/munin/plugins/smart_ /etc/munin/plugins/smart_sda
lm_sensors
lm_sensors をインストールして Lm sensors#lm_sensors の設定 に従って設定を行って下さい。それが全て終わったら、シンボリックリンクを作成:
# ln -s /usr/lib/munin/plugins/sensors_ /etc/munin/plugins/sensors_fan # ln -s /usr/lib/munin/plugins/sensors_ /etc/munin/plugins/sensors_temp # ln -s /usr/lib/munin/plugins/sensors_ /etc/munin/plugins/sensors_volt