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

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。 点击 创建媒介类型

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

所有必填输入字段均以红色星号标记。

以下参数是脚本媒介类型的特定参数:

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

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

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

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

如果配置了多个脚本媒介类型,这些脚本可能会由警报进程并行处理。 警报进程的总数受服务器配置参数 file 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} 宏将不会解析。

用户媒介

媒体类型配置完成后,请转至 用户 → 用户 部分,并通过向用户分配此媒体类型来编辑用户资料 file。设置用户媒体的步骤对于所有媒体类型都是通用的,相关说明请参阅 用户媒介 页面。

请注意,在定义用户媒体时,发送到 字段不能为空。如果此字段在告警脚本中未被使用,请输入任意支持的字符组合以绕过验证要求。