Linuxで小規模サーバー環境のリソース監視をするなら「Munin」がお手軽

Linuxで小規模サーバー環境のリソース監視をするなら「Munin」がお手軽

自宅・会社を問わず、サーバーを稼働させている場合、サーバーが問題なく稼働しているかを監視するのは、トラブルをいち早く発見するためとともに、トラブルの兆候をとらえるためにとても重要です。

監視方法には、死活監視をはじめとしていくつもの種類がありますが、トラブルの兆候をとらえる方法として有効なのが「リソース監視」です。

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

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

ソフトウェアバージョン
CentOS(Minimal)7.6.1810
Munin2.0.45

Muninとは

Linuxで小規模サーバー環境のリソース監視をするなら「Munin」がお手軽

公式:Munin

Muninは、エージェント型のリソース監視ツールで、おもにCPU利用率、ディスク使用率、メモリ使用量、ネットワーク通信量等を監視できます。

構成としては、監視対象マシンに、エージェントソフトウェア「munin-node」をインストールし、監視サーバーには「munin-server」をインストールします。

Muninの特徴は、次のとおりです。

  • 設定が他の監視ツールに比べてカンタン
  • インターフェースがWebブラウザ
  • リソースの使用量をグラフで確認できる
  • プラグインを導入することで、監視項目を増やすことができる

各種のリソース使用量の推移をグラフで確認できると、過去から現在にかけてどのように変化しているかがよくわかるため、サーバー環境のトラブルシューティングをする場合に、トラブルの発生時期を特定したり、トラブルの兆候をとらえるのにとても便利なのです。

なお、Muninについてより詳細な情報を知りたい方は、以下の「Munin Guide(英語)」が役立ちます。

Welcome to the Munin Guide

Muninサーバーのインストールと設定

ここでは、CentOS 7を最小構成(Minimal)でインストールした環境に、Muninを導入する手順を紹介します。なお、インターフェース用のWebサーバーとしては「Nginx」を利用します。

Nginxのインストール

Nginxは、Mainlineの最新バージョンをインストールしたいので、リポジトリファイルを作成してからインストールします。

# vi /etc/yum.repos.d/nginx-mainline.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

ファイルを作成したら、以下のコマンドでNginxをインストールします。

# yum install --enablerepo=nginx nginx

インストールが完了したらサービスの起動と自動起動設定を行っておきます。

# systemctl start nginx
# systemctl enable nginx

Muninのインストール

Muninは、epeplリポジトリからインストールするため、まずは以下のパッケージをインストールします。

# yum install epel-release

次に、以下のコマンドでMuninと必要なパッケージをインストールします。

# yum install munin --enablerepo=epel

Muninの設定

Muninの設定ファイルは「/etc/munin/munin.conf」にありますが、ここではデフォルト設定で利用するため、編集はしません。

Nginxの設定

NginxにMunin用の設定を追加するため、以下のファイルを新規作成します。

# vi /etc/nginx/conf.d/munin.conf

ここでは、次のような内容で設定しています。

  • IPアドレス(192.168.10.170)、80番ポート(http)で待ち受け
  • MuninのWebインターフェースには、同一ネットワークセグメントからのアクセスのみを許可
  • FastCGI周りの設定は、Muninの公式ページなどを参考に
server {
    listen 80;
    server_name 192.168.10.170;
    root /var/www/html/munin/;
    index index.html index.htm;

    #アクセス制限設定
    allow 192.168.10.0/24;
    allow 127.0.0.1;
    deny all;

    # redirect server error pages to the static page /40x.html
    error_page  404              /404.html;
    location = /40x.html {
        root   /usr/share/nginx/html;
    }

    # redirect server error pages to the static page /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ^~ /munin-cgi/munin-cgi-graph/ {
        access_log off;
        fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*);
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_pass unix:/var/run/munin/munin-cgi-graph.sock;
        include fastcgi_params;
    }

    location /static/ {
        alias /etc/munin/static/;
    }
}

Nginxの設定が済んだら、次のコマンドで設定ファイルに問題がないか確認しておきます。

# nginx -t

設定ファイルに問題がなければ、次のように表示されます。

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

サービスの開始

Nginxのサービスを再起動して、Munin関連のサービスを開始し、マシン起動時にMuninが自動的に開始するよう設定しておきます。

# systemctl restart nginx
# systemctl start munin-cgi-graph
# systemctl enable munin-cgi-graph
# systemctl start munin-node
# systemctl enable munin-node

ファイアウォールの設定

Webインターフェースに外部からアクセスできるように、firewalldでhttp(TCP/80)の待ち受けを許可します。

# firewall-cmd --permanent --add-service=http
success

設定が済んだら、以下のコマンドで設定を反映させます。

# firewall-cmd --reload
success

Muninサーバーの設定は、以上で完了です。

動作確認

同一ネットワーク上の任意のマシンから、ブラウザでMuninサーバーにアクセスし、以下の画像のように表示されていればOKです。

なお、デフォルトでMuninサーバー自身も監視対象となり、画面中央に表示されている「localhost」がそれです。

Linuxで小規模サーバー環境のリソース監視をするなら「Munin」がお手軽

監視対象マシンの設定

ここでは、CentOS 7を最小構成(Minimal)でインストールしたマシンを、監視対象マシンとして設定する手順を紹介します。

Munin-nodeのインストール

監視対象のマシンに「munin-node」をインストールします。

# yum -y install epel-release
# yum -y install munin-node --enablerepo=epel

Munin-nodeの設定

以下のファイルを編集して、接続を許可するMunin-serverのIPアドレスを入力します。

ここでは、監視サーバーのIPアドレスを「192.168.10.170」として設定しています。

# vi /etc/munin/munin-node.conf
…
allow ^192\.168\.10\.170$
…

サービスの開始

設定が完了したら、サービスを開始して自動起動するよう設定しておきます。

# systemctl start munin-node
# systemctl enable munin-node

動作確認

Munin-nodeが正常に動作しているか確認するために、以下のコマンドを実行して、ロードアベレージを取得してみます。

# munin-run load
load.value 0.04

上のように、何らかの数値が表示されていれば、OKです。

ファイアウォールの設定

Munin-serverは、Munin-nodeのTCP4949番ポートへアクセスして情報を収集するため、firewalldで待ち受けを許可します。

# firewall-cmd --add-service=munin-node --permanent
success

設定が済んだら、以下のコマンドで設定を反映させます。

# firewall-cmd --reload
success

Munin-serverに監視対象の情報を追加

Munin-serverにある設定ファイルに監視対象マシンの情報を追加します。

# vi /etc/munin/conf.d/local.conf

ここでは、監視対象マシン名を「munin-node01」とし、監視対象マシンのIPアドレスを「192.168.10.171」として設定しています。

#監視対象マシンの情報を追記
[munin-node01]
address 192.168.10.171
use_node_name yes

しばらく待っていると、MuninのWebインターフェース上に監視対象として設定したマシンが表示され、グラフなどを確認できるようになります。

即時で反映させたいときは、Munin-server上で、以下のコマンドを実行します。

# su - munin --shell=/usr/bin/munin-cron

Linuxで小規模サーバー環境のリソース監視をするなら「Munin」がお手軽

Linuxで小規模サーバー環境のリソース監視をするなら「Munin」がお手軽

あとがき

ここでは、Muninの基本的な構築手順を紹介しましたが、次回の記事では、プラグインを追加してWebサービスやデータベースを監視する方法について紹介したいと思います。

なお、Muninサーバーをよりセキュアにする方法については、以下の記事をご覧ください。

MuninのWebインターフェースにアクセス制限を掛ける方法
ここでは、Muninサーバー+Nginxの環境でアクセス制限を行う方法として、Nginxの設定で実装可能な2つの方法(IPアドレスにより制限する方法と、Basic認証を実装する方法)を紹介します。