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

前提条件

Zabbix配置

  1. 登录Zabbix控制台。
  2. 可选:配置全局变量ZABBIX.SERVER.URL
    配置后,全局变量ZABBIX.SERVER.URL将作为告警内容的一部分发送给日志服务。你可以在日志服务的告警通知中,单击对应的信息,跳转至Zabbix控制台,查看更多信息。

    如果您不设置全局变量ZABBIX.SERVER.URL的值,则在告警消息中显示默认值127.0.0.1。

    1. 在左侧导航栏中,选择Administration > General > Macros
    2. Macros页面中,单击Add
    3. 添加全局变量ZABBIX.SERVER.URL,值为Zabbix控制台的访问地址。
      Zabbix告警
    4. 单击Update
  3. 添加Alibaba Cloud SLS (Log Service)通知渠道。
    1. 在左侧导航栏中,选择Administration > Media types
    2. Media types页面的右上角,单击Import
    3. Import对话框中,选择您已下载的alibaba_cloud_sls.yml文件,选中Update existing,然后单击Import
      导入alibaba_cloud_sls.yml
    4. Media types页面中,单击Alibaba Cloud SLS (Log Service)
    5. Parameters配置项中,修改hook_url字段的值,然后单击Update
      hook_url字段的值修改为您在日志服务中创建开放告警服务和应用后生成的接口信息(完整URL)。如何获取,请参见获取接口信息
      说明 如果您的Zabbix运行在阿里云ECS上,则建议您在选择Zabbix告警消息接入地域时,选择ECS所在地域,并使用局域网或VPC域名。否则您选择任一地域的公网接口即可。
      hook_url
  4. 为目标用户设置通知渠道。
    1. 在左侧导航栏中,选择Administration > Users
    2. 在用户列表中,单击目标用户。
      您也可以单击Create user,创建一个新用户。
    3. Media页签中,单击其中一个Media对应的Edit
      您也可以单击Add,创建一个新的Media。
    4. Media面板中,选择TypeAlibaba Cloud SLS (Log Service),然后单击Update
      通知渠道
    5. 单击Update
  5. 配置触发器。
    1. 在左侧导航栏中,选择Configuration > Actions > Trigger actions
    2. Trigger actions页面中,单击您已创建的触发器。
    3. Operations页签中,单击Operations区域中的Add
      您也可以单击目标Operation对应的Editoperation
    4. Operation details对话框中,选择您的目标用户或用户组,以及配置Send only toAlibaba Cloud SLS (Log Service),然后单击Add
      添加operation
    5. 单击Update

告警消息解析

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

Zabbix Macro名称 示例值
{TRIGGER.ID} 19006
{TRIGGER.NAME} test used
{EVENT.UPDATE.STATUS} 0
{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
{EVENT.DURATION} 20h 1m 31s
{TRIGGER.DESCRIPTION} The system is running out of free memory.
{EVENT.OPDATA} 73.22 %
{EVENT.TAGS} Application:Memory
{NSEVERITY} 2
{EVENT.ID} 1036

字段映射

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

表 1. 字段映射
日志服务 Zabbix 说明
aliuid 用于接入告警的开放告警应用所属的阿里云账号ID
alert_id {TRIGGER.ID} 告警监控规则ID
alert_type 告警类型,固定为sls_pub。
alert_name {TRIGGER.NAME} 告警监控规则名称
status {EVENT.UPDATE.STATUS}{EVENT.VALUE} 告警状态。

如果Zabbix中的{EVENT.UPDATE.STATUS}值和{EVENT.VALUE}值都为0,则表示resolved(告警恢复)。其余值都表示firing(触发告警)。

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.DURATION}映射为event_duration
  • {EVENT.NAME}映射为title
  • {TRIGGER.DESCRIPTION}映射为desc
  • {EVENT.OPDATA}映射为event_opdata
除以上字段外,还会额外添加如下字段。
  • __config_app__: "sls_pub_alert"
  • __pub_alert_service__: {开放告警服务id}
  • __pub_alert_app__: {开放告警应用id}
  • __pub_alert_protocol__: "zabbix"
  • __pub_alert_region__: {接收告警消息的网络接口对应的地域}

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

severity {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
  3. 查看操作日志。
    操作日志