Zabbix 告警消息内容更改技术博客

在 Zabbix 监控系统中,告警消息是及时通知运维人员系统异常的重要手段。默认的告警消息内容可能无法满足特定的业务需求,因此需要对其进行更改。本文将详细介绍如何在 Zabbix 中更改告警消息内容,包括相关的配置方法、常见实践和最佳实践等。

目录#

  1. Zabbix 告警消息机制简介
  2. 更改告警消息内容的步骤
    • 配置告警媒介类型
    • 修改动作中的消息内容
  3. 常见实践
    • 添加自定义变量
    • 根据不同故障类型定制消息
  4. 最佳实践
    • 测试消息格式
    • 保持消息简洁明了
  5. 示例用法
  6. **参考

1. Zabbix 告警消息机制简介#

Zabbix 通过“动作(Action)”来触发告警,当监控项达到预设的阈值(如 CPU 使用率过高),动作会根据配置的条件执行相应的操作,其中之一就是发送告警消息。告警消息的发送依赖于“告警媒介类型(Media type)”,例如邮件、短信等。不同的告警媒介类型可以设置不同的消息格式。

2. 更改告警消息内容的步骤#

2.1 配置告警媒介类型#

  • 路径:在 Zabbix 前端界面,进入“管理(Administration)” -> “告警媒介类型(Media types)”。
  • 操作
    • 以邮件告警媒介类型为例,点击要修改的邮件媒介类型(如“Email”)。
    • 在“脚本(Scripts)”部分,找到“消息模板(Message template)”。这里可以设置消息的基本格式,例如:
主题:{TRIGGER.STATUS}: {TRIGGER.NAME} on {HOST.NAME}
正文:
故障主机:{HOST.NAME}
故障时间:{EVENT.DATE} {EVENT.TIME}
故障描述:{TRIGGER.NAME}
当前状态:{TRIGGER.STATUS}
问题详情:{ITEM.NAME}: {ITEM.VALUE}
- 这些大括号内的变量是 Zabbix 内置的宏,会在实际发送消息时被替换为具体的值。

2.2 修改动作中的消息内容#

  • 路径:进入“配置(Configuration)” -> “动作(Actions)”,找到对应的动作(如处理主机故障的动作)。
  • 操作
    • 点击“操作(Operations)”标签页。
    • 在“发送消息(Send message)”部分,选择之前配置好的告警媒介类型(如“Email”)。
    • 可以进一步在“消息内容(Message)”文本框中对消息进行微调。例如,如果想在邮件正文中添加一些特定的提示信息:
{TRIGGER.STATUS}: {TRIGGER.NAME} on {HOST.NAME}

故障主机:{HOST.NAME}
故障时间:{EVENT.DATE} {EVENT.TIME}
故障描述:{TRIGGER.NAME}
当前状态:{TRIGGER.STATUS}
问题详情:{ITEM.NAME}: {ITEM.VALUE}

请运维人员尽快处理,处理后请回复此邮件确认。
- 这里添加的“请运维人员尽快处理,处理后请回复此邮件确认。”就是自定义的内容。

3. 常见实践#

3.1 添加自定义变量#

  • 有时候内置宏不能满足需求,可以自定义变量。
  • 步骤
    • 在 Zabbix 服务器的配置文件(zabbix_server.conf 或 zabbix_agentd.conf,根据具体情况)中添加自定义宏。例如:
UserParameter=my.custom.variable[*],/path/to/script.sh $1
- 然后在消息内容中使用 `{MY.CUSTOM.VARIABLE}` 这样的格式(注意变量名要大写)。假设脚本返回服务器的某个特定指标值,就可以在消息中展示该指标。

3.2 根据不同故障类型定制消息#

  • 可以在动作的“条件(Conditions)”中设置不同的故障类型条件,然后针对每个条件设置不同的消息内容。
  • 示例
    • 条件 1:触发名称包含“CPU 使用率过高”。
    • 消息内容:强调 CPU 相关的处理建议,如检查是否有异常进程占用 CPU。
    • 条件 2:触发名称包含“磁盘空间不足”。
    • 消息内容:提供清理磁盘空间的常用命令示例等。

4. 最佳实践#

4.1 测试消息格式#

  • 在正式应用更改后的消息格式前,一定要进行测试。
  • 方法
    • 可以使用 Zabbix 提供的“测试(Test)”功能。在告警媒介类型配置页面,找到“测试(Test)”按钮,输入测试的收件人(如测试邮箱),然后发送测试消息,检查消息格式是否正确,变量是否替换正常。

4.2 保持消息简洁明了#

  • 避免在消息中堆砌过多无用信息。只包含故障的关键信息(主机、时间、故障描述、当前状态等),让运维人员能快速定位问题。例如:
{TRIGGER.STATUS}: {TRIGGER.NAME} on {HOST.NAME}

主机:{HOST.NAME}
时间:{EVENT.DATE} {EVENT.TIME}
故障:{TRIGGER.NAME}
状态:{TRIGGER.STATUS}

这样简洁的格式便于快速阅读和处理。

5. 示例用法#

假设我们有一台 Web 服务器,监控其 HTTP 服务状态。当 HTTP 服务停止(触发名称为“HTTP 服务异常”),我们希望发送如下邮件:

主题:PROBLEM: HTTP 服务异常 on WebServer01

正文: 主机:WebServer01 时间:2023-07-01 10:00:00 故障:HTTP 服务异常 状态:PROBLEM 请检查 Web 服务器的网络连接和 HTTP 服务进程。

配置方法:

  • 在告警媒介类型(邮件)的消息模板中设置:
主题:{TRIGGER.STATUS}: {TRIGGER.NAME} on {HOST.NAME}
正文:
主机:{HOST.NAME}
时间:{EVENT.DATE} {EVENT.TIME}
故障:{TRIGGER.NAME}
状态:{TRIGGER.STATUS}
{IF TRIGGER.NAME=="HTTP 服务异常":请检查 Web 服务器的网络连接和 HTTP 服务进程。}

这里使用了 {IF...} 条件判断来添加特定的提示信息。

参考#