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 服务器没有执行该脚本的权限,则该项目将变为不受支持,并会显示相应的错误消息。
如果发生超时,则该项目将变为不受支持,将显示相应的错误消息,并且为该脚本分叉的进程将终止。