如何编写 Nagios 插件
很早就用上了redis,当时没有找到nagios监控redis的插件,好在redis也算稳定,基本没出过什么问题。
最近在网上找,还是没找到,准备自己写个了。过两天再发上来,其实nagios plugin也很简单,只要注意一下程序退出的状态码就行了。
Nagios 每次在查询一个服务的状态时,产生一个子进程,并且它使用来自该命令的输出和退出代码来确定具体的状态。退出状态代码的含义如下所示:
- OK —退出代码 0—表示服务正常地工作。
- WARNING —退出代码 1—表示服务处于警告状态。
- CRITICAL —退出代码 2—表示服务处于危险状态。
- UNKNOWN —退出代码 3—表示服务处于未知状态。
最后一种状态通常表示该插件无法确定服务的状态。例如,可能出现了内部错误。
下面提供了一个 Python 示例脚本,用于检查 UNIX® 平均负载。它假定 2.0 以上的级别表示警告状态,而 5.0 以上的级别表示危险状态。这些值都采用了硬编码的方式,并且始终使用最近一分钟的平均负载。
清单 5. Python 插件—示例工作插件
#!/usr/bin/env python
import os,sys
(d1, d2, d3) = os.getloadavg()
if d1 >= 5.0:
print “GETLOADAVG CRITICAL: Load average is %.2f” % (d1)
sys.exit(2)
elif d1 >= 2.0:
print “GETLOADAVG WARNING: Load average is %.2f” % (d1)
sys.exit(1)
else:
print “GETLOADAVG OK: Load average is %.2f” % (d1)
sys.exit(0)
参考: http://www.ibm.com/developerworks/cn/aix/library/au-nagios/index.html