MuninでNginxやMariaDBを監視する方法

MuninでNginxやMariaDBを監視する方法

Linux向けのリソース監視ツール「Munin」では、標準でCPU利用率、ディスク使用率、メモリ使用量、ネットワーク通信量等のリソースの監視しかできませんが、プラグインを利用することで、さまざまなリソースの監視が可能になります。

Munin Plugin Gallery

ここでは、その中の一例としてNginxとMariaDBを監視する方法を紹介します。

Muninを利用した基本的な監視環境の構築方法については、以下の記事をご覧ください。

Linuxで小規模サーバー環境のリソース監視をするなら「Munin」がお手軽
ここでは、Linuxで小規模環境のリソース監視に最適なツール「Munin」を使って、ネットワーク上で稼働しているサーバーのリソースを監視する方法を紹介します。

この記事は、以下の環境での動作結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
CentOS(Minimal)7.6.1810
Munin2.0.45
Nginx1.15.12
MariaDB Server10.3.14

Nginxプラグインの追加

Nginxプラグインを利用と「接続数」や「リクエスト数」を監視することができます。

ここでは、CentOS 7+Nginxで構築されたWebサーバーのNginxを監視するための設定を紹介します。

なお、エージェントソフト(Munin-node)のインストールや基本の設定は済んでいることを前提とします。

ここからは、監視対象マシン上での作業です。

Munin-nodeの設定

まず、プラグインファイルのシンボリックリンクを配置します。

# ln -s /usr/share/munin/plugins/nginx_status /etc/munin/plugins/nginx_status
# ln -s /usr/share/munin/plugins/nginx_request /etc/munin/plugins/nginx_request

Nginxの設定

次に、監視用のNginx設定ファイルを作成します。

# vi /etc/nginx/conf.d/munin.conf
server {
    listen 127.0.0.1;
    server_name localhost;

    location /nginx_status {
      stub_status on;
      access_log off;
      allow 127.0.0.1;
      deny all;
    }
}
Memo

Nginxの「Stub Status」モジュールは、バーチャルホストごとのステータスではなく、Nginx全体のステータスを確認できるモジュールです。

サービスの再起動

設定が完了したら、Munin-nodeとNginxのサービスを再起動します。

# systemctl restart nginx
# systemctl restart munin-node

動作確認

サービスを再起動したら、監視対象サーバー上で以下のコマンドを実行して、監視項目の値が取得できているか確認します。

# munin-run nginx_status
 total.value 1
 reading.value 0
 writing.value 1
 waiting.value 0

# munin-run nginx_request
 request.value 121

値が取得できていない場合は、次のように値の部分が「U」と表示されるので、設定回りなどを見直します。

total.value U
reading.value U
writing.value U
waiting.value U

Webインターフェースでの確認

MuninのWebインターフェースにアクセスして、監視対象マシンの監視項目に「webserver」が追加されており、クリックするとグラフが表示されていればOKです。

MuninでNginxやMariaDBを監視する方法

MuninでNginxやMariaDBを監視する方法

MariaDBプラグインの追加

MariaDBプラグインを利用すると「出力バイト数」「クエリ発行数」「スレッド数」「スロークエリ数」などを監視できるようになります。

ここでは、CentOS 7+MariaDBなサーバーのMariaDBを監視するための設定を紹介します。

なお、エージェントソフト(Munin-node)のインストールや基本の設定は済んでいることを前提とします。

ここからは、監視対象マシン上での作業です。

Munin-nodeの設定

まず、Munin-nodeの設定ファイルを追加します。

# vi /etc/munin/plugin-conf.d/mariadb
[mysql*]
env.mysqlopts -u root --password=<rootのパスワード>
env.mysqladmin /usr/bin/mysqladmin

次に、プラグインファイルのシンボリックリンクを配置します。

# ln -s /usr/share/munin/plugins/mysql_bytes /etc/munin/plugins/mysql_bytes
# ln -s /usr/share/munin/plugins/mysql_innodb /etc/munin/plugins/mysql_innodb
# ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries
# ln -s /usr/share/munin/plugins/mysql_slowqueries /etc/munin/plugins/mysql_slowqueries
# ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threads

MariaDBの設定

スロークエリ(実行に時間がかかっているクエリ)を記録するよう設定して、Muninでスロークエリの頻度を確認できるようにします。

なお、ここでは、遅いクエリかどうかのしきい値を1秒(long_query_time=1)に設定していますが、設定値は環境により適宜調整してください。

# vi /etc/my.cnf.d/server.cnf

[mariadb]セクションに以下を追加します。

slow_query_log=1
slow_query_log_file=/var/log/mysql-slow.log
long_query_time=1

なお、上で指定したログファイル「/var/log/mysql-slow.log」は、権限を含めて事前に作成しておきます。

# touch /var/log/mysql-slow.log
# chown mysql:mysql /var/log/mysql-slow.log

サービスの再起動

設定が完了したら、サービスを再起動して設定を反映させます。

# systemctl restart mariadb
# systemctl restart munin-node

動作確認

サービスを再起動したら、監視対象サーバー上で以下のコマンドを実行して、監視項目の値が取得できているか確認します。

# munin-run mysql_bytes
recv.value 396628
sent.value 7792870

# munin-run mysql_queries
delete.value 17
insert.value 16
replace.value 0
select.value 1420
update.value 59
cache_hits.value 953

# munin-run mysql_slowqueries
queries.value 0

# munin-run mysql_threads
threads.value 8

Webインターフェースでの確認

MuninのWebインターフェースにアクセスして、監視対象マシンの監視項目に「mysql」が追加されており、クリックするとグラフが表示されていればOKです。

MuninでNginxやMariaDBを監視する方法

MuninでNginxやMariaDBを監視する方法

不要な監視項目を削除する

「Munin」では、監視項目をプラグインとして実装しており、使用中のプラグインは、監視対象サーバーの「etc/munin/plugins」にシンボリックリンクとして配置されています。

MuninでNginxやMariaDBを監視する方法

不要な監視項目がある場合は、対象のシンボリックリンクを削除することで、必要な監視項目だけを監視することができます。

# unlink /etc/munin/plugins/entropy

不要な監視項目は削除しておいたほうが、監視サーバーの負荷も軽くなりますよ。

あとがき

「Munin」は、他の監視ツールに比べると機能も少なく、きめ細かな設定もあまりできませんが、カンタンに導入でき、Webインターフェースもシンプルなので、監視環境をサクッと作りたい場合に重宝します。