Munin
プロジェクトウェブページ より:
- Munin はコンピュータに何があったのか調べる事ができるモニタリングツールです。調べた全ての情報をウェブインターフェースを介して表示する事ができます。インストールが完了した後は、沢山のモニタリングプラグインたちがあなたに代わって仕事をしてくれる事でしょう。
- Munin を使えばネットワーク、SAN、アプリケーション、気象状況等による計算機の性能評価が簡単になります。性能の問題について「おや、この日は何が違ったのかな?」とか簡単に分かるようになります。リソース毎の過不足を簡単に判断できるようになるでしょう。
- Munin は優れた RRDTool (著 Tobi Oetiker) と Perl で書かれたフレームワーク、それと様々な言語で書かれたプラグインたちによって構成されています。Munin は マスター/ノード アーキテクチャー を採っていて、マスターが全てのノードに対し定期的にデータ収集を行います。データは RRDファイル に記録され、必要に応じてグラフを更新します。とりあえずの目標としてプラグイン(グラフ)を自在に扱える様になりましょう。
と、いうわけで、 Munin はシステムの統計を採りグラフに図示してくれるものです。詳しくはオスロ大学の Munin install など見ると良いでしょう。
インストール作業
Munin はクライアント−サーバーモデルです。クライアントを munin-node 、サーバーを munin と称します(ドキュメントでは "munin-master"となっていたりもするけど)。
munin-master は1台のマシンにインストールし、 munin-node は監視したい全てのマシンにインストールします。ここでは、とりあえず1台のマシンについてのみインストールする事を考えてみるとしましょう。より詳しく知りたいのならば Munin documentation wiki を見ましょうね。
munin と munin-node について
執筆現在に於いて munin (munin-master) と munin-node は extra リポジトリにパッケージがあります。
パッケージの確認
# pacman -Ss munin
extra/munin 1.4.6-2 A distributed monitoring/graphing tool extra/munin-node 1.4.6-2 A distributed monitoring/graphing tool
インストール
# pacman -S munin munin-node
ウェブサーバーの必要性について
このガイドでは Munin で静的な HTML とグラフ画像を設定されたディレクトリへ出力する様にセットアップを行います。生成されたファイルはローカルのブラウザからならそのまま見ることもできるでしょう。しかし、もしリモートのマシンから見たいのならば適当なウェブサーバーを予めセットアップしておく必要があります。例えば、
などなど。他にサーバーについては詳しく知りたければウェブサーバーカテゴリも参考になるかもしれません。
IPv6
munin-node で IPv6 をサポートするには (/etc/munin/munin-node.conf
で host :::1
を使う) 以下のパッケージをインストールする必要があります:
設定
デーモン
デーモンを追加して
# systemctl enable munin-node
起動して置きましょう
# systemctl start munin-node
詳しくはデーモンを見て下さい。
プラグイン
munin-node-configure
を実行しましょう。--suggest
オプションを付けると、インストールしたマシンで使えそうなプラグインのお勧めリストが表示されます:
# munin-node-configure --suggest
使用したいプラグインがあれば、もう一度コマンドを実行します。--shell
オプションを付けると munin-node-configure
によってお勧めされたプラグインが設定されるでしょう:
# munin-node-configure --shell | sh
SNMP について設定したい場合
例えば SNMP サーバーが SERVER というホスト名で、 バージョン v2c 、 コミュニティ名 COMMUNITY で稼働している際は次の様にお勧めリストの確認を行います:
# munin-node-configure --suggest --snmp SERVER --snmpversion snmpv2c --snmpcommunity COMMUNITY
この結果をシェル用に出力し、その出力をシェルに渡すには次の様にします:
# munin-node-configure --shell --snmp SERVER --snmpversion snmpv2c --snmpcommunity COMMUNITY | sh
ディレクトリ
munin-master がHTMLやグラフ画像を生成する為のディレクトリを設定し、作成して於きましょう。
/etc/munin/munin.conf
の以下の htmldir
のコメントを外します:
htmldir /srv/http/munin
これで /srv/http/munin
へ出力が設定されます。
ディレクトリについては作成するだけでなく、ユーザー munin がこのディレクトリへの書き込み権限を満たす様にするのも忘れないようにしましょう。
# mkdir /srv/http/munin # chown munin:munin /srv/http/munin
適当なウェブサーバーが標準設定のまま (ドキュメントルートが /srv/http
)で稼働していれば、このディレクトリを http://localhost/munin/ で表示する事ができるでしょう。
nginx-1.18.0-1 の場合は、ドキュメントルートの初期値が /usr/share/nginx/html となっているので以下のように変更します。
location / {
root /srv/http; index index.html index.htm;
}
ホスト名
munin を実行する前に、システムのホスト名を設定しておくと良いでしょう。/etc/munin/munin.conf
で標準では myhostname
となっている筈です。お好みの名前を付けてあげて下さいね。ホスト名は /var/lib/munin
の .rrdファイル、HTML やグラフ画像のグループ化に適用されます。
Cron
次の設定で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
を有効化してください。
ユーザー munin へのアクセス権の設定
多くのプラグインがログファイルを読もうとします。そう云う訳でユーザー munin を log グループに追加して措きましょう:
# usermod -aG log munin
テスト
Munin は既に使える状態になっています。さあ、munin-node
を稼働させましょう:
# systemctl start munin-node
もしも手作業で HTML とグラフ画像を生成したいのならば、
# munin --shell=/bin/bash $ munin-cron
とかすると良いでしょう。後はブラウザで出力ディレクトリ或いは http://localhost/munin/ を表示する等してインターフェースをテストしましょう。
プラグイン
Munin には沢山のプラグインがあってキミにインストールされるのを待っているよ!手始めに MuninExchange を見るといいよ、素敵だろ?まあ、時にはお目当てのプラグインを見付けられない事もあるだろうけど…そんな時は自分で書けばいいよ!簡単だから HowToWritePlugins を見ながらやってみるといいよ。
追加
基本的には全てのプラグインはマナーに則って追加されるよ(いやまあ勿論、例外はあるからプラグイン毎によく確認してね!):
先ずはプラグインをダウンロードするなどして、それを /usr/lib/munin/plugins
に複製なり移動なりしよう。
# cp <plugin> /usr/lib/munin/plugins/
そして /etc/munin/plugins
にシンボリックリンクを張るんだ:
# ln -s /usr/lib/munin/plugins/<plugin> /etc/munin/plugins/<plugin>
さあ、プラグインをテストしよう。プラグインのフルパスを入れる必要は無いよ、次にように munin-run を実行しよう:
# munin-run <plugin>
それから munin-node を 再起動するんだ:
# systemctl restart munin-node
後はウェブページが更新されれば完了さ。
削除
プラグインを削除したいのなら、/etc/munin/plugins
のシンボリックリンクを削除すればいい。/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 をインストールしてあげると良いかもしれません。
ヒントとテクニック
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