# Munin (日本語)

Munin はそこら中のコンピュータに何があったのか調べる事ができるモニタリングツールです。調べた全ての情報をウェブインターフェースを介して表示する事ができます。インストールが完了した後は、沢山のモニタリングプラグインたちがあなたに代わって仕事をしてくれる事でしょう。

Munin を使えばネットワーク、SAN、アプリケーション、気象状況等による計算機の性能評価が簡単になります。性能の問題について「おや、この日は何が違ったのかな？」とか簡単に分かるようになります。リソース毎の過不足を簡単に判断できるようになるでしょう。

Munin は優れた RRDTool (著 Tobi Oetiker) と Perl で書かれたフレームワーク、それと様々な言語で書かれたプラグインたちによって構成されています。Munin は マスター/ノード アーキテクチャー を採っていて、マスターが全てのノードに対し定期的にデータ収集を行います。データは RRDファイル に記録され、必要に応じてグラフを更新します。とりあえずの目標としてプラグイン（グラフ）を自在に扱える様になりましょう。 [1]

と、いうわけで、 Munin はシステムの統計を採りグラフに図示してくれるものです。詳しくはオスロ大学の Munin install など見ると良いでしょう。

## インストール作業

Munin はクライアント−サーバーモデルです。クライアントを munin-node 、サーバーを munin と称します(ドキュメントでは "munin-master"となっていたりもするけど)。

munin-master は1台のマシンにインストールし、 munin-node は監視したり全てのマシンにインストールします。ここでは、とりあえず1台のマシンについてのみインストールする事を考えてみるとしましょう。より詳しく知りたいのならば Munin documentation wiki を見ましょうね。

### munin と munin-node について

執筆現在に於いて munin (munin-master) と munin-node は extra リポジトリにパッケージがあります。

#### パッケージの確認

    # pacman -Ss munin

    extra/munin 1.4.6-2
        A distributed monitoring/graphing tool
    extra/munin-node 1.4.6-2
        A distributed monitoring/graphing tool

#### インストール

    # pacman -S munin munin-node

### ウェブサーバーの必要性について

このガイドではMuninは静的なHTMLとグラフ画像を設定されたディレクトリへ出力する様にセットアップを行います。生成されたファイルはローカルのブラウザからならそのまま見ることも出来るでしょう。しかし、もしリモートのマシンから見たいのならば適当なウェブサーバーを予めセットアップしておく必要があります。例えば、

- Apache
- Lighttpd
- Nginx (日本語)

などなど。他にサーバーについては詳しく知りたければ web server 辺りも参考になるかもしれません。

### IPv6

munin-node で IPv6 をサポートするには (/etc/munin/munin-node.conf で host :::1 を使う) 以下のパッケージをインストールする必要があります:

- perl-socket6
- perl-io-socket-inet6

## 設定

### デーモン

デーモンを追加して

    systemctl enable munin-node

起動して置きましょう

    systemctl start munin-node

詳しくは Daemons (日本語) を見て下さい。

### プラグイン

munin-node-configure を実行しましょう。 --suggest オプションを付けると、インストールしたマシンで使えそうなプラグインのお勧めリストが表示されます:

    # munin-node-configure --suggest

使用したいプラグインがあれば、もう一度コマンドを実行します。 --shell オプションを付けると munin-node-configure によってお勧めされたプラグインが設定されるでしょう:

    # munin-node-configure --shell | sh

#### SNMP について設定したい場合

例えばSNMPサーバーが SERVER というホスト名で、 バージョン v2c 、 コミュニティ名 COMMUNITY で稼働している際は次の様にお勧めリストの確認を行います:

    # munin-node-configure --suggest --snmp SERVER --snmpversion snmpv2c --snmpcommunity COMMUNITY

この結果をシェル用に出力し、その出力をシェルに渡すには次の様にします:

    # munin-node-configure --shell --snmp SERVER --snmpversion snmpv2c --snmpcommunity COMMUNITY | sh

### ディレクトリ

munin-master がHTMLやグラフ画像を生成する為のディレクトリを設定し、作成して於きましょう。

/etc/munin/munin.conf の以下の htmldir のコメントを外します:

    htmldir /srv/http/munin

これで /srv/http/munin へ出力が設定されます。

ディレクトリについては作成するだけでなく、ユーザー munin がこのディレクトリへの書き込み権限を満たす様にするのも忘れないようにしましょう。

    # mkdir /srv/http/munin
    # chown munin:munin /srv/http/munin

適当なウェブサーバーが標準設定のまま(ドキュメントルートが/srv/http)で稼働していれば、このディレクトリを http://localhost/munin/ で表示する事が出来るでしょう。

### ホスト名

muninを実行する前に、システムのホスト名を設定しておくと良いでしょう。/etc/munin/munin.conf で標準では"myhostname"となっている筈です。お好みの名前を付けてあげて下さいね。ホスト名は /var/lib/munin の .rrdファイル、HTMLやグラフ画像のグループ化に適用されます。

### Cron

次の設定で5分措きにmuninがデータを更新し、HTMLとグラフ画像を生成します:

    # crontab /etc/munin/munin-cron-entry -u munin

ユーザー munin へのメール配送のエイリアスも設定して措くと良いでしょう。もしも postfix を使っているのならば /etc/postfix/aliases に次のように設定し、

     munin:    root

それから

     newaliases

とかコマンドを実行すると良いでしょう。

### ユーザー munin へのアクセス権の設定

多くのプラグインがログファイルを読もうとします。そう云う訳でユーザー munin を log グループに追加して措きましょう:

    # usermod -aG log munin

## テスト

Munin は既に使える状態になっています。さあ、 munin-node を稼働させましょう:

    #/etc/rc.d/munin-node start

もしも手作業でHTMLとグラフ画像を生成したいのならば、

    # su - munin --shell=/bin/bash
    $ munin-cron

とかすると良いでしょう。後はブラウザで出力ディレクトリ或いは http://localhost/munin/ を表示する等してインターフェースをテストしましょう。

Note: グラフにデータが集まりだすのには時間がかかるので30分くらい待って見ましょうね。

## プラグイン

Muninには沢山のプラグインがあってキミにインストールされるのを待っているよ！手始めに MuninExchange を見るといいよ、素敵だろ？まあ、時にはお目当てのプラグインを見付けられない事もあるだろうけど…そんな時は自分で書けばいいよ！簡単だから HowToWritePlugins を見ながらやってみるといいよ。

### 追加

基本的には全てのプラグインはマナーに則って追加されるよ(いやまあ勿論、例外はあるからプラグイン毎によく確認してね！):

先ずはプラグインをダウンロードするなどして、それを /usr/lib/munin/plugins に複製なり移動なりしよう。

    # cp <plugin> /usr/lib/munin/plugins/

そして /etc/munin/plugins にシンボリックリンクを張るんだ:

    # ln -s /usr/lib/munin/plugins/<plugin> /etc/munin/plugins/<plugin>

Note: ワイルドカードプラグインと云われる幾つかのプラグインについては… - 別々の名前でリンクを張る事で複数のデバイスを扱えたりもするよ。こんな様なプラグインたちはプラグインの末尾がアンダースコアで終わっていて、 <plugin>_<device> とかリンクを張る事で <device> に対応する様に動作するんだ。例としては if_ プラグインとかを見るといいよ。

さあ、プラグインをテストしよう。プラグインのフルパスを入れる必要は無いよ、次にように munin-run を実行しよう:

    # munin-run <plugin>

それから munin-node を 再起動するんだ:

    # /etc/rc.d/munin-node restart

後はウェブページが更新されれば完了さ。

### 削除

プラグインを削除したいのなら、 /etc/munin/plugins のシンボリックリンクを削除すればいい。 - /usr/lib/munin/plugins から削除する必要は無いよ。

    # rm /etc/munin/plugins/<plugin>

### デバッグ作業

思惑通りに動いてくれないプラグイン(何も出力されてないっぽいとか)に出会してしまったなら、そのプラグインを直接実行して見るというのも良いかもしれません。例えば、 "apache_accesses" プラグインを直接実行するには、

    # munin-run apache_accesses

とかします。

エラーがあれば、例えば "LWP::UserAgent not found at /etc/munin/plugins/apache_accesses line 86." だとか出力されるかもしれません。ちなみにこの場合は、Perlの関数が見つからないという問題で、 不足しているライブラリ "perl-libwww" をインストールしてあげると良いかもしれません。

Category:

- Status monitoring and notification (日本語)