Muninの設定についてまとめてみる。
久しぶりに Munin の設定についてまとめてみる。 前回書いたのが4年以上前みたいなので。 最近の事情とか含めたりと。
Muninは各マシンの状態を数値で取得して、グラフを書いて状態の可視化をするツールです。 Muninには munin-node という監視される側 (agent) と、munin サーバと呼ばれる数値を収集して記録しグラフ作成を行う2つのパートに分かれます。
昔はFedoraやEPELからパッケージを持ってきて云々とかしていたのですが、最近はそのようなことも必要なくなり、おおよその Linux ディストーションに添付されるようになりました。 インストールは yum や apt-get で行えばよいかと思います。
設定は
おおよそ必要な設定項目は下記のようになります。
設定が終わったら、localhost や munin server から telnet などで接続できるか確認します。
ここで、下記のようなコマンドを送ってみましょう
munin server は munin-node エージェントから各マシンの値を取得して、これを記録しHTMLやPNGのグラフとして可視化します。 また各プラグインの閾値などを元に Critical, Warning の表示をすることも出来ます。
設定ファイルは
まずは監視対象のホストの一覧を書きましょう。例えば
監視対象のホストの分だけ、上記のような内容を書いていきます。
Munin が作成するHTMLを Web Server 経由で見られるように、下記内容を適切なVirtualHost内に記述します。
Debian の場合は
あとは apache をリスタートするなりして、表示されるか確認してください。
うまくいかない場合は、これらのログファイルを参考にヒントを探してください。
Munin の環境を作っていくと、問題に遭遇したり、さらに詳しい監視を行いたくなるでしょう。
それらの対処法をまとめておきます。
標準的なMuninパッケージの設定の場合、Munin Server は5分に1回 cron で munin-cron が実行され、 munin-node から値を取得記録し、munin-html, munin-grapth を実行するようになっています。 監視対象のホストはプラグイン数が増えると、特に munin-grapth の実行回数が増えて、1回あたりの処理時間が長くなってしまいます。
対策としては、下記の2つが有力です。
munin-node のプラグインを減らすのは手っ取り早いです。
もう一つの方法は、グラフのPNG作成をCGIやFastCGIで実行する方法です。 MuninのグラフPNGは常に全てが見られるわけではないので、Webブラウザで見に来た時に On-demand で作成する方法です。 若干手間がかかりますが、結構現実的な対応法です。
まずは
この設定を行った後の munin-cron は、HTML作成時にグラフPNGのファイルを作成せず、上記の CGI パスをHTML中に埋め込みます。
そして、一部ディレクトリをCGIから書き出す具合になるので、Debianの場合は下記コマンドでファイル・ディレクトリのグループIDを変更し、 group writable にします。
また、log rotate 時の所有者の設定も必要なので、
あとは、munin-cgi-graph が動作するように、 Apache の場合でしたら目的の VirtualHost 内に cgi-bin の設定をします。
あとは apache をリスタートするなりして、確認してください。 うまくいかないようでしたら、これらのログファイルを参考にヒントを探してください。
Apache HTTPD には mod_status という機能があり、実行しているプロセス数や転送量などを取得できるようになっています。 これの結果を munin から取得できます。
まずは mod_status の設定をします。 Debian でしたら下記コマンドで mod_status を活性化できます。
あとは
munin-node へのプラグインの登録は、
Munin には MySQL Server に接続して、各種統計情報を収集するプラグインがあります。 これの設定方法を Debian/Ubuntu を例に紹介します。
PostgreSQLも同様にDB接続や認証周りを設定すれば利用できるはずです。
まずは MySQL Server に接続するためのID, Password の設定を拾ってきます。 Debianの場合、
これの password の内容をコピーしておき、
そして、
これらの監視が出来るということですので、root ユーザで下記のようなコマンドを使って一気にプラグイン登録します。
終わったら、
Munin の仕組み
Muninは各マシンの状態を数値で取得して、グラフを書いて状態の可視化をするツールです。 Muninには munin-node という監視される側 (agent) と、munin サーバと呼ばれる数値を収集して記録しグラフ作成を行う2つのパートに分かれます。
- エージェントである munin-node
- 情報収集を行う munin server
- munin-node に接続し情報を収集する munin-update
- 可視化するためのHTMLを作成する munin-html
- 可視化するためのグラフ画像を作成する munin-grapth, munin-cgi-grapth, munin-fastcgi-graph
- 上記3つを駆動する munin-cron
munin-node のインストールや設定
昔はFedoraやEPELからパッケージを持ってきて云々とかしていたのですが、最近はそのようなことも必要なくなり、おおよその Linux ディストーションに添付されるようになりました。 インストールは yum や apt-get で行えばよいかと思います。
sudo yum install munin-node
sudo apt-get install munin-node
設定は
/etc/munin/node.d
ディレクトリがある場合には、この中に node.conf
などのファイルを作って、そこに設定を書いていくと良いでしょう。 無い場合には /etc/munin/munin-node.conf
に書いていきましょう。おおよそ必要な設定項目は下記のようになります。
# Listen するインターフェースを指定
host *
# munin-server のアドレスを指定: 正規表現
allow ^127.0.0.1$
# CIDR での指定
cidr_allow 192.0.2.0/24
cidr_deny 192.0.2.42/32
設定が終わったら、localhost や munin server から telnet などで接続できるか確認します。
telnet localhost 4949
ここで、下記のようなコマンドを送ってみましょう
list
: 監視できるプラグインの一覧ですfetch df
: fetch でプラグインごとの値が取得できます。 この場合は df (disk_free) の値を取得しています。quit
: 接続を終了します。
munin serverの設定
munin server は munin-node エージェントから各マシンの値を取得して、これを記録しHTMLやPNGのグラフとして可視化します。 また各プラグインの閾値などを元に Critical, Warning の表示をすることも出来ます。
設定ファイルは
/etc/munin/munin-conf.d
(Debian) や /etc/munin/conf.d
(CentOS, Amazon Linux) などに配置するとよいでしょう。まずは監視対象のホストの一覧を書きましょう。例えば
/etc/munin/munin-conf.d
に hosts.conf
といったファイルを作って、内容は下記のようにします。[host.masaru.org]
address 10.0.0.1
use_node_name yes
監視対象のホストの分だけ、上記のような内容を書いていきます。
Web Server 経由で見られるように設定
Munin が作成するHTMLを Web Server 経由で見られるように、下記内容を適切なVirtualHost内に記述します。
Alias /munin /var/cache/munin/www
<Directory /var/cache/munin/www>
#Order allow,deny
#Allow from localhost 127.0.0.0/8 ::1
Options None
AuthUserFile /etc/munin/munin-htpasswd
AuthName "Munin"
AuthType Basic
require valid-user
#<IfModule mod_expires.c>
# ExpiresActive On
# ExpiresDefault M310
#</IfModule>
</Directory>
Debian の場合は
/var/cache/munin/www
の中に munin-html や munin-graph などが作り出す HTML, PNG を保存するようになっているので、このディレクトリへの Alias を設定しておきます。 CentOS などでは /var/www/html/munin
に作っていました。あとは apache をリスタートするなりして、表示されるか確認してください。
うまくいかない場合は、これらのログファイルを参考にヒントを探してください。
/var/log/apache2/error.log
/var/log/munin/munin-update.log
- munin-node の
/var/log/munin/munin-node.log
/var/log/munin/munin-html.log
/var/log/munin/munin-grapth.log
Tips
Munin の環境を作っていくと、問題に遭遇したり、さらに詳しい監視を行いたくなるでしょう。
それらの対処法をまとめておきます。
- 監視対象が多くてグラフのPNGファイル作成に時間がかかる
- munin-node の監視を増やす
- Apache HTTPD 特有の監視
- MySQL の監視
監視対象が多くなり、グラフのPNGファイル作成に時間が掛かる
標準的なMuninパッケージの設定の場合、Munin Server は5分に1回 cron で munin-cron が実行され、 munin-node から値を取得記録し、munin-html, munin-grapth を実行するようになっています。 監視対象のホストはプラグイン数が増えると、特に munin-grapth の実行回数が増えて、1回あたりの処理時間が長くなってしまいます。
対策としては、下記の2つが有力です。
- munin-node のプラグインを減らす
- グラフ作成を CGI や FastCGIに切替える
munin-node のプラグインを減らすのは手っ取り早いです。
/etc/munin/plugins
ディレクトリの中に munin-node が利用するプラグインがシンボリックリンクで登録されています。 不要でしたら削除してから sudo service munin-node restart
してください。もう一つの方法は、グラフのPNG作成をCGIやFastCGIで実行する方法です。 MuninのグラフPNGは常に全てが見られるわけではないので、Webブラウザで見に来た時に On-demand で作成する方法です。 若干手間がかかりますが、結構現実的な対応法です。
まずは
/etc/munin/munin-conf.d/cgi.conf
などのファイルを作って、下記の内容を書きます。# グラフ作成戦略を cgi にする
graph_strategy cgi
# 同時に動かすグラフ作成のスレッド数
munin_cgi_graph_jobs 6
# グラフを作成するCGIへのパス。HTML中に埋め込まれます。
cgiurl_graph /cgi-bin/munin-cgi-graph
この設定を行った後の munin-cron は、HTML作成時にグラフPNGのファイルを作成せず、上記の CGI パスをHTML中に埋め込みます。
そして、一部ディレクトリをCGIから書き出す具合になるので、Debianの場合は下記コマンドでファイル・ディレクトリのグループIDを変更し、 group writable にします。
sudo chgrp -R www-data /var/cache/munin/www /var/log/munin
sudo chmod g+w /var/cache/munin/www /var/log/munin
また、log rotate 時の所有者の設定も必要なので、
/etc/cron.d/munin
に下記のような設定も行います。/var/log/munin/munin-graph.log {
daily
missingok
rotate 7
compress
notifempty
create 660 munin www-data
}
あとは、munin-cgi-graph が動作するように、 Apache の場合でしたら目的の VirtualHost 内に cgi-bin の設定をします。
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
あとは apache をリスタートするなりして、確認してください。 うまくいかないようでしたら、これらのログファイルを参考にヒントを探してください。
/var/log/apache2/error.log
/var/log/munin/munin-grapth.log
Apache HTTPD 特有の監視
Apache HTTPD には mod_status という機能があり、実行しているプロセス数や転送量などを取得できるようになっています。 これの結果を munin から取得できます。
まずは mod_status の設定をします。 Debian でしたら下記コマンドで mod_status を活性化できます。
sudo a2enmod status
あとは
sudo service apache2 restart
などを実行して、設定を反映してください。 そして、curl http://localhost/server-status
などを実行して、localhost の Apache から status が取得できるか確認します。munin-node へのプラグインの登録は、
/etc/munin/plugins/
にシンボリックリンクを作って munin-node をリスタートするだけです。
cd /etc/munin/plugins/
for i in /usr/share/munin/plugins/apache_* ; do
sudo ln -vs $i
done
sudo service munin-node restart
MySQL の状態監視
Munin には MySQL Server に接続して、各種統計情報を収集するプラグインがあります。 これの設定方法を Debian/Ubuntu を例に紹介します。
PostgreSQLも同様にDB接続や認証周りを設定すれば利用できるはずです。
まずは MySQL Server に接続するためのID, Password の設定を拾ってきます。 Debianの場合、
/etc/mysql/debian.cnf
に下記のような設定があるかと思います。 Debパッケージをインストールするときに、各マシンの MySQLサーバに管理用のID, Passwordを設定しているようです。user = debian-sys-maint
password = XXXXXXXXXXXXXXXX
これの password の内容をコピーしておき、
/etc/munin/plugin-conf.d/munin
の mysqlセクションに記述します。 記述後の内容は下記のようになります。[mysql*]
user root
env.mysqlopts --defaults-file=/etc/mysql/debian.cnf
env.mysqluser debian-sys-maint
env.mysqlpassword XXXXXXXXXXXXXXXX
env.mysqlconnection DBI:mysql:mysql;mysql_read_default_file=/etc/mysql/debian.cnf
そして、
/usr/share/munin/plugins/mysql_
の suggest 機能を使うと、監視できるか確認が出来ます。 私の手元の MySQLサーバで実行したら、下記のようになりました。$ sudo /usr/share/munin/plugins/mysql_ suggest
bin_relay_log
commands
connections
files_tables
innodb_bpool
innodb_bpool_act
innodb_insert_buf
innodb_io
innodb_io_pend
innodb_log
innodb_rows
innodb_semaphores
innodb_tnx
myisam_indexes
network_traffic
qcache
qcache_mem
replication
select_types
slow
sorts
table_locks
tmp_tables
これらの監視が出来るということですので、root ユーザで下記のようなコマンドを使って一気にプラグイン登録します。
for i in $(/usr/share/munin/plugins/mysql_ suggest) ; do
ln -vs /usr/share/munin/plugins/mysql_ /etc/munin/plugins/mysql_$i
done
終わったら、
sudo service munin-node restart
を実行してプラグイン一覧の更新をしてください。
コメント
コメントを投稿