开放告警接入Zabbix

本文涉及的产品
对象存储 OSS,20GB 3个月
文件存储 NAS,50GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: Zabbix作为常用的开源监控系统,提供了丰富的告警规则用于系统监控,同时支持多种告警通知渠道。您可以将日志服务告警系统设为Zabbix的一个通知渠道,由日志服务告警系统完成告警降噪、通知等处理,并且通过包括短信、电话、微信、钉钉、邮箱在内的10多种通知渠道发送给用户。

背景

Zabbix作为常用的开源监控系统,提供了丰富的告警规则用于系统监控,同时支持多种告警通知渠道。您可以将日志服务告警系统设为Zabbix的一个通知渠道,由日志服务告警系统完成告警降噪、通知等处理,并且通过包括短信、电话、微信、钉钉、邮箱在内的10多种通知渠道发送给用户

Zabbix接入SLS

要将zabbix的告警消息接入SLS,主要分为两个步骤:在SLS中创建开放告警应用;将SLS开放告警作为新的MediaType接入zabbix。创建开放告警应用的具体步骤,可以参考文章SLS开放告警简介。下面介绍下如何将zabbix的告警消息接入到SLS中。

获取回调地址

在创建开放告警应用之后,通过点击接口按钮,打开如下图所示的回调地址查看窗口。

image.png

接口信息

办议:Zabbix

河源

地域:

局域网/PC,注意需要将(ACCESSKEYID替换为具备权限的密钥ID密钥配置

nheyuanzintanetlogalyuns.omnwM

公网,注意需要将(ACCESSKEY_ID替换为具备权限的密钥ID密钥配置

ch-heyuanlogalyuns.omntw

关闭

回调地址由两部分构成:域名部分和子路径部分。其中域名部分属于SLS的接入地址,和地域相关,每个地域都有各自不同的接入地址;子路径部分包括用于发送消息的Access Key Id和开放告警应用。如下所示为一个完整的SLS回调地址

cn-heyuan-intranet.log.aliyuncs.com/event/webhook/RAMAK_{ACCESS_KEY_ID}/a123_asdad


其中"cn-heyuan-intranet.log.aliyuncs.com"为域名部分,属于SLS通用的接入地址(endpoint);event/webhook/RAMAK_{ACCESS_KEY_ID}/a123_asdad 则为子路径部分。需要注意的是,用户需要将子路径部分中的{ACCESS_KEY_ID}替换为具体阿里云RAM账户的Access Key Id,并且将权限策略AliyunLogOpenEventWrite赋予该账户;a123_asdad则为该开放告警应用的id,用于唯一区别不同的开放告警应用。

Zabbix接入配置

配置全局变量ZABBIX.SERVER.URL

全局变量{$ZABBIX.SERVER.URL}用来指定zabbix页面的跳转地址,在告警消息中生成跳转链接。如果不设置,使用默认值127.0.0.1。

配置步骤

  1. 在左侧导航栏中,选择Administration > General > Macros
  2. Macros页面中,单击Add
  3. 添加全局变量ZABBIX.SERVER.URL,值为Zabbix控制台的访问地址。

image.png

127.0.0.1/zabbix.php?actionmacrosedit

ZABBIX

Macros

Zabbadocker

Q

Description

Value

Macro

Remove

SSNMPCOMMUNITY

descipton

pUbLIC

Monitoring

(SZABBIX.SERVERURL)

description

127.0.0.1

lnventory

Add

u

Reports

Updato

Connguration

Administration

Gui

Autoreglstraton

Proxles

Housekeeping

Authentcaton

lmagos

Uscrgroups

iconmapplng

Userroles

RoguLarexpresslons

Users

Macros

Tnggerdsplayingoptions

Medlatypes

Modules

Scripts

APItokens

Queue

Other

添加通知渠道Alibaba Cloud SLS (Log Service)

通过导入文件alibaba_cloud_sls.yml将Alibaba Cloud SLS作为新的通知渠道添加到zabbix的media types中。

配置步骤

  1. 在左侧导航栏中,选择Administration > Media types
  2. Media types页面的右上角,单击Import
  3. Import对话框中,选择您已下载的alibaba_cloud_sls.yml文件,选中Update existing,然后单击Import

image.png

  1. Media types页面中,单击Alibaba Cloud SLS (Log Service)
  2. Parameters配置项中,修改hook_url字段的值,然后单击Update

hook_url字段的值修改为您在日志服务中创建开放告警服务和应用后生成的接口信息(完整URL)。如何获取,请参见获取接口信息

image.png

为用户设置通知渠道

添加完新的通知渠道,还需要为用户添加通知刚刚创建的SLS通知渠道。这样发送给该用户的通知消息才能够发送到SLS中。

配置步骤

  1. 在左侧导航栏中,选择Administration > Users
  2. 在用户列表中,单击目标用户。您也可以单击Create user,创建一个新用户。
  3. Media页签中,单击其中一个Media对应的Edit您也可以单击Add,创建一个新的Media。
  4. Media面板中,选择TypeAlibaba Cloud SLS (Log Service),然后单击Update

image.png

Permissions

User

Media

Media

Useifseverity

Action

SendtoWhenactive

Status

Type

x

Media

AlibabaCloudSLsLogService

Type

Alibaba

Sendto

1-7,00:00-24:00

*Whenactive

Notclassified

Useifseverity

lnformation

Warning

Average

High

Disaster

Enabled

Update

Cancel

配置触发器

如果您对触发器的通知渠道进行了限制,才需要变更触发器配置,否则保持之前配置即可。

配置步骤

  1. 在左侧导航栏中,选择Configuration > Actions > Trigger actions
  2. Trigger actions页面中,单击您已创建的触发器。
  3. 查看Send only to 选项是否限制了通知渠道(无限制为All),如果没有选择All或者Alibaba Cloud SLS,则该触发器发送的告警消息不会发送到SLS中。所以需要配置为All或者Alibaba Cloud SLS。

image.png

告警消息解析

Zabbix告警消息中包含100多种变量。更多信息,请参见Zabbix官方文档。日志服务只选取其中几十个消息变量组成告警消息。Alibaba Cloud SLS (Log Service)通知渠道发往SLS的告警消息示例,如下所示:

{
"status": "firing",
"starts_at": "2021.06.10 19:23:01 +0800",
"fires_at": "2021.06.11 15:30:32 +0800",
"resolved_at": "",
"severity": "medium",
"alert_name": "test used",
"alert_id": "19006",
"alert_instance_id": "1036",
"drill_down_query": "127.0.0.1/tr_events.php?triggerid=19006&eventid=1036",
"labels": {
"host_name": "zabbix-agent"    },
"annotations": {
"event_tags": "Application:Memory",
"action_id": "3",
"action_name": "Report problems to Zabbix administrators",
"event_ack_status": "No",
"event_age": "20h 7m 31s",
"event_duration": "20h 7m 31s",
"event_opdata": "73.34 %",
"event_status": "PROBLEM",
"trigger_description": "The system is running out of free memory.",
"trigger_events_ack": "4",
"trigger_events_problem_ack": "4",
"trigger_events_problem_unack": "7",
"trigger_events_unack": "17",
"trigger_hostgroup_name": "Linux servers",
"trigger_expression": "min(/zabbix-agent/vm.memory.utilization,1m)>10",
"trigger_status": "PROBLEM",
"trigger_url": "",
"trigger_value": "1",
"host_ip": "172.20.240.4",
"title": "test used",
"desc": "Trigger test used AT 2021.06.10 19:23:01: The system is running out of free memory."    }
}

可以看出,大部分的字段名称和zabbix的变量名称是一一对应的,例如event_status字段对应zabbix变量{EVENT_STATUS}。上面的告警消息示例,则会转换为SLS的告警消息:

{
"aliuid": "aliuid1",
"alert_instance_id": "1036",
"alert_id": "19006",
"alert_type": "sls_pub",
"alert_name": "test used",
"region": "",
"project": "",
"project_id": 0,
"next_eval_interval": 0,
"alert_time": 1626408294,
"fire_time": 1623324181,
"fire_results": null,
"fire_results_count": 0,
"resolve_time": 0,
"status": "firing",
"results": null,
"labels": {
"host_name": "zabbix-agent"    },
"annotations": {
"Application": "Memory",
"__config_app__": "sls_pub_alert",
"__host_group_name__": "Linux servers",
"__host_ip__": "172.20.240.4",
"__pub_alert_app__": "appid1",
"__pub_alert_protocol__": "zabbix",
"__pub_alert_region__": "e",
"__pub_alert_service__": "serverid1",
"desc": "Trigger test used AT 2021.06.10 19:23:01: The system is running out of free memory.",
"event_duration": "20h 7m 31s",
"event_opdata": "73.34 %",
"title": "test used",
"trigger_expression": "min(/zabbix-agent/vm.memory.utilization,1m)\\u003e10"    },
"severity": 6,
"policy": {
"alert_policy_id": "",
"action_policy_id": "",
"use_default": false,
"repeat_interval": "0s"    },
"template": null,
"drill_down_query": "http://127.0.0.1/tr_events.php?triggerid=19006\\u0026eventid=1036"}

具体的转换规则,请参考官方文档接入Zabbix告警

总结

通过将zabbix告警消息接入到SLS,可以不再受限于zabbix提供的告警功能,从而更为高效的了解以及处理服务出现的问题。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
监控 机器人 Python
Zabbix实现钉钉群告警
Zabbix实现钉钉群告警
|
3月前
|
监控
一文吃透企业级elk技术栈:9. zabbix结合logstash告警
一文吃透企业级elk技术栈:9. zabbix结合logstash告警
|
消息中间件 存储 运维
Zabbix与ELK整合实现对安全日志数据的实时监控告警
Zabbix与ELK整合实现对安全日志数据的实时监控告警
Zabbix与ELK整合实现对安全日志数据的实时监控告警
|
监控 NoSQL Redis
【Zabbix】Zabbix微信告警配置演示(下)
【Zabbix】Zabbix微信告警配置演示(下)
151 0
|
监控
【Zabbix】Zabbix微信告警配置演示(上)
【Zabbix】Zabbix微信告警配置演示
164 0
|
监控 机器人 定位技术
ZABBIX4.0 微信告警
ZABBIX4.0 微信告警
162 0
ZABBIX4.0 微信告警
|
运维 监控 定位技术
ZABBIX4.0配置邮箱告警信息发送给用户组
ZABBIX4.0配置邮箱告警信息发送给用户组
217 0
ZABBIX4.0配置邮箱告警信息发送给用户组
|
监控 小程序 Python
Zabbix5.0配置企业微信告警
如果需要用公司的企业微信来做告警信息的接收者,那么这个步骤就可以省略了。</font>** >如果是在公司,监控自定义服务,需要部分的人员都能看到,哪最好就是去找公司企业微信的创建人,因为后面会用到企业ID。
534 0
Zabbix5.0配置企业微信告警
|
监控 机器人 Linux
10分钟帮你搞定Zabbix监控平台告警推送到钉钉群
10分钟帮你搞定Zabbix监控平台告警推送到钉钉群
578 0
10分钟帮你搞定Zabbix监控平台告警推送到钉钉群
|
监控 关系型数据库 MySQL
zabbix监控所有机器端口、邮件告警
监控的意义 在发生问题时,能够让我们及时获知 监控的对象: 1、服务器监控:内存,cpu负载,磁盘使用率,进程数。。。。 2、应用程序监控:应用程序状态,相应时间, 3、数据库监控:数据库状态,表或者表空间大小,错误日志,死锁等现象 4、网络监控:网络状态 ,流量监控,端口,网络连接数。。。。 zabbix——企业级分布式开源监控解决方案 zabbix优点: 1、开源,无成本投入 2、server端对于机器性能要求低 3、支持设备多,自带监控模板 4、提供Api接口,可以与其他系统结合使用 zabbix缺点: 1、被监控机器需要安装agent 2、社区成熟,中文资料少 3、批量修改麻烦
zabbix监控所有机器端口、邮件告警

推荐镜像

更多
下一篇
无影云桌面