Help us understand the problem. What is going on with this article?

サーバー監視ツール Munin

More than 1 year has passed since last update.

Munin

Munin は Perl で書かれたリソース監視ツール。RRDtool でグラフを作成している。

バージョン情報

安定版は 2017-10-21 リリースの 2.0.34 で、EPEL リポジトリーで提供されている。
最新評価版は 2017-01-21 リリースの 2.99.3 になる。
CentOS では EPEL リポジトリで 2.0.33 がインストール可能。

由来

munin.png

Munin はムニンと発音し、北欧神話の神オーディンに付き添う一対のワタリガラスの「記憶」を意味する片方。二羽は夜明けに外に出され、情報を集めてから夜に帰ってきてオーディンの耳にニュースをささやくという。1 リソース監視ツールとしてはなかなかセンスの良いネーミング。
というわけで、ロゴのイメージはカラスだったのである。

Munin node (client)

インストール

yum install epel-release
yum install munin-node

EPEL リポジトリーで提供されるパッケージは最新安定版の 2.0.25 になる。

プラグイン

確認

munin-node-configure --suggest
出力例
Plugin                     | Used | Suggestions
------                     | ---- | -----------
acpi                       | no   | no [cannot read []
amavis                     | no   | no
apache_accesses            | no   | no [apache server-status not found. check if mod_status is enabled]
apache_processes           | no   | no [apache server-status not found. check if mod_status is enabled]
apache_volume              | no   | no [apache server-status not found. check if mod_status is enabled]
apc_envunit_               | no   | no [no units to monitor]
bonding_err_               | no   | no [No /proc/net/bonding]
courier_mta_mailqueue      | no   | no [spooldir not found]
courier_mta_mailstats      | no   | no [could not find executable]
courier_mta_mailvolume     | no   | no [could not find executable]
cps_                       | no   | no
cpu                        | yes  | yes
cpuspeed                   | no   | no [missing /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state]
cupsys_pages               | no   | no [could not find logdir]
df                         | yes  | yes
df_inode                   | yes  | yes
diskstats                  | yes  | yes
entropy                    | yes  | yes
exim_mailqueue             | no   | no [no exiqgrep]
exim_mailstats             | no   | no ['/usr/sbin/exim -bP log_file_path' returned an error]
fail2ban                   | no   | no [/usr/bin/fail2ban-client not found]
forks                      | yes  | yes
fw_conntrack               | no   | no
fw_forwarded_local         | no   | no
fw_packets                 | yes  | yes
hddtemp_smartctl           | no   | no
http_loadtime              | no   | no
if_                        | yes  | yes (enp0s3 enp0s8)
if_err_                    | yes  | yes (enp0s3 enp0s8)
interrupts                 | yes  | yes
ip_                        | no   | no [could not run iptables as user nobody]
ipmi_                      | no   | no [missing ipmitool command]
irqstats                   | yes  | yes
load                       | yes  | yes
lpstat                     | no   | no [lpstat not found]
memory                     | yes  | yes
munin_stats                | no   | yes
mysql_                     | no   | no
netstat                    | no   | no [netstat program not found]
nfs4_client                | no   | no [no /proc/net/rpc/nfs]
nfs_client                 | no   | no
nfsd                       | no   | no [no /proc/net/rpc/nfsd]
nfsd4                      | no   | no [no /proc/net/rpc/nfsd]
nginx_request              | no   | no [no nginx status on http://localhost/nginx_status]
nginx_status               | no   | no [no nginx status on http://localhost/nginx_status]
ntp_kernel_err             | no   | no
ntp_kernel_pll_freq        | no   | no
ntp_kernel_pll_off         | no   | no
ntp_offset                 | no   | no [no ntpq program]
ntp_states                 | no   | no [ntpq not found]
nvidia_                    | no   | no [no nvclock executable at /usr/bin/nvclock, please configure]
open_files                 | yes  | yes
open_inodes                | yes  | yes
pgbouncer_connections      | no   | no
pgbouncer_requests         | no   | no
postfix_mailqueue          | yes  | yes
postfix_mailvolume         | yes  | yes
postgres_autovacuum        | no   | no
postgres_bgwriter          | no   | no
postgres_cache_            | no   | no
postgres_checkpoints       | no   | no
postgres_connections_      | no   | no
postgres_connections_db    | no   | no
postgres_locks_            | no   | no
postgres_oldest_prepared_xact_ | no   | no
postgres_prepared_xacts_   | no   | no
postgres_querylength_      | no   | no
postgres_scans_            | no   | no
postgres_size_             | no   | no
postgres_transactions_     | no   | no
postgres_tuples_           | no   | no
postgres_users             | no   | no
postgres_xlog              | no   | no
proc                       | no   | no
proc_pri                   | yes  | yes
processes                  | yes  | yes
ps_                        | no   | no
qmailqstat                 | no   | no
selinux_avcstat            | no   | no [missing /selinux/avc/cache_stats file]
sendmail_mailqueue         | no   | no
sendmail_mailstats         | no   | no [no mailstats command]
sendmail_mailtraffic       | no   | no [no mailstats command]
slapd_                     | no   | no [Net::LDAP not found]
slapd_bdb_cache_           | no   | no [Can't execute db_stat file '/usr/bin/db4.6_stat']
slony_lag_                 | no   | no
smart_                     | no   | no [smartmontools not found]
snort_alerts               | no   | no [/var/snort/snort.stats not readable]
snort_bytes_pkt            | no   | no [/var/snort/snort.stats not readable]
snort_drop_rate            | no   | no [/var/snort/snort.stats not readable]
snort_pattern_match        | no   | no [/var/snort/snort.stats not readable]
snort_pkts                 | no   | no [/var/snort/snort.stats not readable]
snort_traffic              | no   | no [/var/snort/snort.stats not readable]
squeezebox_                | no   | no [no connection on localhost port 9090]
squid_cache                | no   | no [could not connect: Connection refused]
squid_objectsize           | no   | no [could not connect: Connection refused]
squid_requests             | no   | no [could not connect: Connection refused]
squid_traffic              | no   | no [could not connect: Connection refused]
swap                       | yes  | yes
threads                    | yes  | yes
uptime                     | yes  | yes
users                      | yes  | yes
varnish_                   | no   | no [varnishstat could not be found]
vmstat                     | yes  | yes
vserver_cpu_               | no   | no [/proc/virtual/info not found]
vserver_loadavg            | no   | no [/proc/virtual/info not found]
vserver_resources          | no   | no [/proc/virtual/info not found]
yum                        | no   | no [Could not find statefile.  Please read 'munindoc yum']

Apache の Status を有効化

cat << _EOF_ > /etc/httpd/conf.d/server-status.conf
<Location "/server-status">
    SetHandler server-status
    Require host localhost
</Location>
_EOF_
systemctl restart httpd

Apache の監視には server-status の有効化が必要。
ExtendedStatus は Apache 2.3.6 以降 mod_status モジュールがロードされた時点でデフォルトで On に切り替わる。

追加

munin-node-configure -shell | sh

自動起動設定と起動

systemctl enable munin-node
systemctl start munin-node

Munin master (server)

インストール

yum install httpd munin

設定調整

chown apache:munin /var/log/munin

後から Apache をインストールした場合に拡大グラフが参照できなくなるので、ログディレクトリの所有者を変更する。

パフォーマンス改善

cron の処理分割

sed -i '/munin-cron/s/^/#/' /etc/cron.d/munin
cat << _EOF_ >> /etc/cron.d/munin
*/5 * * * *     munin test -x /usr/bin/munin-cron && /usr/share/munin/munin-update
5 */1 * * *     munin test -x /usr/bin/munin-cron && /usr/share/munin/munin-graph --cron
10 07 * * *     munin test -x /usr/bin/munin-cron && /usr/share/munin/munin-html
_EOF_

グラフの再生成を5分おきから1時間おきに、HTML の再生成を5分おきから1日おきに変更することでパフォーマンスを改善させる。
最新グラフが見たい場合はグラフをクリックして拡大グラフを確認すればよい。

不要なプラグインの除去

unlink /etc/munin/plugins/entropy
unlink /etc/munin/plugins/interrupts
unlink /etc/munin/plugins/irqstats

あまり見ないグラフは除外した方が負荷が軽くなる。

自動起動設定と起動

systemctl enable httpd
systemctl start httpd

BASIC 認証

htpasswd /etc/munin/munin-htpasswd <username>

デフォルト画面例

munin_screen.png

テンプレート

Munstrap

curl -L https://github.com/jonnymccullagh/munstrap/archive/master.tar.gz -o munstrap.tar.gz
mkdir /etc/munin/munstrap
tar vzxf munstrap.tar.gz --strip=1 -C /etc/munin/munstrap
sed -i /etc/munin/munin.conf -e '/^tmpldir/s/^/#/' -e '/^staticdir/s/^/#/'
sed -i '/#tmpldir/a tmpldir /etc/munin/munstrap/templates' /etc/munin/munin.conf
sed -i '/#staticdir/a staticdir /etc/munin/munstrap/static' /etc/munin/munin.conf

munin_screen_munstrap.png

カテゴリーがタブ化されたりして若干だがすっきりする。

munin_dynamic_template

curl -L https://github.com/DaveMDS/munin_dynamic_template/archive/master.tar.gz -o munin_dynamic_template.tar.gz
mkdir /etc/munin/munin_dynamic_template
tar vzxf munin_dynamic_template.tar.gz --strip=1 --exclude="munin1" -C /etc/munin/munin_dynamic_template
sed -i /etc/munin/munin.conf -e '/^tmpldir/s/^/#/' -e '/^staticdir/s/^/#/'
sed -i '/#tmpldir/a tmpldir /etc/munin/munin_dynamic_template/munin2' /etc/munin/munin.conf
sed -i '/#staticdir/a staticdir /etc/munin/munin_dynamic_template/munin2/static' /etc/munin/munin.conf

munin_screen_dynamic_1.png

munin_screen_dynamic_2.png

modern-munin

curl -L https://github.com/sjoudry/modern-munin/archive/master.tar.gz -o modern-munin.tar.gz
mkdir /etc/munin/modern-munin
tar vzxf modern-munin.tar.gz --strip=1 -C /etc/munin/modern-munin
sed -i /etc/munin/munin.conf -e '/^tmpldir/s/^/#/' -e '/^staticdir/s/^/#/'
sed -i '/#tmpldir/a tmpldir /etc/munin/modern-munin' /etc/munin/munin.conf
sed -i '/#staticdir/a staticdir /etc/munin/modern-munin/static' /etc/munin/munin.conf

munin-b3

curl -L https://code.not-your-server.de/munin-b3.git/tags/0.3.2.tar.gz -o munin-b3.tar.gz
mkdir /etc/munin/munin-b3
tar vzxf munin-b3.tar.gz --strip=1 -C /etc/munin/munin-b3
sed -i /etc/munin/munin.conf -e '/^tmpldir/s/^/#/' -e '/^staticdir/s/^/#/'
sed -i '/#tmpldir/a tmpldir /etc/munin/munin-b3/templates' /etc/munin/munin.conf
sed -i '/#staticdir/a staticdir /etc/munin/munin-b3/static' /etc/munin/munin.conf

munin_screen_b3_1.png

munin_screen_b3_2.png

Munin JQuery Template

curl -L https://github.com/mallocator/Munin-JQuery-Template/archive/master.tar.gz -o munin-jquery-template.tar.gz
mkdir /etc/munin/munin-jquery-template
tar vzxf munin-jquery-template.tar.gz --strip=1 -C /etc/munin/munin-jquery-template
sed -i /etc/munin/munin.conf -e '/^tmpldir/s/^/#/' -e '/^staticdir/s/^/#/'
sed -i '/#tmpldir/a tmpldir /etc/munin/munin-jquery-template/templates' /etc/munin/munin.conf
ln -s /etc/munin/munin-jquery-template/templates/assets /var/www/html/munin/
ln -s /etc/munin/munin-jquery-template/templates/style.css /var/www/html/munin/

munin_screen_jquery_1.png
ドラッグ&ドロップができたり試みとしては面白いが、設定と使い勝手がやや残念。
拡大グラフはリンクされていない模様。

モニタリング関連記事

bezeklik
サーバー管理、CMS構築のお仕事募集中。 CentOS / Apache / Nginx / PHP / MySQL / Docker / CMS (eZ Platform, eZ Publish, WordPress, Drupal) / Redmine
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした