NagiosからGangliaのMetricsを利用する方法
NagiosもGangliaも単体でモニタリングを行うことができますが、両方を役割毎に使い分けることも可能です。
その場合Gangliaでメトリクス情報を収集し、Nagiosでアラート監視というパターンが多いようです。
1. pluginの準備
gangliaのリポジトリにベースとなるスクリプトがあるので、まずはそれをダウンロードしてきます
monitor-core/check_ganglia.py at master · ganglia/monitor-core · GitHub
このスクリプトは閾値が低い場合に正常に検知できないので、Outputの処理部分を変更します
. . . 89 ### For Output 90 #if value >= critical: 91 # print "CHECKGANGLIA CRITICAL: %s is %.2f" % (metric, value) 92 # sys.exit(2) 93 #elif value >= warning: 94 # print "CHECKGANGLIA WARNING: %s is %.2f" % (metric, value) 95 # sys.exit(1) 96 #else: 97 # print "CHECKGANGLIA OK: %s is %.2f" % (metric, value) 98 # sys.exit(0) 99 100 # check upperlimit 101 if critical > warning: 102 if value >= critical: 103 print "CHECKGANGLIA CRITICAL: %s is %.2f" % (metric, value) 104 sys.exit(2) 105 elif value >= warning: 106 print "CHECKGANGLIA WARNING: %s is %.2f" % (metric, value) 107 sys.exit(1) 108 else: 109 print "CHECKGANGLIA OK: %s is %.2f" % (metric, value) 110 sys.exit(0) 111 # check lowerlimit 112 else: 113 if critical >= value: 114 print "CHECKGANGLIA CRITICAL: %s is %.2f" % (metric, value) 115 sys.exit(2) 116 elif warning >= value: 117 print "CHECKGANGLIA WARNING: %s is %.2f" % (metric, value) 118 sys.exit(1) 119 else: 120 print "CHECKGANGLIA OK: %s is %.2f" % (metric, value) 121 sys.exit(0)
修正が終わったらnagiosのプラグインファイルに配置し、実行権限を付与します
cp -ip check_ganglia.py /usr/lib/nagios/plugins/check_ganglia cd /usr/lib/nagios/plugins chmod +x check_ganglia ls -l check_ganglia -rwxr-xr-x 1 root root 3269 Apr 12 14:47 check_gangli
2. コマンドエイリアスの作成
cd /etc/nagios-plugins/config vi check_ganglia.cfg =================================================================== # alias command for check_ganglia python file define command { command_name check_ganglia command_line /usr/lib/nagios/plugins/check_ganglia -h $HOSTADDRESS$ -m $ARG1$ -w $ARG2$ -c $ARG3$ } ====================================================================
3. 上記のエイリアスを実行するファイルを作成する
cd /etc/nagios3/conf.d vi ${監視対象サーバ名}.cfg =========================================================== # Define Host for monitoring define host{ use generic-host host_name server1 alias server1 address ${IP_ADDRESS of MONITORING_SERVER} } # Ping check define service{ use generic-service host_name server1 service_description PING check_command check_ping!100.0,20%!500.0,60% } # for ganglia define service { use generic-service host_name server1 service_description disk_free check_command check_ganglia!disk_free!3!1 } ===========================================================
- 今回はload_oneメトリクスだけ監視する項目に加えました
- 他にも追加したい場合は同じ書式で追加していけばOKです
- 実際に取得するMetrics値は以下です
telnet localhost 8649 | grep 'disk_free' <METRIC NAME="disk_free" VAL="9333.479" TYPE="double" UNITS="GB" TN="45" TMAX="180" DMAX="0" SLOPE="both">
-
- この設定では、3GBを下回るとWarn, 1GBを下回るとCriticalのアラートが飛ぶようになっています
実際のNagiosの画面