这是原厂英文文档的翻译页面. 欢迎帮助我们 完善文档.

3 自定义告警脚本

概述

如果当前的告警媒介类型无法满足您的要求,您可以创建一个自定义的脚本对告警通知进行处理。

告警脚本在Zabbix服务器上执行。这些脚本放置于服务器配置文件 configuration file中定义的 AlertScriptsPath目录下。

以下是一个自定义告警脚本的示例:

#!/bin/bash
       
       to=$1
       subject=$2
       body=$3
       
       cat <<EOF | mail -s "$subject" "$to"
       $body
       EOF

从3.4版本开始,Zabbix会检查执行的命令和脚本的退出代码。任何不为0 的退出代码都将被视为command execution 错误. 在这种情况下,Zabbix会尝试重复执行。

环境变量不会为脚本保留或创建,因此它们应该被明确处理。

配置

配置自定义告警脚本为媒介类型:

  • 进入 管理 → 媒介类型
  • 点击 创建媒介类型

媒介类型 页包含一些通用的媒介类型属性如下:

标红星的为必填字段。

下列参数只适用于脚本媒介类型:

参数 说明
脚本名称 输入脚本的名称
脚本参数 添加脚本的命令行参数
脚本参数中支持{ALERT.SENDTO}, {ALERT.SUBJECT}和 {ALERT.MESSAGE}
从Zabbix 3.0版本开始,支持自定义脚本参数.

关于如何配置默认消息及告警处理的详细内容,请参见 通用媒介类型参数

即使告警脚本没有使用默认消息,此媒介类型使用的操作类型的消息模板仍必须定义,否则通知将无法发送。

从Zabbix 3.4.0开始实现了多个告警媒介并行处理,所以需要注意的是,当配置了多个告警脚本时,这些脚本是可以被告警进程并行处理的。告警进程的进程数可以通过Zabbix Server的配置项StartAlerters参数进行限制。

用户媒介

配置完媒介类型后,需进入管理 → 用户为用户配置相应的媒介。配置用户媒介的步骤和配置其它媒介类型的方式类似,可以参见 媒介类型 页.

注意,在定义用户媒介的时候,Send to 字段不能为空。如果该字段在告警脚本中不会被使用,可以输入任意支持的字段以跳过该校验。