如何在 Ubuntu 12.10 上使用 Python 创建 Nagios 插件
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
介绍
Python 是一种在 Linux 上默认可用的流行命令处理器。
我们之前已经介绍过如何在 Ubuntu 12.10 x64 上安装 Nagios 监控服务器。
这一次,我们将扩展这个想法,使用 Python 创建 Nagios 插件。
这些插件将在客户 VPS 上运行,并通过 NRPE 执行。
步骤 1 - 在客户 VPS 上安装 NRPE
apt-get install -y python nagios-nrpe-server useradd nrpe && update-rc.d nagios-nrpe-server defaults
步骤 2 - 创建你的 Python 脚本
最好将你的插件保存在与其他 Nagios 插件相同的目录中(例如 /usr/lib/nagios/plugins/)。
对于我们的示例,我们将创建一个脚本,通过调用 shell 中的 “df” 来检查当前磁盘使用情况,并在使用量超过 85% 时触发警报:
#!/usr/bin/python import os, sys used_space=os.popen("df -h / | grep -v Filesystem | awk '{print }'").readline().strip() if used_space "85%": print "CRITICAL - %s of disk space used." % used_space sys.exit(2) else: print "UKNOWN - %s of disk space used." % used_space sys.exit(3)
我们将保存这个脚本在 /usr/lib/nagios/plugins/usedspace.py 并使其可执行:
chmod +x /usr/lib/nagios/plugins/usedspace.py
整个 Nagios NRPE 插件的关键在于使用退出代码来触发警报。
你可以在脚本中引入你的逻辑水平,如果要触发警报(无论是 OK、WARNING、CRITICAL 还是 UNKNOWN),你需要指定一个退出代码。
参考以下 Nagios 退出代码:
Nagios 退出代码
退出代码 | 状态 |
---|---|
0 | OK |
1 | WARNING |
2 | CRITICAL |
3 | UNKNOWN |
步骤 3 - 将你的脚本添加到客户主机上的 NRPE 配置
删除原始的 /etc/nagios/nrpe.cfg 并添加以下行:
log_facility=daemon pid_file=/var/run/nagios/nrpe.pid server_port=5666 nrpe_user=nrpe nrpe_group=nrpe allowed_hosts=198.211.117.251 dont_blame_nrpe=1 debug=0 command_timeout=60 connection_timeout=300 include_dir=/etc/nagios/nrpe.d/ command[usedspace_python]=/usr/lib/nagios/plugins/usedspace.py
其中 198.211.117.251 是我们之前文章中的监控服务器。将这些值更改为你自己的值。
确保重新启动 Nagios NRPE 服务:
service nagios-nrpe-server restart
步骤 4 - 将你的新命令添加到 Nagios 监控服务器上的 Nagios 检查中
在 /etc/nagios/objects/commands.cfg 中定义新命令:
define command{ command_name usedspace_python command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c usedspace_python }
如你所见,它使用 NRPE 对端口 5666 进行 TCP 连接,并运行命令 ‘usedspace_python’,我们在远程主机的 /etc/nagios/nrpe.cfg 中定义了这个命令。
将此检查添加到客户 VPS 的 Nagios 配置文件中。
对于我们的示例,我们将监视一个名为 UbuntuDroplet 的服务器,并编辑 /etc/nagios/servers/UbuntuDroplet.cfg:
define service { use generic-service host_name UbuntuDroplet service_description Custom Disk Checker In Python check_command usedspace_python }
重新启动 Nagios:
service nagios restart
验证新的检查是否正常工作:
完成!