11 外部检查

概述

外部检查是由Zabbix server通过running a shell script或二进制文件执行的检查。然而,当主机被Zabbix proxy监控时,外部检查将由proxy执行。

外部检查不需要在被监控的一个主机上运行任何agent。

监控项键的语法为:

script[<parameter1>,<parameter2>,...]

其中:

参数 定义
script Shell脚本或二进制文件的名称。
参数 可选的命令行参数。

如果您不想向脚本传递任何参数,可以使用:

script[] 或
       script

Zabbix server或proxy将在指定的外部脚本目录中搜索脚本并execute命令(参见Zabbix 外部脚本/外部脚本配置文件中的ExternalScripts参数)。 该命令将以与Zabbix server/proxy相同的用户身份执行,因此如有必要,应在包装脚本中处理任何访问权限或环境变量。 命令的权限也应允许该用户execute。 只有指定目录中的命令才可用于执行。

请勿过度使用外部检查,因为每个脚本都需要由Zabbix server/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该脚本,则对应的监控项将变为不支持状态,并显示相应的错误信息。

若发生超时,则对应的监控项将变为不支持状态,显示相应的错误信息,并终止为执行该脚本而创建的进程。