我制作了一个外部脚本(用 Perl 编写的 snmp_max_io)。当使用 IP 地址运行时,它会将输入记录到 syslog 并打印单个 64 位数值并将退出值设置为 0。
示例输出:
916418801
我已将它添加到 /usr/lib/zabbix/externalscripts 中,我有一个不同的脚本,它可以工作。
我已经配置了一个项目:
- 类型:外部检查
- 键:snmp_max_io["{HOST.CONN}"]
- 主机接口:ipnr 10050
- 信息类型:数字
- 数据类型:十进制
- 单位:b
一段时间后,Zabbix 将状态更改为:“不支持”和“接收到的值 [] 不是数字”。
当以 root 或 zabbix 身份在命令行上运行时,该命令可以正常工作。
但是 zabbix 服务器永远不会运行该命令(没有记录任何内容)。
我如何找出为什么 Zabbix 认为该命令返回 [] 而它显然从未运行它?
解决方案在评论中:脚本必须是 bash 脚本。所以一个 perl 脚本必须有一个 bash 包装器。
您的服务器中是否启用了 SELinux?在使用 Zabbix 时,我曾多次在类似的情况下被它咬过。
如果
getenforce
返回enabled
给你,那么是时候查看/var/log/audit
目录日志,看看是什么特别阻止了 Zabbix 运行脚本。