じかんのむだ

読んで時間の無駄にならないようなブログを目指して。

MUNIN+SNMPでパソコンを監視する

ねぇMUNIN こっちむ~いて~♪(お約束)

 

「MUNIN SNMP」で検索したらいろいろ出てきたのでSNMPを使用してステータスを表示してみました。環境はノードのWindowsXP、Windows7、そしてノード+サーバーのUbuntu 12.04です。

 

まずサーバーであるUbuntuPerlを入れます。多分入ってると思いますが…。そしてCPANからNet::SNMPをインストールします。多分入ってると思いますが…。

 

WindwosXPとWindwos7にSNMPモジュールをインストールします。例としてWindows7ではコントロールパネルの「プログラムと機能」から左上の「Windowsの機能の有効化または無効化」を選び「簡易ネットワーク管理プロトコル(SNMP)」にチェックを入れて「OK」ボタンを押下します。これでSNMPサービスがインストールされます。

 

そしてサービスの設定を行います。コントロールパネルの「管理ツール」から「サービス」を立ち上げ、サービスの「SNMP Service」をダブルクリックしてプロパティを出します。そしてプロパティの「トラップ」タブに移行し、コミュニティ名を設定しますコミュニティ名は自分が分かるならなんでも構いません。ただ「public」という名前はやめておいた方が無難です。「一覧に追加」ボタンを押下したら今度は「トラップ送信先」の「追加」ボタンを押下し、MUNINサーバーのIPアドレスを追加します。設定を終えたら次は「セキュリティ」タブに移行します。そうすると先程追加したコミュニティ名があるのでコミュニティを選び「編集」ボタンを押下します。権利は「読み取りのみ」にしてください。そして「これらのホストからSNMPパケットを受け付けるを押下し、ホストを追加します。これはMUNINサーバーのIPアドレスを指定してください。これでWindows側の設定は終わりです。SNMP Serviceを再起動してください。

 

サーバー機もSNMP経由で見たい場合は、サーバーにもsnmpdを入れます。Ubuntuサーバーとか他はどうだか知りませんがUbuntuデスクトップはsnmpdが入ってないので(GUIが無いとダメなヘタレっ子なのでUbuntuデスクトップをサーバーにしています)

  • $ sudo apt-get install snmpd

としてインストールを行なってください。

「/etc/snmp/snmpd.conf」の編集は例を見ながらということで。そんなに難しくないです。http://netlog.jpn.org/r271-635/2007/07/ubuntusnmp.html そっけない書き方ですがわかりやすい。

 

 MUNINページにIPアドレスが出るのが嫌なので「/etc/hosts」にホストを追加します。localhostの書き方を参考にして「192.168.0.10 hogehoge」等と入れてください。

 

次は「/etc/munin/munin.conf」の編集。追加するマシン名が「hogehoge」の場合。

[hogehoge]
    address localhost
    use_node_name no

のようにします。アドレスがlocalhostなのがミソです。自ノードのmunin-nodeから対象マシンにアクセスしてるみたいなんですね。だからSNMP経由で見たいマシンの場合、アドレスはすべてlocalhostになります。

  • $ sudo munin-node-configure --snmpversion 1 --snmp hogehoge

としてSNMPを話しているか確認ができます。話しているとわかったら、

  • $ sudo munin-node-configure --snmpversion 1 --snmp hogehoge --shell >munin.sh

と「--shell」オプションを付けるとプラグイン設定のためのシェルスクリプトを自動で書いてくれます。マシンによってはプラグインが多すぎる事があるのでテキストエディタを使って各々欲しい機能以外を削除するといいでしょう。

  • $ sudo sh munin.sh

としてシェルを実行します。

「/etc/munin/plugin-conf.d/munin-node」の編集をします。

[snmp_*]
env.version 1
env.community public

とします。コミュニティ名は最初のほうで指定したコミュニティ名にします。そして最後に

  • $ sudo service munin-node restart

を実行するとあとは勝手に各マシンにSNMP経由で値を取りに行きます。

 

お疲れ様でした。