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