脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

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の画面

f:id:portaltan:20160412151052p:plain