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

11 外部检查

概述

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

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

监控项键值的语法:

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

Where:

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

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

script[] or
       script

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

不要过度使用外部检查! 由于每个脚本都需要Zabbix server启动一个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开始,返回完整输出,并去掉了末尾的空格)

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

如果没有找到所请求的脚本,或者Zabbix server没有执行该脚本的权限,则不支持该监控项,并将设置相应的错误消息。在超时的情况下,监控项也将被标记为不受支持,并显示相应的错误消息,脚本的分支进程将被杀死。