harumaki.net

インフラ屋の覚書や、ラーメン食べある記とか。

nagios​/plugin​/SNMP​/mem監視

   


&topicpath;

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/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
      }

カスタマイズ

そのままではグラフ化できないので、スクリプトの終わり部分に
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;$usedsi
ze1;$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/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
      }

マップ

グラフと同化してしまうが、閾値として設定した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 ]];

Nagios統合監視[実践]リファレンス (Software Design plus)
株式会社エクストランス 佐藤 省吾 Team-Nagios
技術評論社
売り上げランキング: 398,071
マスタリングTCP/IP SNMP編
マスタリングTCP/IP SNMP編

posted with amazlet at 13.05.31
緒方 亮 矢野 ミチル 鈴木 暢
オーム社
売り上げランキング: 189,419

 - GNU/Linux, infra, nagios, 運用