muninで他のマシンから情報を取得する

 今までいくつか試してみたけど、すべて同じマシン(OS)内から取得していました。基本的に監視したいマシンにmunin-nodeを入れればいいだけですが、うまくいかなかった場合のメモ。

 

環境

  • CentOS 6.2
  • munin / munin-node 2.0.9 (epelからインストール)

設定内容

  • マスター側
    /etc/munin/munin.conf に[localhost] の書き方を真似て、対象のノードを指定します。
  • ノード側
    /etc/munin/munin-node.conf に allow , cidr_allow の設定を真似てマスタを指定します。

確認ポイント

  1. ログをみる
    vi /var/log/munin-node/munin-node.log にエラーが出てないか確認します。
    環境によってpostfixやlpstatの設定がないのでエラーが出ています。放置しても動くのですが、不要なら削除します。プラグインの解除は /etc/munin/plugins 以下のシンボリックリンクを削除するだけです。

  2. 情報が取得できているか確認する
    ノードをインストールした環境からtelnetで接続できるか確認します。
    telnet localhost 4949
    接続できたら、LISTでプラグイン一覧を取得して、FETCHで取得したいプラグインを指定します。
    FECH 情報を取得したいプラグイン名
    情報の取得がうまく出来ない場合は、設定ファイルを見直してください。
    /etc/munin/plugins/プラグイン名 autoconf
  3. マスタからノードに接続できるか確認する
    ファイヤーウォールの設定の問題があるので、ノード側の設定ファイル /etc/sysconfig/iptables に4949ポートのアクセスを許可する設定をいれて、iptablesを再起動してください。
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 4949 -j ACCEPT
    設定後、情報の取得を待つのが面倒なので、マスタが側から手動取得コマンドを実行します。実行ユーザmuninは環境によって置き換えます。
    sudo -u munin /usr/bin/munin-cron
  4. それでも動かない場合、取得するためのモジュールがそろっているか確認します。
    たとえば、xxx-develがインストールされていないかとか、moduleがインストールされていない(有効になっていない)か、など。