2022 Zabbix中国峰会
2022 Zabbix中国峰会

11 外部检查

概述

外部检查是由Zabbix服务器通过运行shell脚本或二进制执行的检查。

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

监控项Key的语法是:

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

当:

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

如果你不想将任何参数传递给脚本,可以使用:

script[] 或者
       script

Zabbix服务器将查找定义为外部脚本的位置的目录(Zabbix服务器配置文件中的参数“ExternalScripts”),然后执行该命令。 该命令将以Zabbix用户执行,因此,任何访问权限或环境变量都应在包装器脚本中处理,并且该命令的权限应允许该用户执行它。只有指定目录中的命令才可执行。

不要过度使用外部检查! 由于每个脚本都需要Zabbix服务器启动fork进程,运行太多的脚本会降低Zabbix的性能。

用法示例

使用第一个参数“-h”执行脚本check_oracle.sh。 第二个参数将由IP地址或DNS名称替代,这取决于主机属性中的选择。

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

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

check_oracle.sh "-h" "192.168.1.4"

外部检查结果

检查的返回值与标准错误一起通过标准输出(从Zabbix 2.0起返回完整输出,并且从Zabbix 3.4开始,执行结果的退出代码也被checked)。

<note important>在标准错误输出的情况下,文本(字符、日志或文本信息类型)的监控项将被支持。 :::

如果没有找到请求的脚本,Zabbix服务器没有执行权限或执行退出代码不匹配0(零),将不支持监控项,并且将设置相应的错误消息。在超时的情况下,监控项将被标记为不受支持,将显示相应的错误消息,脚本的分支进程将被杀死。