Last Updated on 2021年7月4日 by かんりにん
snmpでのメモリ監視(物理メモリ、仮想メモリ) †
メモリの監視用プラグインは軒並みRAMとSwapのステータスを同時に取得するタイプばかりで
RAMとSwapの分離監視が出来ないため、監視は問題ないがグラフ出力には個人的に好ましくない印象。
そこで提供されているプラグインをカスタマイズし、RAMとSwapそれぞれの監視プラグインを用意。
※なので、単にプラグインを分離してそれぞれ別の値を取得しているだけだったりします…
1)物理メモリ監視/check_snmp_mem †
check_winmem.plをカスタマイズし、check_snmp_mem_ram.plとしてリネーム。
RAM(物理メモリ)の出力およびperfdata行を出力し、nagiosgraphへ読ませる。
スクリプト †
check_winmem.pl
↓
[リネーム後]
check_snmp_mem_ram.pl
- 使用例:
$ perl /home/user/src/plugin/check_winmem.pl 192.168.0.30 public 85 95 OK MEM: usage 11.86 perc - 124340 KBytes of 1048752 KBytes -w 85 -c 95
ログ †
nagiosgraph.logの出力情報を参照に。
Wed Dec 1 11:14:01 2010 insert.pl debug processdata data = [ '1291169626', 'adm', 'Memory Usage', 'OK MEM: usage 25.19 perc - 264192 KBytes of 1048752 KBytes -w 99 -c 100', 'perfdata=25.19;264192;1048752' ];
コンフィグ †
- コマンド定義
- /usr/local/nagios/etc/objects/commands_snmp.cfg
# check_snmp_mem.pl define command{ command_name check_snmp_mem command_line $USER1$/check_snmp_mem_ram.pl $HOSTADDRESS$ $USER7$ $ARG1$ $ARG2$ }
- /usr/local/nagios/etc/objects/commands_snmp.cfg
- サービス定義
- /usr/local/nagios/etc/nodes/adm.cfg(例)
# Define a service to check memory on the remote machine. define service{ use local-service,graphed-service ; Name of service template to use host_name adm service_description Memory Usage snmp[RAM] #check_command check_snmp_mem!99,20!100,30 check_command check_snmp_mem!99!100 #notifications_enabled 0 }
- /usr/local/nagios/etc/nodes/adm.cfg(例)
カスタマイズ †
そのままではグラフ化できないので、スクリプトの終わり部分に
nagiosgraph用にperfdataを出力する設定を追加する。
66c66 < print "CRITICAL MEM: usage $percuse perc - $usedsize1 $ unitused of $fullsize1 $unitfull -w $ARGV[2] -c $ARGV[3] | perfdata=$percuse;$usedsi ze1;$fullsize1\n"; --- > print "CRITICAL MEM: usage $percuse perc - $usedsize1 $ unitused of $fullsize1 $unitfull -w $ARGV[2] -c $ARGV[3] | RAM-perf=$percuse;$usedsize1;$fullsize1\n"; 70c70 < print "WARN MEM: usage $percuse perc - $usedsize1 $ u nitused of $fullsize1 $unitfull -w $ARGV[2] -c $ARGV[3] | perfdata=$percuse;$usedsize 1;$fullsize1\n"; --- > print "WARN MEM: usage $percuse perc - $usedsize1 $ u nitused of $fullsize1 $unitfull -w $ARGV[2] -c $ARGV[3] | RAM-perf=$percuse;$usedsize1 ;$fullsize1\n"; 75c75 < print "OK MEM: usage $percuse perc - $usedsize1 $ unitused of $fullsize1 $unitfull -w $ARGV[2] -c $ARGV[3] | perfdata=$percuse;$usedsize1;$fullsize1\n"; --- > print "OK MEM: usage $percuse perc - $usedsize1 $ unitused of $f ullsize1 $unitfull -w $ARGV[2] -c $ARGV[3] | RAM-perf=$percuse;$usedsize1;$fullsize1\n";
カスタマイズ後の動作テスト †
# perl /home/user/src/plugin/check_winmem.pl 192.168.0.30 public 85 95
OK MEM: usage 11.86 perc – 124340 KBytes of 1048752 KBytes -w 85 -c 95 | perfdata=11.86;124340;1048752
マップ †
- /usr/local/nagios/etc/nagiosgraph/map
# Service type: check_snmp_mem [RAM] # output: OK MEM: usage 25.19 perc - 264192 KBytes of 1048752 KBytes -w 99 -c 100 # perfdata: RAM-perf=25.19;264192;1048752 /perfdata:RAM-perf=([.\d]+);(\d+);(\d+)/ and push @s, [ 'memory usage RAM', [ 'Used', GAUGE, $2*1024 ], [ 'max', GAUGE, $3*1024 ]];
2)Swap監視/check_snmp_swap †
Swapに関してはメモリ監視のプラグインで実装しようとすると手間がかかる様子のため
ストレージ監視用のcheck_snmp_storageプラグインを転用。
もともとSwapのステータス取得が出来るので、ソースの書き換えは不要。
スクリプト †
check_snmp_storage.plを使用。
- 使用例:
# ./check_snmp_storage.pl -H 192.168.0.30 -C public -f -m ^Swap -T bu -w 20 -c 30 -f Swap Space: 9MBused/1024MB (1%) (<20MB) : OK | 'Swap_Space'=9MB;20;30;0;1024
ログ †
nagiosgraph.logの出力情報を参照に。
'1291188718', 'adm', 'Memory Usage snmp[Swap]', 'OK : Swap Space: 1%used(9MB/1024MB) : 20 %', 'Swap Space=9MB;204;307;0;1023'
コンフィグ †
- コマンド定義
- /usr/local/nagios/etc/objects/commands_snmp.cfg
# check_snmp_storage Swap define command{ command_name check_snmp_swap command_line $USER1$/check_snmp_storage -H $HOSTADDRESS$ -C $USER7$ -f -m $ARG1$ -T $ARG2$ -w $ARG3$ -c $ARG4$ }
- /usr/local/nagios/etc/objects/commands_snmp.cfg
- サービス定義
- /usr/local/nagios/etc/nodes/adm.cfg(例)
# Define a service to check memory on the remote machine. define service{ use local-service,graphed-service ; Name of service template to use host_name adm service_description Memory Usage snmp[Swap] check_command check_snmp_swap!^Swap!pu!20!30 #notifications_enabled 0 }
- /usr/local/nagios/etc/nodes/adm.cfg(例)
マップ †
グラフと同化してしまうが、閾値として設定したwarning、criticalのラインを
表示しておく。
- /usr/local/nagios/etc/nagiosgraph/map
# service_description: Memory Usage snmp[Swap] # output: OK : Swap Space: 1%used(9MB/1024MB) : 20 % # perfdata: Swap Space=9MB;204;307;0;1023 /perfdata:Swap Space=(\d+)MB;(\d+);(\d+);(\d+);(\d+)/ and push @s, [ 'memory usage SWAP', [ 'Used', GAUGE, $1*1048576 ], [ 'warning_line', GAUGE, $2*1048576 ], [ 'critical_line', GAUGE, $3*1048576 ], [ 'max', GAUGE, $5*1048576 ]];