Nagiosのプラグインで、データ転送速度など、変化量・差分を監視するには、プラグインでどこかファイルに監視結果を保存しておいて比較するという手が使えると2つ前のエントリ書きましたが、 check_snmpでもそれがサポートされていたので試してみました。恥ずかしながら知りませんでした。
check_snmpの「—rate」というオプションがそれ。
--rate
Enable rate calculation. See 'Rate Calculation' below
--rate-multiplier
Converts rate per second. For example, set to 60 to convert to per minute
Rate Calculation:
In many places, SNMP returns counters that are only meaningful when
calculating the counter difference since the last check. check_snmp
saves the last state information in a file so that the rate per second
can be calculated. Use the --rate option to save state information.
On the first run, there will be no prior state - this will return with OK.
The state is uniquely determined by the arguments to the plugin, so
changing the arguments will create a new state file.
さっそくこれを使って、とあるサーバのトラフィックを確認してみます。Byteをbitに直すため —rate-multiplier に 8 を指定しています
$ ./check_snmp -H 192.168.x.x -C community -P 2c -o ifHCOutOctets.3 --rate-multiplier 8 --rate -w 80000000 -c 90000000
No previous data to calculate rate - assume okay
初回なのでこのようなメッセージがでます。exitコードは「0」でOKとなります
つぎに適当に間隔を置いて同じコマンドを実行
$ ./check_snmp -H 192.168.x.x -C community -P 2c -o ifHCOutOctets.3 --rate-multiplier 8 --rate -w 80000000 -c 90000000
SNMP RATE OK - 71677347.53 | IF-MIB::ifHCOutOctets.3=71677347.53
「SNMP RATE OK - 71677347.53」、だいたい70Mbpsぐらいですが、閾値よりも低いのでOKとなりました。
閾値を変更してもう一度、オプションを変えると以前のデータは使わなくなるようです
$ ./check_snmp -H 192.168.x.x -C community -P 2c -o ifHCOutOctets.3 --rate-multiplier 8 --rate -w 70000000 -c 90000000
No previous data to calculate rate - assume okay
$ sleep 10 && ./check_snmp -H 192.168.x.x -C community -P 2c -o ifHCOutOctets.3 --rate-multiplier 8 --rate -w 70000000 -c 90000000
SNMP RATE WARNING - *77539599.53* | IF-MIB::ifHCOutOctets.3=77539599.53
WARNINGになりました。
なお、ファイルはこのサーバの場合「/usr/local/nagios/var/check_snmp」以下に保存されてました。これはnagiosのビルド時に決まるようです。
普通に便利ですね。
技術評論社
売り上げランキング: 236,015
↑リファレンス的に使える良本です