Zabbix作为常用的开源监控系统,提供了丰富的告警规则用于系统监控,同时支持多种告警通知渠道。您可以将日志服务告警系统设为Zabbix的一个通知渠道,由日志服务告警系统完成告警降噪、通知等处理。本文适用于Zabbix 3.2~4.2版本。

前提条件

Zabbix配置

  1. 在安装Zabbix的服务器上安装通知脚本。
    1. 查看Zabbix配置文件中的配置项AlertScriptsPath,获取安装通知脚本的目录。
    2. 将已下载的alibaba_cloud_sls.py文件放到该目录中。
    3. 变更文件权限为可执行。
      chmod +x alibaba_cloud_sls.py
  2. 登录Zabbix控制台。
  3. 添加通知渠道Alibaba Cloud SLS
    1. 在顶部导航栏中,选择Administration > Media types
    2. Media types页面的右上角,单击Create media type
    3. 配置相关参数,然后单击Add
      zabbix3.2
      重要参数说明如下表所示。
      参数名称 说明 示例值
      Name 通知渠道名称。 Alibaba Cloud SLS
      Type 接入方式。 Script
      Script name 通知脚本的名称。 alibaba_cloud_sls.py
      Script parameters 通知脚本的参数。其中:
      注意 请根据示例值的顺序配置。
      • 第三行配置为您在日志服务中创建开放告警服务和应用后生成的接口信息(完整URL)。如何获取,请参见获取接口信息

        如果您的Zabbix运行在阿里云ECS上,则建议您在选择Zabbix告警消息接入地域时,选择ECS所在地域,并使用局域网或VPC域名。否则您选择任一地域的公网接口即可。

      • 第四行配置为日志文件路径。

        alibaba_cloud_sls.py脚本会将错误日志打印到您所指定的日志文件中,需确保Zabbix服务器有写日志文件的权限。

      1. {ALERT.MESSAGE}
      2. {ALERT.SUBJECT}
      3. http://cn-heyuan.log.aliyuncs.com/event/webhook/RAMAK_{ACCESS_KEY_ID}/zabbix
      4. /tmp/alibaba-cloud-alert/zabbix.log
  4. 创建Action。
    1. 在顶部导航栏中,选择Configuration > Actions
    2. Actions页面的右上角,单击Create action
    3. Operation页签中,配置相关参数。
      注意 如果您的Actions页面中存在Update operations页签,请忽略。
      zabbix 3.2

      重要参数说明如下表所示。

      参数名称 说明 示例值
      Default subject 固定为firing。 firing
      Default message 告警消息内容,为JSON格式。
      您可以根据需求,修改time_zone字段值和zabbix_url字段值,其他字段的值不可修改。
      • time_zone:时区,默认为东八区。
      • zabbix_url:Zabbix控制台的跳转链接,默认为127.0.0.1。
      {
          "time_zone": "+0800",
          "zabbix_url": "127.0.0.1",
          "trigger_hostgroup_name": "{TRIGGER.HOSTGROUP.NAME}",
          "event_recovery_time": "{EVENT.RECOVERY.TIME}",
          "trigger_events_problem_ack": "{TRIGGER.EVENTS.PROBLEM.ACK}",
          "event_recovery_value": "{EVENT.RECOVERY.VALUE}",
          "host_ip": "{HOST.IP}",
          "trigger_state": "{TRIGGER.STATE}",
          "trigger_template_name": "{TRIGGER.TEMPLATE.NAME}",
          "event_status": "{EVENT.STATUS}",
          "event_value": "{EVENT.VALUE}",
          "event_time": "{EVENT.TIME}",
          "trigger_status": "{TRIGGER.STATUS}",
          "event_id": "{EVENT.ID}",
          "event_tags": "{EVENT.TAGS}",
          "trigger_expression": "{TRIGGER.EXPRESSION}",
          "event_date": "{EVENT.DATE}",
          "action_id": "{ACTION.ID}",
          "trigger_url": "{TRIGGER.URL}",
          "trigger_nseverity": "{TRIGGER.NSEVERITY}",
          "trigger_problem_events_problem_ack": "{TRIGGER.PROBLEM.EVENTS.PROBLEM.ACK}",
          "event_age": "{EVENT.AGE}",
          "trigger_id": "{TRIGGER.ID}",
          "action_name": "{ACTION.NAME}",
          "event_recovery_id": "{EVENT.RECOVERY.ID}",
          "trigger_events_problem_unack": "{TRIGGER.EVENTS.PROBLEM.UNACK}",
          "date": "{DATE}",
          "trigger_name": "{TRIGGER.NAME}",
          "event_ack_status": "{EVENT.ACK.STATUS}",
          "trigger_events_unack": "{TRIGGER.EVENTS.UNACK}",
          "event_recovery_date": "{EVENT.RECOVERY.DATE}",
          "trigger_problem_events_problem_unack": "{TRIGGER.PROBLEM.EVENTS.PROBLEM.UNACK}",
          "trigger_events_ack": "{TRIGGER.EVENTS.ACK}",
          "host_name": "{HOST.NAME}",
          "time": "{TIME}",
          "event_recovery_tags": "{EVENT.RECOVERY.TAGS}",
          "event_recovery_status": "{EVENT.RECOVERY.STATUS}",
          "trigger_description": "{TRIGGER.DESCRIPTION}",
          "trigger_value": "{TRIGGER.VALUE}"
      }
    4. Recovery operations页签中,配置相关参数。
      zabbix 3.2

      重要参数说明如下表所示。

      参数名称 说明 示例值
      Default subject 固定为resolved。 resolved
      Default message 告警消息内容,为JSON格式。
      您可以根据需求,修改time_zone字段值和zabbix_url字段值,其他字段的值不可修改。
      • time_zone:时区,默认为东八区。
      • zabbix_url:Zabbix控制台的跳转链接,默认为127.0.0.1。
      {
          "time_zone": "+0800",
          "zabbix_url": "127.0.0.1",
          "trigger_hostgroup_name": "{TRIGGER.HOSTGROUP.NAME}",
          "event_recovery_time": "{EVENT.RECOVERY.TIME}",
          "trigger_events_problem_ack": "{TRIGGER.EVENTS.PROBLEM.ACK}",
          "event_recovery_value": "{EVENT.RECOVERY.VALUE}",
          "host_ip": "{HOST.IP}",
          "trigger_state": "{TRIGGER.STATE}",
          "trigger_template_name": "{TRIGGER.TEMPLATE.NAME}",
          "event_status": "{EVENT.STATUS}",
          "event_value": "{EVENT.VALUE}",
          "event_time": "{EVENT.TIME}",
          "trigger_status": "{TRIGGER.STATUS}",
          "event_id": "{EVENT.ID}",
          "event_tags": "{EVENT.TAGS}",
          "trigger_expression": "{TRIGGER.EXPRESSION}",
          "event_date": "{EVENT.DATE}",
          "action_id": "{ACTION.ID}",
          "trigger_url": "{TRIGGER.URL}",
          "trigger_nseverity": "{TRIGGER.NSEVERITY}",
          "trigger_problem_events_problem_ack": "{TRIGGER.PROBLEM.EVENTS.PROBLEM.ACK}",
          "event_age": "{EVENT.AGE}",
          "trigger_id": "{TRIGGER.ID}",
          "action_name": "{ACTION.NAME}",
          "event_recovery_id": "{EVENT.RECOVERY.ID}",
          "trigger_events_problem_unack": "{TRIGGER.EVENTS.PROBLEM.UNACK}",
          "date": "{DATE}",
          "trigger_name": "{TRIGGER.NAME}",
          "event_ack_status": "{EVENT.ACK.STATUS}",
          "trigger_events_unack": "{TRIGGER.EVENTS.UNACK}",
          "event_recovery_date": "{EVENT.RECOVERY.DATE}",
          "trigger_problem_events_problem_unack": "{TRIGGER.PROBLEM.EVENTS.PROBLEM.UNACK}",
          "trigger_events_ack": "{TRIGGER.EVENTS.ACK}",
          "host_name": "{HOST.NAME}",
          "time": "{TIME}",
          "event_recovery_tags": "{EVENT.RECOVERY.TAGS}",
          "event_recovery_status": "{EVENT.RECOVERY.STATUS}",
          "trigger_description": "{TRIGGER.DESCRIPTION}",
          "trigger_value": "{TRIGGER.VALUE}"
      }
    5. 单击Add
  5. 为目标用户设置通知渠道。
    1. 在顶部导航栏中,选择Administration > Users
    2. 在用户列表中,单击目标用户。
      您也可以单击Create user,创建一个新用户。
    3. Media页签中,单击Add
      您也可以单击其中一个Media对应的Edit,修改已创建的Media。
    4. 选择TypeAlibaba Cloud SLS,然后单击Add
      zabbix-3.2
    5. 单击Update

告警消息解析

Zabbix告警消息中包含100多种变量。更多信息,请参见Zabbix官方文档。日志服务只选取其中几十个消息变量组成告警消息。Zabbix告警消息内容示例如下:

Zabbix Macro名称 示例值
{TRIGGER.ID} 19006
{TRIGGER.NAME} test used
{EVENT.VALUE} 1
{DATE} 2021.06.10
{TIME} 12:44:23
{EVENT.DATE} 2021.06.10
{EVENT.TIME} 19:23:01
{EVENT.RECOVERY.DATE} ""
{EVENT.RECOVERY.TIME} ""
{HOST.NAME} zabbix-agent
{HOST.IP} 192.0.2.0
{TRIGGER.HOSTGROUP.NAME} Linux servers
{TRIGGER.DESCRIPTION} The system is running out of free memory.
{EVENT.TAGS} Application:Memory
{TRIGGER.NSEVERITY} 2
{EVENT.ID} 1036

字段映射

日志服务告警内容中的字段与Zabbix告警内容中的字段映射关系如下:

表 1. 字段映射
日志服务 Zabbix 说明
aliuid 用于接入告警的开放告警应用所属的阿里云账号ID
alert_id {TRIGGER.ID} 告警监控规则ID
alert_type 告警类型,固定为sls_pub。
alert_name {TRIGGER.NAME} 告警监控规则名称
status {ALERT.SUBJECT} 告警状态,值为firing或resolved。
next_eval_interval 告警评估时间间隔,固定为0。
alert_time 告警本次评估时间。

通过计算{DATE}{TIME}所得。

fire_time 告警首次触发时间。

通过计算{EVENT.DATE}{EVENT.TIME}所得。

resolve_time 告警恢复时间。
  • 如果告警状态是firing,则值为0。
  • 如果告警状态为resolved,则值为具体恢复时间。通过计算{EVENT.RECOVERY.DATE}{EVENT.RECOVERY.TIME}所得。
labels {HOST.NAME} 告警标签信息。
如果您在创建开放告警应用时,在信息加工中添加了标签信息,则此标签信息将被添加到labels字段中。
说明 当您在信息加工中配置的标签的Key与Zabbix告警消息的tags字段中的子字段重复时,映射结果以您在信息加工中配置的为准。
annotations {EVENT.TAGS} Zabbix告警被接入到日志服务后,日志服务会将{EVENT.TAGS}字段展开为多个键值对,添加到annotations字段中。
  • {HOST.IP}映射为__host_ip__
  • {TRIGGER.HOSTGROUP.NAME}映射为__host_group_name__
  • {EVENT.AGE}映射为event_duration
  • {EVENT.NAME}映射为title
  • {TRIGGER.DESCRIPTION}映射为desc
除以上字段外,还会额外添加如下字段。
  • __config_app__: "sls_pub_alert"
  • __pub_alert_service__: {开放告警服务id}
  • __pub_alert_app__: {开放告警应用id}
  • __pub_alert_protocol__: "zabbix"
  • __pub_alert_region__: {接收告警消息的网络接口对应的地域}

如果您在创建开放告警应用时,在信息加工中添加了标注信息,则此标注信息将被添加到annotations字段中。

severity {TRIGGER.NSEVERITY} 告警严重度。更多信息,请参见表 2
policy 您在开放告警应用中配置的告警策略。更多信息,请参见Policy结构
project 告警中心所属的Project。更多信息,请参见项目(Project)
drill_down_query {$ZABBIX.SERVER.URL}{TRIGGER.ID}{EVENT.ID} 链接形式,单击后可跳转到Zabbix控制台的告警消息管理页面。
表 2. 告警严重度说明
Severity(Zabbix) Severity(日志服务)
Not Classified report
Information low
Warning medium
Average medium
High high
Disaster critical

常见问题

如何查看操作日志?

  1. 登录Zabbix控制台。
  2. 在顶部导航栏中,选择Reports > Action log