サイトが停止!!
なんてことになったら、マジで冷や汗ものですよね。
当ブログも、本当に少しづつですがアクセスが伸びてきました。
アクセス過多でサイトが停止しないように、今から対応をしておきます。
まあ、そうなったら、それはそれで嬉しい悲鳴ですけどね。
とにかく、監視ツールでサーバーを監視していきます。
ただ、個人で使うなら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による監視ができています。
お疲れ様でした。
また、別の機会に別々のサーバー同士で監視を実施してみます。