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

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'

外部检查结果

外部检查的返回值是标准输出以及检查产生的标准错误。

如果出现标准错误输出,则返回文本(字符、日志或文本类型的信息)的项目不会变为不受支持。

返回值限制为 16MB(包括被截断的尾随空格);数据库限制 也适用。

如果未找到请求的脚本或 Zabbix 服务器没有执行该脚本的权限,则该项目将变为不受支持,并会显示相应的错误消息。

如果发生超时,则该项目将变为不受支持,将显示相应的错误消息,并且为该脚本分叉的进程将终止。