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 没有执行该脚本的权限,则该监控项将变为不支持,并显示相应的错误消息。

如果发生超时,该监控项将变为不支持,并显示相应的错误消息,同时为该脚本派生的进程将被终止。