お仕事で運用しているPalo AltoのCPU使用率を時系列で見たいため、MRTGをインストールして見ることにした。
前回の基本インストールで webサーバはインストール済み。snmp関連とMRTGのインストールを実行しました。(横着して –y オプションを指定しているが、確認しながらインストールするのだったら無しが吉。)
# yum -y install net-snmp net-snmp-utils mrtg |
snmp関連の設定は共通の設定を使い回しているので割愛します。
サービスの起動とシステム起動時に自動起動するよう設定を行います。(とうか、ターゲットが今回は自機ではないのでsnmpdは動いていなくてもいいんだけど。そのうち自機もMRTGで値を表示する予定なので、事前準備ということで。)
# serive snmpd start Starting snmpd: [ OK ] # chkconfig snmpd on |
動作確認 (testcomはsnmpd.confで設定したコミュニティ名)
だらだらとMIBの表示されているので問題はなさそうです。
# snmpwalk -v2c -c testcom 192.168.17.1 system |
mrtg.cfg の作成ですが cfgmaker ではなく直接作成してみました。
表示・集計用のファイルですが、デフォルトですとそれぞれ
/var/www/mrtg
/var/lib/mrtg
に作成されます。
今は1ファイルだけなのでデフォルト設定でもよいのですが、将来(あるのか?)色々とMRTGで表示をすることを鑑み、なんたらmrtg の下にディレクトリを作成し保存することにしました。Targetの下に記述してあるDirectoryなんちゃらで保存先を指定します。
HtmlDir: /var/www/mrtg Options[_]: growright, bits
|
さて、これでmrtgを 3回起動すれば(過去ファイルを処理するため初回は 2回目実行分まで警告が出るため) ok! と思ったのですがエラーで撃沈。
SNMP Error: |
どうもsnmpgetでの情報取得に失敗しているようです。snmpwalkは値が返ってくるのに、なんでsnmpgetで失敗するのか見当が付きません。試しに別の機器にsnmpwalkとsnmpgetを実行してみると問題なく値が返ってくる。
色々調べましたが、数時間で解決はしませんでした...
2016/06/08 16:52 追記
Tergetの記述で ipアドレス:::::2 とすれば問題が解決することが判明。
もう少々 MRTG の記述を勉強しないと駄目だな。→ ちょっとしました(2016/06/09)。
以下、やっつけスクリプトの手順を書いておく。snmpで値が取得できず、スクリプトを書く必要に迫られるケースもあるはずなので。
とはいうものの、
- 第1パラメータ値
- 第2パラメータ値
- 稼働時間
- ホスト名
を返してあげればいいらしいことが分かりました。snmpwalkで値が返ってくるので、スクリプトを作成することにしました。ファイル名はfw01-cpu.shとし、/etc/mrtg 配下に置くことにします。
#!/bin/sh LANG=C CPU1=`snmpwalk -v2c -c testcom 192.168.17.1 .1.3.6.1.2.1.25.3.3.1.2.1 | cut -d " " -f 4` echo "$CPU1" |
mrtg.cfg の Targetなんちゃら行を次のように書き換えました。
Target [fw01_cpu]: .1.3.6.1.2.1.25.3.3.1.2.1&.1.3.6.1.2.1.25.3.3.1.2.2:testcom@192.168.17.1: |
Target [fw01_cpu]: `/etc/mrtg/fw01-cpu.sh` |
あとは mrtg.cfgを 3回実行し、crontabに5分ごとに実行するよう設定をすれば完成です。(実際にはインストール時に /etc/cron.d/mrtg が作成されているので、何もしなくてokだったりますが。)
indexmaker を使って監視対象機器ごとのHTMLファイルにリンクを張ったindex.htmlを作ってもよいのですが、自分は htmlエディタを使ってindex.htmlファイルを作成しました。
随分前に使ったときは、漢字は eucでないと上手く動かない気がしたんですが、いつも間にかそんな制約もなくなったようです。yum でサクッと入れられるし、随分便利になってきましたね。configure; make~ していた頃が懐かしい。