如何在CentOS6上使用PHP创建Nagios插件
状态: 已弃用
本文介绍了不再受支持的 CentOS 版本。 如果您目前正在运行运行 CentOS 6 的服务器,我们强烈建议您升级或迁移到受支持的 CentOS 版本。
原因: CentOS 6 已于 2020 年 11 月 30 日结束生命周期 (EOL) and no longer receives security patches or updates. For this reason, this guide is no longer maintained.
请参阅:
本指南可能仍可用作参考,但可能不适用于其他 CentOS 版本。 如果可用,我们强烈建议使用为您使用的 CentOS 版本编写的指南。
介绍
PHP 是一种流行的编程语言,可让您快速创建脚本并安装其他库。
我们之前已经介绍过 如何在 CentOS 6 x64 上安装 Nagios 监控服务器。 这一次,我们将扩展这个想法并使用 PHP 创建 Nagios 插件。 这些插件将在客户端 VPS 上运行,并通过 NRPE 执行。
第 1 步 - 在客户端 VPS 上安装 RPMForge 存储库和 NRPE
rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm yum -y install php nagios-nrpe useradd nrpe && chkconfig nrpe on
第 2 步 - 创建您的 PHP 脚本
将您的插件与其他 Nagios 插件(例如 /usr/lib64/nagios/plugins/)保存在同一目录中是个好主意。
对于我们的示例,我们将创建一个脚本,通过从 shell 调用“df”来检查当前磁盘使用情况,并在超过 85% used 时发出警报:
#!/usr/bin/php <?php $used_space=chop(shell_exec("df -h / | grep -v Filesystem | awk '{print $5}'")); switch ($used_space) { case "$used_space" < "85%": print "OK - $used_space of disk space used."; exit(0); case "$used_space" == "85%": print "WARNING - $used_space of disk space used."; exit(1); case $used_space > "85%": print "CRITICAL - $used_space of disk space used."; exit(2); default: print "UNKNOWN - $used_space of disk space used."; exit(3); } ?>
我们将此脚本保存在 /usr/lib64/nagios/plugins/usedspace.php 中并使其可执行:
chmod +x /usr/lib64/nagios/plugins/usedspace.php
整个 Nagios NRPE 插件归结为使用退出代码来触发警报。
您将您的逻辑级别引入脚本,并且如果您想触发警报(无论是 OK、WARNING、CRITICAL 还是 UNKNOWN) - 您指定一个退出代码。
请参阅以下 Nagios 退出代码:
Nagios 退出代码
退出代码 | 地位 |
---|---|
0 | 好的 |
1 | 警告 |
2 | 危急 |
3 | 未知 |
第 3 步 - 将您的脚本添加到客户端主机上的 NRPE 配置
删除原始的 /etc/nagios/nrpe.cfg 并添加以下行:
log_facility=daemon pid_file=/var/run/nrpe/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/nrpe.d/ command[usedspace_php]=/usr/lib64/nagios/plugins/usedspace.php
其中 198.211.117.251 是我们之前文章中的监控服务器。 将这些更改为您自己的值。
确保重启 Nagios NRPE 服务:
service nrpe restart
第 4 步 - 将您的新命令添加到 Nagios 监控服务器上的 Nagios 检查
在 /etc/nagios/objects/commands.cfg 中定义新命令
define command{ command_name usedspace_php command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c usedspace_php }
如您所见,它使用 NRPE 与端口 5666 建立 TCP 连接并运行命令 'usedspace_php',我们在该远程主机上的 /etc/nagios/nrpe.cfg 中定义了该命令。
将此检查添加到客户端 VPS 的 Nagios 配置文件中。
对于我们的示例,我们将监控一个名为 CentOSDroplet 的服务器并编辑 /etc/nagios/servers/CentOSDroplet.cfg
define service { use generic-service host_name CentOSDroplet service_description Custom Disk Checker In PHP check_command usedspace_php }
重启 Nagios:
service nagios restart
验证新检查是否有效:
你们都完成了!