3 自定义告警脚本

概述

如果您对现有的告警发送媒介类型不满意, 还有一种替代方法可以实现。您可以create一个脚本, 以自定义方式处理通知。

告警脚本在Zabbix server上执行。这些脚本必须位于 服务器configuration file参数AlertScriptsPath指定的目录中。

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

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

从version 3.4版本开始,Zabbix会检查 执行的命令和脚本的退出代码。任何不等于0的退出代码 将被视为command execution错误。这种情况下 Zabbix会尝试重新执行失败的操作。

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

配置

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

  • 前往 管理 → 媒介类型
  • 点击 创建媒介类型

媒介类型标签页包含通用媒介类型属性:

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

以下参数为脚本媒介类型特有:

参数 说明
Script name 输入脚本名称file(例如notification.sh),该脚本需位于服务器configuration file参数AlertScriptsPath指定的目录中。
Script parameters 为脚本添加命令行参数。
脚本参数支持{ALERT.SENDTO}、{ALERT.SUBJECT}和{ALERT.MESSAGE}macros
自定义脚本参数功能自Zabbix 3.0起支持。

关于默认消息配置与告警处理选项的详细信息,请参阅通用参数

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

由于Zabbix 3.4.0起实现了媒介类型的并行处理, 需注意当配置多个脚本媒介类型时, 这些脚本可能由告警进程并行处理。 告警进程总数受限于StartAlerters参数 parameter

用户媒介

配置媒体类型后,请前往管理 → 用户部分并编辑用户配置文件,为此用户分配该类型的媒体。设置用户媒体的步骤(适用于所有媒体类型)已在用户媒介页面中描述。

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