3 自定义告警脚本

概述

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

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

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

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

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

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

配置

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

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

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

3 自定义告警脚本 - 图1

标红星的为必填字段。

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

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

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

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

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

Media type testing

To test a configured script media type:

  • Locate the relevant script in the list of media types.
  • Click on Test in the last column of the list (a testing window will open).
  • Edit the script parameter values, if needed (editing affects the test procedure only, the actual values will not be changed).
  • Click on Test.

3 自定义告警脚本 - 图2

用户媒介

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

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