7 外部检查
概述
外部检查是由 Zabbix 服务器通过运行 shell 脚本或二进制文件执行的检查。不过,当主机由 Zabbix proxy 监控时,外部检查由 proxy 执行。
外部检查不要求被监控的主机上运行任何 agent。
监控项键值的语法为:
script[<parameter1>,<parameter2>,...]
其中:
| ARGUMENT | DEFINITION |
|---|---|
| script | shell 脚本或二进制文件的名称。 |
| parameter(s) | 可选的命令行参数。 |
如果不想向脚本传递任何参数,可以使用:
script[] 或
script
Zabbix 服务器或 proxy 将搜索为外部脚本指定的目录并执行该命令(请参见 Zabbix 服务器/proxy 配置文件中的 ExternalScripts 参数)。
该命令将以与 Zabbix 服务器/proxy 相同的用户身份执行,因此如有必要,任何访问权限或环境变量都应在包装脚本中处理。
该命令的权限也应允许该用户执行它。
只有指定目录中的命令可供执行。
不要过度使用外部检查,因为每个脚本都需要由 Zabbix 服务器/proxy 启动一个 fork 进程,运行大量脚本会显著降低 Zabbix 的性能。
使用示例
执行带有第一个参数“-h”的脚本 check_oracle.sh。第二个参数将被替换为IP地址或DNS名称,具体取决于主机属性中的选择。
check_oracle.sh["-h","{HOST.CONN}"]
假设主机被配置为使用IP地址,Zabbix server/proxy将执行以下命令:
check_oracle.sh '-h' '192.168.1.4'
外部检查结果
外部检查的返回值是该检查产生的标准输出以及标准错误输出。
若一个监控项返回的是文本(字符、日志或文本类型的信息),即使出现标准错误输出,该项也不会变为不支持状态。
返回值限制为16MB(包含被截断的尾随空白字符);同时适用文本数据限制。
如果请求的脚本未找到,或者Zabbix server/proxy没有权限execute该脚本,则对应的监控项将变为不支持状态,并显示相应的错误信息。
若发生超时,则对应的监控项将变为不支持状态,显示相应的错误信息,并终止为执行该脚本而创建的进程。