Nagios Exchange 是另一个获取 Nagios 插件的好地方。但是对于我们的 Ganglia 插件,只要从 Ganglia 和 Nagios,第 1 部分:用 Ganglia 监视企业集群 中下载的源代码中查找。假设您将源代码解压到 /tmp 目录中,剩下的只需要复制 contrib 目录中的 check_ganglia.py 脚本即可:
cp /tmp/ganglia-3.1.1/contrib/check_ganglia.py /usr/local/nagios/libexec/check_ganglia 是一个很棒的 Python 脚本,可以运行于 gmetad 运行的服务器上(在我的示例中是 Nagios 运行的管理服务器)。让我们在端口 8649 上查询 localhost。使用这种方法,您可以通过远程命令扩展网络通讯:可以使用 Ganglia 的扩展技术实现!
如果运行 telnet localhost 8649,您将看到从节点收集的数据中生成大量输出(假设按照第 1 部分安装了 Ganglia 并能正常运行)。让我们监视一些 Ganglia 提供的内容。
进入 /var/lib/ganglia/rrds 目录,您可以看到每个主机的度量指标。生成了易于查看的图形,您可以一直分析指标。我们将度量 load_one 和 disk_free,由于在第 1 部分中我们启用了 IPMI 温度度量,我们将同样添加该度量。
创建 /usr/local/nagios/etc/dallas/ganglia-services.cfg 文件并添加服务:
define servicegroup { servicegroup_name ganglia-metrics alias Ganglia Metrics } define command { command_name check_ganglia command_line $USER1$/check_ganglia.py -h $HOSTNAME$ -m $ARG1$ -w $ARG2$ -c $ARG3$ } define service { use generic-service name ganglia-service hostgroup_name dallas-cloud-servers service_groups ganglia-metrics notifications_enabled 0 } define service { use ganglia-service service_description load_one check_command check_ganglia!load_one!4!5 } define service { use ganglia-service service_description ambient_temp check_command check_ganglia!AmbientTemp!20!30 } define service { use ganglia-service service_description disk_free check_command check_ganglia!disk_free!10!5 }重启 Nagios 时,现在可以根据 Ganglia 指标发出警告!
提醒:check_ganglia.py 命令仅在阈值过高时发出警告。如果希望在阈值过低时发出警告(在 disk_free 中是这样),则需要修改代码。我更改了文件的最后部分,如下所示:
if critical > warning: if value >= critical: print "CHECKGANGLIA CRITICAL: %s is %.2f" % (metric, value) sys.exit(2) elif value >= warning: print "CHECKGANGLIA WARNING: %s is %.2f" % (metric, value) sys.exit(1) else: print "CHECKGANGLIA OK: %s is %.2f" % (metric, value) sys.exit(0) else: if critical >= value: print "CHECKGANGLIA CRITICAL: %s is %.2f" % (metric, value) sys.exit(2) elif warning >= value: print "CHECKGANGLIA WARNING: %s is %.2f" % (metric, value) sys.exit(1) else: print "CHECKGANGLIA OK: %s is %.2f" % (metric, value) sys.exit(0)现在重新加载 Nagios:
service nagios restart
如果一切正常,您应该看到 Ganglia 数据现在已经在 Nagios 的监视之下!
图 4. 受 Nagios 监视的 Ganglia 数据
结合使用 Ganglia 和 Nagios,您可以监视任何内容。您可以控制整个云!