3 自定义告警脚本

概览

如果您对现有的发送警报的媒体类型不满意,有一种替代方法可以实现。 您可以创建一个脚本来按照您的方式处理通知。

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

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

```bash #!/bin/bash

to=$1 subject=$2 body=$3 host=$4 value=$5

cat <<EOF | mail -s "$subject" "$to" $body

Host: $host Value: $value EOF ```::: noteimportant Zabbix会检查执行的命令和脚本的退出代码。 任何不同于0的退出代码,都被视为一个command execution错误。 在这种情况下,Zabbix将尝试重复失败的执行。 :::

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

配置

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

  1. 请导航至 警报 → 媒体类型
  2. 请点击 创建媒体类型

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

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

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

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

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

有关如何配置默认消息和警报处理选项的详细信息,请参阅 common media type parameters

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

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

媒体类型测试

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

  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 字段不能为空。如果该字段在告警脚本中不会被使用,可以输入任意支持的字段以跳过该校验。