Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

11 外部检查

概述

外部检查是 Zabbix server 通过运行shell脚本或二进制执行的检查。但是当主机被 Zabbix proxy 接管时,外部检查则由 Zabbix proxy 执行。

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

监控项键的语法是:

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

参数:

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

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

script[] or script

Zabbix Server 将查找外部脚本位置的目录(Zabbix Server配置文件中的“ExternalScripts”参数定义的位置)并执行该命令。该命令将以Zabbix Server服务运行的用户身份执行script,任何访问权限或环境变量都应该在封装在脚本中处理,该命令的权限应该只允许该用户在指定的目录下执行它。

不要过度使用外部检查!因为每个脚本都需要Zabbix Server启动一个fork出来的进程,所以运行很多脚本会大幅度的降低Zabbix的性能。

用法示例

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

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

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

check_oracle.sh '-h' '192.168.1.4'

外部检查结果

检查的返回值是标准输出和标准错误(从zabbix 2.0开始,返回完整输出,并去掉了末尾的空格)。

在标准错误输出的情况下,文本(字符、日志或文本类型的信息)项将不会转变为不被支持的监控项状态。

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