Munin Nodeの設定 (監視ノード追加と監視項目追加操作)

スポンサーリンク

MuninはAgent型のパフォーマンス収集ツールです。Muninに監視ノードを追加したり監視項目を追加したりする方法を説明します。2010年頃に流行ったツールという事もあり、最近のミドルウェア監視はデフォルトでは対応しておらず、プラグイン探しの一手間が必要な印象があります。OSやネットワークなどの比較的低レイヤをコストをかけずに監視する目的で使用するのが良いでしょう。

Muninは近年の状況には追いついていない印象があります。例えばCentOS 7.Xはntpdからchronydへと移行していますが、Muninはchronydに対応していません。昔に比べればプラグイン開発もそれほど盛んではないようなので、本気で使うならば「不足プラグインは全部自分で書く」くらいの覚悟が必要かと思います。

監視ノード追加

Munin Node インストール

MuninはPerl製のツールです。CentOS 8.0からはperlライブラリ群が標準のリポジトリから消えてしまっています。Muninが使用するperl(DateTime),perl(Params::Validate),perl(File::Copy::Recursive),perl(Taint::Runtime)はPower Toolsなどのリポジトリに格納されています。

CentOS8.0以上を使用している方は、Munin Masterのインストール前にPower Toolsのリポジトリを登録します。

dnf config-manager --set-enabled PowerTools
[root@centos82 ~]# dnf repolist
repo id            repo の名前
AppStream          CentOS-8 - AppStream
BaseOS             CentOS-8 - Base
PowerTools         CentOS-8 - PowerTools
epel               Extra Packages for Enterprise Linux 8 - x86_64
epel-modular       Extra Packages for Enterprise Linux Modular 8 - x86_64
extras             CentOS-8 - Extras

yumコマンドまたはdnfコマンドでMunin Nodeをインストールします。

dnf install epel-release
dnf install munin-node

Munin Nodeを起動します。

systemctl enable munin-node.service --now

Munin Nodeはtcp4949でListenします。動作確認の意味を込めて、Muninに対して簡単なコマンドを発行してみましょう。listコマンドは監視可能項目の一覧で、quitコマンドで離脱します。

[root@centos81 ~]# telnet localhost 4949
Trying ::1...
Connected to localhost.
Escape character is '^]'.
# munin node at centos81.gokatei.go
list
cpu df df_inode entropy forks fw_conntrack fw_forwarded_local fw_packets if_ens33 interrupts irqstats load memory open_files open_inodes proc_pri processes swap threads uptime users vmstat
quit
Connection closed by foreign host.

Munin Node 接続許可設定

Munin Nodeはデフォルトでローカルホストからの接続しか受け付けていません。Munin Masterからの接続が可能になるように設定しましょう。設定方法はallow句とcidr_allow句の2種類があります。

allow句の場合は接続を許可するホストを正規表現で指定します。正規表現ですので、エスケープ処理をしない場合は「.」はオクテットの区切りではなく任意の1文字の意味です。

# vi /etc/munin/munin-node.conf

allow ^127\.0\.0\.1$
allow ^192\.168\.63\.82$

cidr_allowで指定する場合は以下のようになります。

# vi /etc/munin/munin-node.conf

cidr_allow 192.168.63.0/24

設定を反映させるために再起動します。

systemctl restart munin-node.service

Munin Masterからtcp4949で接続可能である事を確認します。

[root@centos82 ~]# telnet 192.168.63.81 4949
Trying 192.168.63.81...
Connected to 192.168.63.81.
Escape character is '^]'.
# munin node at centos81.gokatei.go
list
cpu df df_inode entropy forks fw_conntrack fw_forwarded_local fw_packets if_ens33 interrupts irqstats load memory open_files open_inodes proc_pri processes swap threads uptime users vmstat
quit

Munin Node 監視ノード追加

監視対象となるノードは/etc/munin/munin.confまたは/etc/munin/conf.d配下に定義します。デフォルトでは以下のようなファイルが作成されており、localhostがデフォルトの監視対象になっています。

# cat /etc/munin/conf.d/local.conf 
# Example host tree with localhost node. Configure your nodes here.

[localhost]
    address 127.0.0.1
    use_node_name yes

監視対象ノードを増やす設定例は以下の通りです。

cat << EOF > /etc/munin/conf.d/centos.conf 
[centos80]
    address 192.168.63.80
    use_node_name yes

[centos81]
    address 192.168.63.81
    use_node_name yes
EOF

監視台数が増えてきたらカテゴリ分けし、見やすくする事もできます。[category:hostname]という書式でカテゴリ分けができます。設定例は以下の通りです。

cat << EOF > /etc/munin/conf.d/lamp.conf 
[http;apache001]
    address 192.168.0.1
    use_node_name yes
 
[http;apache002]
    address 192.168.0.2
    use_node_name yes
 
[http;nginx001]
    address 192.168.1.1
    use_node_name yes
 
[db;oracle001]
    address 192.168.10.1
    use_node_name yes
 
[db;oracle002]
    address 192.168.10.2
    use_node_name yes
 
[db;mysql001]
    address 192.168.11.1
    use_node_name yes

/etc/munin/conf.d/配下を編集し、しばらく待つと監視対象ノードが増えています。以下URLをブラウザに入力し、監視対象ノードが増えている事を確認してください。

 http://<ip address>/munin/

監視対象ホストの追加

監視項目の追加

MuninはOSの設定を自動的に読み取って、自動的に監視項目を追加する強力な仕組みがあります。もちろん、この自動の仕組みがうまく働かず手作業で修正をせざるを得ない事もありますが、ある程度は自動でやってくれるのは非常にありがたい事です。

監視項目の自動判定

munin-node-configureに–suggestオプションを渡す事によって、現在有効になっている監視項目と有効に出来ない理由を確認する事ができます。「Used」列が現在有効になっているかどうかで、「Suggestions」列が有効に出来ない理由です。例えば「apache_processes」を見ると、「Port 80: Can’t connect to 127.0.0.1:80 (Connection refused)」と有効に出来ない理由が記載されています。

[root@centos80 ~]# munin-node-configure --suggest
Plugin                     | Used | Suggestions                            
------                     | ---- | -----------                            
acpi                       | no   | no [[[ plugin has errors, see below ]]]
amavis                     | no   | no [command logtail or file /var/log/mail/mail.info not found]
apache_accesses            | no   | no [Port 80: Can't connect to 127.0.0.1:80 (Connection refused)]
apache_processes           | no   | no [Port 80: Can't connect to 127.0.0.1:80 (Connection refused)]
apache_volume              | no   | no [Port 80: Can't connect to 127.0.0.1:80 (Connection refused)]
apc_envunit_               | no   | no [no units to monitor]               
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 [ipvsadm not found] 

  <omitted>

監視項目の有効化方法

Muninの監視項目はプラガブルな構成になっています。デフォルトの状態では監視できないソフトウェアであってもプラグインを開発すれば監視項目に加える事ができます。プラグイン開発のハードルは非常に低く、シェルスクリプトの簡単な操作ができる程度のスキルがあれば十分に開発可能です。

さて、Munin Pluginの有効/無効を設定できるようになるためには、まずはMunin Pluginのディレクトリ構成を理解する必要があります。Munin Pluginは、/usr/share/munin/plugins/に配置されています。apache, MySQLなどあらゆるPluginが配置されていますが、これら全てが有効になっているわけではありません。

[root@localhost~]# ls -l /usr/share/munin/plugins/
合計 1556
-rwxr-xr-x 1 root root  1987  7月  6 17:39 acpi
-rwxr-xr-x 1 root root  3248  7月  6 17:39 amavis
-rwxr-xr-x 1 root root  5185  7月  6 17:39 apache_accesses
-rwxr-xr-x 1 root root  6568  7月  6 17:39 apache_processes
-rwxr-xr-x 1 root root  5130  7月  6 17:39 apache_volume
-rwxr-xr-x 1 root root  2324  7月  6 17:39 apc_envunit_
-rwxr-xr-x 1 root root  3787  7月  6 17:39 apc_nis
-rwxr-xr-x 1 root root  4728  7月  6 17:39 apt
-rwxr-xr-x 1 root root  8688  7月  6 17:39 apt_all

 <omitted>

有効になっているMunin Pluginは/etc/munin/plugins/に格納されています。このディレクトリに、Pluginに対するシンボリックリンクを配置し、シンボリックリンクが存在するPluginのみが有効になる仕組みです。

[root@centos80 ~]# ls -l /etc/munin/plugins/
合計 0
lrwxrwxrwx 1 root root 28  9月  6 20:52 cpu -> /usr/share/munin/plugins/cpu
lrwxrwxrwx 1 root root 27  9月  6 20:52 df -> /usr/share/munin/plugins/df
lrwxrwxrwx 1 root root 33  9月  6 20:52 df_inode -> /usr/share/munin/plugins/df_inode
lrwxrwxrwx 1 root root 34  9月  6 20:52 diskstats -> /usr/share/munin/plugins/diskstats
lrwxrwxrwx 1 root root 32  9月  6 20:52 entropy -> /usr/share/munin/plugins/entropy
lrwxrwxrwx 1 root root 30  9月  6 20:52 forks -> /usr/share/munin/plugins/forks
lrwxrwxrwx 1 root root 37  9月  6 20:52 fw_conntrack -> /usr/share/munin/plugins/fw_conntrack
lrwxrwxrwx 1 root root 43  9月  6 20:52 fw_forwarded_local -> /usr/share/munin/plugins/fw_forwarded_local
lrwxrwxrwx 1 root root 35  9月  6 20:52 fw_packets -> /usr/share/munin/plugins/fw_packets

  <omitted>

munin-node-configure –shellコマンドを実行すると、現在有効にできるプラグインに対するシムリンク作成コマンドが標準出力されます。

[root@centos80 ~]# munin-node-configure --shell
ln -s '/usr/share/munin/plugins/mysql_' '/etc/munin/plugins/mysql_binlog_groupcommit'
ln -s '/usr/share/munin/plugins/mysql_' '/etc/munin/plugins/mysql_commands'
ln -s '/usr/share/munin/plugins/mysql_' '/etc/munin/plugins/mysql_connections'
ln -s '/usr/share/munin/plugins/mysql_' '/etc/munin/plugins/mysql_files'
ln -s '/usr/share/munin/plugins/mysql_' '/etc/munin/plugins/mysql_handler_read'
ln -s '/usr/share/munin/plugins/mysql_' '/etc/munin/plugins/mysql_handler_tmp'
ln -s '/usr/share/munin/plugins/mysql_' '/etc/munin/plugins/mysql_handler_transaction'

  <omitted>

この標準出力されたシムリンク作成コマンドをパイプで/bin/shなどに渡すと、一括で自動的にプラグイン(監視項目)を有効にする事ができます。

[root@centos80 ~]# munin-node-configure --shell | sh
# The following plugins caused errors:
# acpi:
#   Junk printed to stderr
# postgres_autovacuum:
#   Non-zero exit during autoconf (255)
# postgres_bgwriter:
#   Non-zero exit during autoconf (255)

 <omitted>

プラグイン有効化例1 MySQL

プラグインを有効化する操作例としてMySQL監視を紹介します。

まずは監視対象となるノードにMariaDB(MySQL)をインストールし、それを起動します。

dnf install mariadb-server
systemctl enable mariadb.service --now

MySQLのSuggestions列がyesになっている事を確認します。

[root@centos80 ~]# munin-node-configure --suggest
Plugin                     | Used | Suggestions                            
------                     | ---- | -----------                            
acpi                       | no   | no [[[ plugin has errors, see below ]]]
amavis                     | no   | no [command logtail or file /var/log/mail/mail.info not found]

  <omitted>

mysql_                     | no  | yes (binlog_groupcommit commands connections files handler_read handler_tmp handler_transaction handler_write icp innodb_bpool innodb_bpool_act innodb_history_list_length innodb_insert_buf innodb_io innodb_io_pend innodb_log innodb_queries innodb_read_views innodb_rows innodb_semaphores innodb_srv_master_thread innodb_tnx max_mem mrr myisam_indexes network_traffic performance qcache qcache_mem rows select_types slow sorts table_definitions table_locks tables tmp_tables)

  <omitted>

プラグイン(監視項目)を有効にして、再起動で設定を反映させます。

munin-node-configure --shell | sh
systemctl restart munin-node.service

しばらく待った(15分程度)後、ブラウザにてMySQLの監視が始まった事を確認します。まずはトップページに「db」という欄がある事を確認します。「db」を押下すると、db監視の欄に遷移します。

MuninによるMySQL(MariaDB)監視01

DBの監視が始まっている事を確認します。

MuninによるMySQL(MariaDB)監視02

プラグイン有効化例2 nginx

プラグインを有効化する操作例としてnginx監視を紹介します。

まずは監視対象となるノードにningxをインストールし、それを起動します。

dnf install nginx
systemctl start nginx.service

nginxのSuggestions列は未だnoのままです。監視が開始されない理由は「no nginx status on http://localhost/nginx_status」との事です。

[root@centos80 ~]# munin-node-configure --suggest

  <omitted>

nginx_request              | no   | no [no nginx status on http://localhost/nginx_status]
nginx_status               | no   | no [no nginx status on http://localhost/nginx_status]

nginx_statusとはNginxのステータス表示を有効にする機能です。設定方法は様々ですが、CentOS8.2にインストールされたnginx初期設定から最小の変更で有効にするには、/etc/nginx/nginx.confに以下ハイライトされた部分を加筆します。

# vi /etc/nginx/nginx.conf

  <omitted>

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        location /nginx_status {
            stub_status on;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

リロードして設定を反映させます。

systemctl reload nginx

ブラウザに以下URLを入力し、Nginxの状態が表示される事を確認します

 http://<ip address>/nginx_status

nginx statusの確認

nginxのSuggestions列がyesに変わった事を確認します。

[root@centos80 ~]# munin-node-configure --suggest

 <omitted>

nginx_request              | no   | yes                                    
nginx_status               | no   | yes 

プラグイン(監視項目)を有効にして、再起動で設定を反映させます。

munin-node-configure --shell | sh
systemctl restart munin-node.service

しばらく待った(15分程度)後、ブラウザにてnginxの監視が始まった事を確認します。まずはトップページに「webserver」という欄がある事を確認します。「webserver」を押下すると、nginx監視の欄に遷移します。

Muninによるnginx監視01

DBの監視が始まっている事を確認します。

Muninによるnginx監視02

タイトルとURLをコピーしました