3 自定义告警脚本

概述

如果您对现有的用于发送警报的媒介类型不满意,还有另一种方式可以实现该功能。
您可以create一个脚本,以您自己的方式处理通知。

自定义警报脚本在Zabbix server上执行。
这些脚本必须位于服务器配置中file 告警脚本路径参数指定的目录中。

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

#!/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不同的退出码都将被视为command execution错误。
在这种情况下,Zabbix将尝试重复执行失败的操作。

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

配置

要将自定义告警脚本配置为一种媒体类型:

  1. 转到 告警 → 媒体类型
  2. 单击 创建媒体类型

媒体类型 选项卡包含媒体类型的通用属性:

所有必填输入字段都用红色星号标记。

以下参数是脚本媒体类型特有的:

Parameter Description
Script name 输入脚本文件的名称(例如,notification.sh)。该文件位于 AlertScriptsPath 服务器配置参数指定的目录中。
Script parameters 添加可选的脚本参数,这些参数将按定义顺序作为命令行参数传递给脚本。

脚本参数支持 {ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE} 宏,以及通知中支持的所有 用户宏

有关如何配置默认消息和告警处理选项的详细信息,请参见 通用媒体类型参数

即使告警脚本不使用默认消息,仍然必须定义此媒体类型所使用的操作类型的消息模板。 否则,将不会发送通知。

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

测试

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

  1. 概述中找到对应的脚本。

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

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

  4. 点击Test按钮。

测试已配置的脚本媒介类型时,{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}和用户宏将解析为其值, 但与事件相关的宏(如{HOST.HOST}、{ITEM.LASTVALUE}等)不会解析,因为在测试过程中没有相关事件可供get获取详细信息。 请注意,{ALERT.SUBJECT}和{ALERT.MESSAGE}宏中的宏也不会被解析。 例如,如果{ALERT.SUBJECT}的值为"Problem: {EVENT.NAME}",则{EVENT.NAME}宏不会被解析。

用户媒介

配置好媒介类型后,转到 Users → Users 部分,通过将此媒介类型分配给用户来编辑用户配置文件。 适用于所有媒介类型的用户媒介设置步骤,请参见 Media types 页面。

请注意,在定义用户媒介时,Send to 字段不能为空。 如果警报脚本中未使用此字段,请输入任意支持字符的组合,以绕过校验要求。