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

3 自定义告警脚本

概述

如果您对现有的发送警报的媒体类型不满意,还有另一种方法可以做到这一点。 您可以创建一个脚本,以您的方式处理通知。

自定义警报脚本在 Zabbix 服务器上执行。 这些脚本必须位于服务器配置文件 'AlertScriptsPath' 参数中指定的目录中。

以下是自定义警报脚本的示例:

#!/bin/bash
       
       to=$1
       subject=$2
       body=$3
       host=$4
       value=$5
       
       cat <<EOF | mail -s "$subject" "$to"
       $body
       
       Host: $host
       Value: $value
       EOF

Zabbix 检查已执行命令和脚本的退出代码。 任何不同于 0 的退出代码都被视为 命令执行 错误。 在这种情况下,Zabbix 将尝试重复失败的执行。

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

配置

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

  • 进入 告警 → 媒介类型
  • 点击 创建媒介类型

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

标红星的为必填字段。

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

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

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

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

如果配置了多个脚本媒体类型,这些脚本可能会被警报器进程并行处理。警报器进程的总数受服务器配置文件 'StartAlerters' 参数限制。

媒体类型测试

要测试已配置的脚本媒体类型:

  1. 在媒体类型列表 (/manual/config/notifications/media#overview) 中找到相关脚本。

  2. 单击列表最后一列中的 测试;测试表单将在弹出窗口中打开。 测试表单将包含与为脚本媒体类型配置的参数数量相同的参数。

  3. 如果需要,编辑脚本参数值。编辑仅影响测试过程;实际值不会更改。

  4. 单击 测试

测试已配置的脚本媒体类型时,{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE} 和用户宏将解析为其值,但与事件相关的宏(例如,{HOST.HOST}、{ITEM.LASTVALUE} 等)将不会解析,因为在测试期间没有相关事件可从中获取详细信息。请注意,{ALERT.SUBJECT} 和 {ALERT.MESSAGE} 宏内的宏也不会解析。例如,如果 {ALERT.SUBJECT} 的值由“问题:{EVENT.NAME}”组成,则 {EVENT.NAME} 宏将不会被解析。

用户媒介

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

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