11 外部检查

概览

外部检查是由Zabbix server通过运行shell脚本或二进制文件执行的检查。然而,当hosts由Zabbix proxy监控时,外部检查由proxy执行。

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

监控项键的语法是:

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

其中:

ARGUMENT DEFINITION
script shell脚本或二进制文件的名称。
parameter(s) 可选的命令行参数。

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

script[] 或
       script

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

不要过度使用外部检查,因为每个脚本都需要Zabbix server/proxy启动一个fork进程,运行许多脚本可能会显著降低Zabbix的性能。

使用示例

执行脚本 check_oracle.sh,第一个参数为 '-h'。第二个参数将被IP地址或DNS名称替换,具体取决于在主机属性中的选择。

check_oracle.sh["-h","{HOST.CONN}"]

假设主机配置为使用IP地址,Zabbix server/proxy将执行:

check_oracle.sh '-h' '192.168.1.4'

外部检查结果

外部检查的返回值是标准输出与标准错误的组合,由检查生成。

返回文本(字符、日志或文本类型信息)的监控项在标准错误输出的情况下不会变为不受支持。

返回值的大小限制为16MB(包括被截断的尾部空白);数据库限制同样适用。

如果请求的脚本未找到,或者Zabbix server/proxy没有权限执行它,监控项将变为不受支持,并显示相应的错误信息。

在超时的情况下,监控项将变为不受支持,显示相应的错误信息,并终止为脚本分叉的进程。