サーバー監視ツールのMuninをUbuntuにインストールする方法【Nginx】

サーバー監視ツールのMuninをUbuntuにインストールする方法【Nginx】 サーバー

サイトが停止!!
なんてことになったら、マジで冷や汗ものですよね。

当ブログも、本当に少しづつですがアクセスが伸びてきました。
アクセス過多でサイトが停止しないように、今から対応をしておきます。

まあ、そうなったら、それはそれで嬉しい悲鳴ですけどね。
とにかく、監視ツールでサーバーを監視していきます。

ただ、個人で使うならMRTGやCactiは、少々無駄スペックです。
もっと気軽に監視できるツールはないのか?と探しました。

そこで見つけたのが、Muninです。
インストールも簡単ですし、運用も楽そうです。
個人のブログなら、Muninで十分だと思います。

本記事では、このMuninをインストールする方法をまとめています。

本記事の内容

  • Muninの仕組み
  • Muninの仕組みとインストールについて
  • Munin-Masterのインストール
  • Munin-Nodeのインストール
  • Munin-MasterからMunin-Nodeへの接続
  • Munin-MasterとWebサーバーを連携させる

それでは、上記に沿って解説していきます。

Muninの仕組み

Muninは、サーバー監視ツールです。
Muninは、LinuxだけではなくWindowsにも対応しています。

Muninでサーバー監視を行うためには、その仕組みを知っておく必要があります。
正確には、Muninをインストールする時点で理解しておかないといけません。
理解と言っても、大袈裟なことではありません。

登場キャラを3つだけ覚えてください。
その3つは以下です。

  • Webサーバー
  • Munin-Master
  • Munin-Node

以下で説明します。

Webサーバー

まず、Webサーバーの説明から行います。
Muninの管理画面はWebブラウザでアクセスします。
そのため、Webサーバーが必要となります。

ここは、問題ありませんね。
では、次のキャラにいきましょう。

Munin-Master

Munin-Masterは、名前の通りマスターです。
マスターは、「主人・支配人」の意味が最も近いかもしれません、

マスターは、管理する側のことです。
では、Munin-Masterは何を管理しているのか?

最後のキャラであるMunin-Nodeを管理しています。
もっと言うと、Munin-MasterはMunin-Nodeから送られる情報を管理しているのです。

Munin-Node

じゃあ、Munin-Nodeはどんな情報をMunin-Masterに送っているのでしょうか?
サーバーの情報を送っているのです。

実際には、Munin-Nodeがサーバーを監視しています。
監視した情報をMunin-Masterへ送っています。

ということは、監視対象となるサーバーにMunin-Nodeをインストールする必要があります。

仕組みのまとめ

Munin-MasterとMunin-Nodeの関係は、上記で説明しましたね。
では、Webサーバーはどう絡むのか?

管理画面が動く(ブラウザは表示するだけ)のは、Webサーバーです。
そのWebサーバーとMunin-Masterが連携するのが、当然の流れですね。
なぜなら、Munin-Masterに監視情報が集まってきているからです。

仕組みを丁寧に説明してきました。
この仕組みが理解できれば、インストールも何なく理解できるはずです。

Muninの仕組みとインストールについて

インストールは、もちろん次の3キャラが対象となります。

  • Webサーバー
  • Munin-Master
  • Munin-Node

WebサーバーとMunin-Masterがコンビを組んでいましたね。
つまり、WebサーバーとMunin-Masterは、同じサーバーにインストールするということです。

では、Munin-Nodeは?
すでに説明済みですね。
監視対象となるサーバーにインストールします。

ただし、今回はすべて同じサーバーにインストールします。
Munin-Masterが動くサーバーを監視しても、何ら問題はありません。
むしろ、監視すべきでしょうね。

なお、Webサーバーは次のどちからを用います。

  • Apache
  • Nginx

Muninは、どちらにも対応しています。
今回は、NginxをWebサーバーとして利用します。

インストールに関しては、次の記事を参考にしてください。

よって、Webサーバーのインストール自体はこの記事では触れません。
それでは、残る2キャラをインストールしていきます。

Munin-Masterのインストール

Webサーバーがインストールされているサーバー上で作業を行います。
インストーする前には、以下のおまじないようを唱えましょう。

$ sudo apt update

次のコマンドにより、Munin-Masterをインストールします。

$ sudo apt-get install munin

インストールの確認は、次のコマンドで行いましょう。

$ munindoc -V
You called the perldoc command with a name that I didn't recognize.
This might mean that someone is tricking you into running a
program you don't intend to use, but it also might mean that you
created your own link to perldoc. I think your program name is
[munindoc].

I'll allow this if the filename only has [a-zA-Z0-9._-].

at /usr/bin/munindoc line 63.
Usage: munindoc [-hVriDtumUFXlT] [-n nroffer_program]
    [-d output_filename] [-o output_format] [-M FormatterModule]
    [-w formatter_option:option_value] [-L translation_code]
    PageName|ModuleName|ProgramName

Examples:

    munindoc -f PerlFunc
    munindoc -q FAQKeywords
    munindoc -v PerlVar
    munindoc -a PerlAPI

The -h option prints more help.  Also try "munindoc perldoc" to get
acquainted with the system.                        [Perldoc v3.28]

大丈夫そうですね。
Munin-Masterのインストールは、これで完了です。

Munin-Nodeのインストール

Munin-Nodeのインストールは、監視対象のサーバー上で行います。
インストール前のおまじないです。

$ sudo apt update

次のコマンドにより、Munin-Nodeのインストールを行います。

$ sudo apt-get install munin-node

ただし、今回はMunin-Masterと同じサーバーにインストールします。
実は、Munin-Masterをインストールした時点でMunin-Nodeも同時にインストールされているのです。

そのため、次のような表示でも焦らないでください。

munin-node はすでに最新バージョン (2.0.37-1ubuntu0.1) です。
munin-node は手動でインストールしたと設定されました。

念のため、インストールの確認です。

$ munin-node -v
Version:
    This is munin-node v2.0.37-1ubuntu0.1

    $Id$

Copyright:
    Copyright (C) 2002-2006 Audun Ytterdal, Jimmy Olsen, and Tore Anderson /
    Linpro AS.

    This is free software; see the source for copying conditions. There is
    NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
    PURPOSE.

    This program is released under the GNU General Public License

問題ありませんね。
Munin-Nodeのインストールは、これで完了となります。

Munin-MasterからMunin-Nodeへの接続

Munin-Masterは、Munin-Nodeから情報が送られると表現してきました。
ここで、この表現を訂正しておきます。

正確には、Munin-MasterがMunin-Nodeに情報を取りに行きます。
情報を回収しにいく感じですね。
コンビニFCなどのエリアマネジャーみたいな感じですかね。

そのためには、Munin-MasterがMunin-Nodeに接続できないといけません。
この設定を行う必要があります。

Munin-Master側とMunin-Node側、それぞれで設定を行います。

Munin-Nodeの設定・起動

先に、接続される側での設定を行います。
Munin-Masterが接続できるようにポートを開放します。

Munin-Nodeへの接続に利用するポートは、4949です。
以下の設定ファイルで確認できます。

/etc/munin/munin-node.conf

ファイル末尾に4949と記載されています。

# And which port                                                                                                                          
port 4949   

あと、下記も確認しておきましょう。
ファイルの途中ぐらいです。

# A list of addresses that are allowed to connect.  This must be a
# regular expression, since Net::Server does not understand CIDR-style
# network notation unless the perl module Net::CIDR is installed.  You
# may repeat the allow line as many times as you'd like

allow ^127\.0\.0\.1$                                                                                                                    allow ^::1$ 

これは、接続を許可するサーバーの登録情報です。
今回は、同じサーバー上で設定しているのでそのままにしておきます。

「allow ^127.0.0.1$ 」は、IPv4におけるローカルホストの指定です。
「allow ^::1$ 」は、IPv6におけるローカルホストの指定です。

サーバーを分けて運用する場合には、この部分に追記が必要となります。
Munin-MasterをインストールしたサーバーのIPを登録することになるでしょう。

設定が完了(今回は確認のみ)したら、Munin-Nodeを起動しておきます。

$ sudo systemctl restart munin-node

あと、ポートの開放も忘れずに。

$ sudo ufw allow 4949

でも、今回は同じサーバーでの運用のため、開放は不要です。

Munin-Masterの設定・起動

Munin-Master上では、回収先を登録する必要があります。
これを登録しないと、どこのサーバーに接続すればいいかわかりませんからね。

Munin-Masterの設定ファイルで接続先を登録します。
設定ファイルは以下。

/etc/munin/munin.conf

# a simple host tree                                                                                                                    
[localhost.localdomain]                                                                                                                 
    address 127.0.0.1                                                                                                             
    use_node_name yes

ローカルホストは、デフォルトで接続先に登録されていますね。
今回は、何もする必要はありません。

サーバーを分けて運用する場合には、この部分に追記が必要となります。
Munin-Nodeをインストールした監視対象のサーバーのIPを登録します。

もう1箇所だけ確認しておきましょう。
設定ファイルを開いたら、すぐに以下の記述があります。

# The next three variables specifies where the location of the RRD
# databases, the HTML output, logs and the lock/pid files.  They all
# must be writable by the user running munin-cron.  They are all
# defaulted to the values you see here.
#
#dbdir  /var/lib/munin
#htmldir /var/cache/munin/www
#logdir /var/log/munin
#rundir  /var/run/munin

# Where to look for the HTML templates
#
#tmpldir        /etc/munin/templates

# Where to look for the static www files
#
#staticdir /etc/munin/static

以下の2つを控えておいてください。
パスを変更しないなら、コメントアウトのままでOKです。

  • #htmldir /var/cache/munin/www
  • #staticdir /etc/munin/static

もし、パスを変更するなら、コメントを解除してください。
これらのパスは後で必要となります。

設定が完了(今回は確認のみ)したら、Munin-Masterを起動しておきます。
と言いつつ、Munin-Masterは起動させる必要はありません。

Munin-Masterのインストールの時に、cronで動くように自動で設定されています。
以下のファイルで確認できます。

/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

5分に1回起動するように設定されています。
5分に1回、Munin-Nodeへ情報を回収しにいくということですね。

最後に、接続の確認をしておきます。

$ telnet  監視対象(Munin-Nodeのインストール先)サーバーのIP 4949

ただし、今回は同じサーバーです。
そのため、以下で確認します。

$ telnet localhost 4949
Trying 127.0.0.1...
Connected to localhost.

接続できたようです。

Munin-MasterとWebサーバーを連携させる

今回は、WebサーバーにNginxを用います。
そのため、Nginxの設定ファイルに設定を加えます。

今回は、デフォルトドメインを利用します。
つまり、バーチャルホストは利用しないということです。

よって、設定するファイルは以下。
/etc/nginx/sites-available/default

変更前

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #

変更後

server {
        listen 80 default_server;
        listen [::]:80 default_server;

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

        location ^~ /munin/ {
                alias /var/cache/munin/www/;
        }

        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #

以下のURLでアクセスできるようにしたということです。
http://サーバのIP/munin/

設定を反映させましょう。
Nginxの再起動です。

$ sudo systemctl restart nginx

http://サーバのIP/munin/にアクセスします。

この画面が表示されれば、Munin-MasterとWebサーバーの連携は成功です。
「localhost.localdomain」リンクをクリックします。

少しでもグラフが描画されていれば、Muninによる監視ができています。
お疲れ様でした。

また、別の機会に別々のサーバー同士で監視を実施してみます。

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