読者です 読者をやめる 読者になる 読者になる

らくがきちょう

なんとなく

Ubuntu 16.04.1 に Munin をインストールする

Linux

作業端末を Ubuntu 16.04.1 で作り直す機会があったので、監視ツールである Munin をインストールしてみました。一台で「監視サーバ」と「監視対象」を兼務させました。Munin の Web 画面は BASIC 認証で保護しています。

インストール

標準リポジトリから簡単にインストール出来ます。

sudo apt-get -y install munin munin-node

設定ファイルの種類

主な設定ファイルは以下の 3 種類です。

サーバ側の設定ファイル

対象 種類 パス
サーバ側 監視サーバの設定ファイル /etc/munin/munin.conf
サーバ側 Web サーバの設定ファイル /etc/apache2/conf-available/munin.conf

クライアント側の設定ファイル

対象 種類 パス
クライアント側 監視対象としての設定ファイル /etc/munin/munin-node.conf

設定

/etc/munin/munin.conf

デフォルト

デフォルトでは以下のようになっていました。

$ grep -v -e '^\s*#' -e '^\s*$' /etc/munin/munin.conf
includedir /etc/munin/munin-conf.d
[localhost.localdomain]
    address 127.0.0.1
    use_node_name yes

修正後

これを以下のように修正します。

includedir /etc/munin/munin-conf.d
[HOSTNAME.DOMAIN]
    address 127.0.0.1
    use_node_name yes

/etc/apache2/conf-available/munin.conf

このファイルは /etc/munin/apache24.conf へのリンクになっています。

$ ls -l /etc/apache2/conf-available/munin.conf
lrwxrwxrwx 1 root root 25 Sep 25 22:55 /etc/apache2/conf-available/munin.conf -> ../../munin/apache24.conf

デフォルト

デフォルトでは以下のようになっていました。

Alias /munin /var/cache/munin/www
<Directory /var/cache/munin/www>
        Require local
        Options None
</Directory>

ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph
<Location /munin-cgi/munin-cgi-graph>
        Require local
        <IfModule mod_fcgid.c>
            SetHandler fcgid-script
        </IfModule>
        <IfModule !mod_fcgid.c>
            SetHandler cgi-script
        </IfModule>
</Location>

修正後

デフォルトでは認証等が無く、無差別に Munin の画面が公開されてしまいます。そこで、今回は BASIC 認証を設定しました。

$ cat /etc/apache2/conf-available/munin.conf
Alias /munin /var/cache/munin/www
<Directory /var/cache/munin/www>
        AuthType Basic
        AuthName "Munin"
        AuthUserFile /etc/munin/munin-htpasswd
        Require valid-user
</Directory>

ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph
<Location /munin-cgi/munin-cgi-graph>
        Require all granted
        <IfModule mod_fcgid.c>
            SetHandler fcgid-script
        </IfModule>
        <IfModule !mod_fcgid.c>
            SetHandler cgi-script
        </IfModule>
</Location>

BASIC 認証のパスワードファイルとして /etc/munin/munin-htpasswd を指定しています。

htpasswd -c /etc/munin/munin-htpasswd [USERNAME]

/etc/munin/munin-node.conf

デフォルト

デフォルトでは以下のようになっていました。

$ grep -v -e '^\s*#' -e '^\s*$' /etc/munin/munin-node.conf
log_level 4
log_file /var/log/munin/munin-node.log
pid_file /var/run/munin/munin-node.pid
background 1
setsid 1
user root
group root
ignore_file [\#~]$
ignore_file DEADJOE$
ignore_file \.bak$
ignore_file %$
ignore_file \.dpkg-(tmp|new|old|dist)$
ignore_file \.rpm(save|new)$
ignore_file \.pod$
allow ^127\.0\.0\.1$
allow ^::1$
host *
port 4949

修正後

最下行に FQDN を追記します。

log_level 4
log_file /var/log/munin/munin-node.log
pid_file /var/run/munin/munin-node.pid
background 1
setsid 1
user root
group root
ignore_file [\#~]$
ignore_file DEADJOE$
ignore_file \.bak$
ignore_file %$
ignore_file \.dpkg-(tmp|new|old|dist)$
ignore_file \.rpm(save|new)$
ignore_file \.pod$
allow ^127\.0\.0\.1$
allow ^::1$
host *
port 4949
host_name [FQDN]

設定後の状態

Munin-node

systemctl status で munin-node が起動していることが確認出来ます。

$ sudo systemctl status munin-node.service
* munin-node.service - Munin Node
   Loaded: loaded (/lib/systemd/system/munin-node.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2016-09-25 22:55:56 JST; 11min ago
     Docs: man:munin-node(1)
           http://munin.readthedocs.org/en/stable-2.0/reference/munin-node.html
 Main PID: 3750 (munin-node)
   CGroup: /system.slice/munin-node.service
           `-3750 /usr/bin/perl -wT /usr/sbin/munin-node

Sep 25 22:55:56 sig9.org systemd[1]: Starting Munin Node...
Sep 25 22:55:56 sig9.org systemd[1]: Started Munin Node.

詳しいメカニズムは追いかけていませんが、cron にも登録されているようです。

$ cat /etc/cron.d/munin-node
#
# cron-jobs for munin-node
#

MAILTO=root

# If the APT plugin is enabled, update packages databases approx. once
# an hour (12 invokations an hour, 1 in 12 chance that the update will
# happen), but ensure that there will never be more than two hour (7200
# seconds) interval between updates..
*/5 * * * * root if [ -x /etc/munin/plugins/apt_all ]; then /etc/munin/plugins/apt_all update 7200 12 >/dev/null; elif [ -x /etc/munin/plugins/apt ]; then /etc/munin/plugins/apt update 7200 12 >/dev/null; fi

Munin

Munin 自体は masked 状態になっています(起動していません)。

$ sudo systemctl status munin.service
* munin.service
   Loaded: masked (/dev/null; bad)
   Active: inactive (dead)

cron には登録されていました。

$ cat /etc/cron.d/munin
#
# cron-jobs for munin
#

MAILTO=root

*/5 * * * *     munin if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi
14 10 * * *     munin if [ -x /usr/share/munin/munin-limits ]; then /usr/share/munin/munin-limits --force --contact nagios --contact old-nagios; fi

Apache の再起動

最後に Apache を再起動して設定変更を反映します。

systemctl restart apache2.service

「http:// 〜 /munin/」にアクセスして Munin の画面が表示されれば OK です。