我制作了一个外部脚本(用 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 包装器。
答案1
您的服务器启用了 SELinux 吗?我在使用 Zabbix 时遇到过几次类似的情况。
如果getenforce
返回enabled
,那么就该查看/var/log/audit
目录日志并查看是什么特别阻止了 Zabbix 运行脚本。