如何在 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 $5}'").readline().strip()
if used_space < "85%":
print "OK - %s of disk space used." % used_space
sys.exit(0)
elif used_space == "85%":
print "WARNING - %s of disk space used." % used_space
sys.exit(1)
elif 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 插件归结为使用退出代码来触发警报。
您将您的逻辑级别引入脚本,如果您想要触发警报(无论是正常、警告、严重还是未知),您可以指定一个退出代码。
请参考以下 Nagios 退出代码:
Nagios 退出代码
Exit Code | Status |
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
验证新检查是否有效: