开放告警接入Prometheus-阿里云开发者社区

开发者社区> 1704048249035724> 正文

开放告警接入Prometheus

简介: Prometheus是常用的开源监控告警系统,为开发运维人员提供了数据采集、查看、告警的一体化解决方案,但是其告警管理功能较为简单,不能很好的满足需求。SLS的开放告警功能,能够将Prometheus发出的告警消息收集到SLS中进行统一管理,并通过包括短信、电话、微信、钉钉、邮箱在内的10多种通知渠道发送给用户。
+关注继续查看

背景介绍

Prometheus是常用的开源监控告警系统,为开发运维人员提供了数据采集、查看、告警的一体化解决方案。Prometheus的告警消息会发送到Alertmanager服务进行通知管理,并定义了同Alertmanager的交互协议。使用Prometheus时,用户需要额外维护Alertmanager服务,并且Alertmanage在界面操作、功能上较为简单,并不能很好覆盖用户的大部分使用场景。SLS的告警功能很好的补足了这这方面的不足之处,并推出了开放告警功能,将Prometheus告警消息通过Alertmanager协议收集到SLS中进行管理,并支持通过包括短信、电话、微信、钉钉、邮箱在内的10多种通知渠道发送给用户

Prometheus接入SLS

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

获取回调地址

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

image

回调地址由两部分构成:域名部分和子路径部分。其中域名部分属于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,用于唯一区别不同的开放告警应用。

配置通知服务

Prometheus定义了向外部发送告警消息的协议:Alertmanager,可以通过在Prometheus配置文件中添加一个或者多个Alertmanager,将告警消息发送给运维开发人员。Alertmanager的配置规范如下所示:

# Per-target Alertmanager timeout when pushing alerts.
[ timeout: <duration> | default = 10s ]
# The api version of Alertmanager.
[ api_version: <string> | default = v2 ]
# Prefix for the HTTP path alerts are pushed to.
[ path_prefix: <path> | default = / ]
# Configures the protocol scheme used for requests.
[ scheme: <scheme> | default = http ]
# List of labeled statically configured Alertmanagers.
static_configs:
  # The targets specified by the static config.
  - targets:
    [ - '<host>' ]
    # Labels assigned to all metrics scraped from the targets.
  - labels:
    [ <labelname>: <labelvalue> ... ]

Prometheus允许通过静态配置和动态发现两种方式添加Alertmanager,对于SLS开放告警,我们只需要关心静态配置即可。如下所示是包含SLS开放告警的Prometheus配置:

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
  alertmanagers:
  - path_prefix: event/webhook/RAMAK_{ACCESS_KEY_ID}/test_test
    api_version: v2
    static_configs:
    - targets:
      - cn-heyuan.log.aliyuncs.com

scrape_interval和evaluation_interval用户自行配置即可。用户需要将path_prefix的内容替换为接口中的路径部分(注意替换{ACCESS_KEY_ID}占位符),将接口中的域名部分添加到targets中。之后只需要重新加载Prometheus配置,使配置生效即可。

映射规则

Prometheus告警消息内容示例如下,SLS开放告警会通过内置的规则,将该消息转为SLS内部的告警消息:

[
    {
        "annotations": {
            "description": "description info",
            "summary": "High request latency"
        },
        "endsAt": "2020-10-28T12:28:52.710Z",
        "startsAt": "2020-10-28T12:23:37.710Z",
        "generatorURL": "http://127.0.0.1:9090/graph?g0.expr=go_threads%7Binstance%3D%22localhost%3A9090%22%2Cjob%3D%22prometheus%22%7D+%3E+0\\u0026g0.tab=1",
        "labels": {
            "alertname": "HighErrorRate",
            "instance": "localhost:9090",
            "job": "prometheus",
            "severity": "page"
        }
    }
]

告警严重程度

如果在Prometheus告警消息的labels/annotations中包含severity字段,开放告警会将该字段映射为告警消息的严重程度。目前开放告警支持多种告警消息严重程度,用户可以根据自己的需要进行配置。如果没有配置,严重程度将默认配置为中等。映射关系如下表所示。

告警严重度

关键字

严重

严重、紧急、critical、disaster、blocker、immediate、fatal、crit、sev0、'sev 0'、p0

高、高级、E、H、high、err、error、urgent、major、'sev 1'、sev1、p1

中、中级、告警、M、medium、unknown、warn、warning、'not classified'、average、normal、'sev 2'、sev2、p2

低、低级、L、I、info、information、suggestion、minor、informational、'sev 3'、sev3、p3

报告

报告、通知、report、dbg、debug、verbose、trivial、page、ok、'sev 4'、sev4、p4

字段映射

SLS开放告警会通过内置规则,将Prometheus消息转为SLS内置告警消息。例如将上面的Prometheus消息,转为如下所示的告警消息:

[{
    "aliuid": "{开放告警应用所属的阿里云账号ID}",
    "alert_instance_id": "{自动生成}",
    "project": "{告警中心所属的Project}",
    "region": "{告警消息发送的网络接口对应的地域}",
    "alert_id": "HighErrorRate",
    "alert_type": "sls_pub",
    "alert_name": "HighErrorRate",
    "next_eval_interval": 78,
    "alert_time": 1603859020,
    "fire_time": 1603859017,
    "resolve_time": 0,
    "status": "firing",
    "labels": {
        "alertname": "HighErrorRate",
        "instance": "localhost:9090",
        "job": "prometheus"
    },
    "annotations": {
        "__pub_alert_region__": "{告警消息发送的网络接口对应的地域}",
        "__config_app__": "sls_pub_alert",
        "__pub_alert_service__": "{开放告警服务ID}",
        "__pub_alert_app__": "{开放告警应用ID}",
        "__pub_alert_protocol__": "prometheus",
        "severity": "page"
    },
    "severity": 2,
    "policy": {
        "alert_policy_id": "{开放告警应用中配置的告警策略}",
        "action_policy_id": "{开放告警应用中配置的行动策略}",
        "repeat_interval": "{开放告警应用中配置的重复等待时间}"
    },
    "drill_down_query": "http://127.0.0.1:9090/graph?g0.expr=go_threads%7Binstance%3D%22localhost%3A9090%22%2Cjob%3D%22prometheus%22%7D+%3E+0\\u0026g0.tab=1"
}]

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

总结

通过将Prometheus告警消息接入到SLS,用户不再需要额外维护自己的Alertmanager服务,并且轻松的扩展了告警通知管理能力,从而更为高效的了解以及处理服务出现的问题。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9494 0
【CDN 常见问题】CDN 接入配置及常见问题
CDN顺利接入线上系统的域名是每个客户头疼的问题,本文档通过详述CDN接入配置各步骤配置以及每部设置常遇到的疑惑点进行解惑,让客户可以将顺利迁移至CDN提供加速服务。
15294 0
物联网平台网关设备+子设备接入平台演示
子设备不直接连接物联网平台,而是通过网关接入物联网平台。本示例介绍如何实现子设备通过网关接入物联网平台。 官方文档参考https://help.aliyun.com/document_detail/123984.html?spm=a2c4g.11186623.6.972.4417272dhkseDs
443 0
纳管集群接入Arms-Prometheus
接入Arms-Prometheus 在容器服务的应用目录里找到“ack-arms-prometheus” 填入clusterID、userID、regionID三个参数后,“创建”即可 如果集群和vpc之间有专线,会自动使用 安装完成后可以参考这里查看监控数据和定义告警规则
1616 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13177 0
K3S环境下接入Prometheus,grafana,等监控套件
因为常规的监控都是用K8S做的,而K3S上的监控方案少之又少,如果直接用rancher上的prometheus监控,会消耗至少2G的内存,于是我们就自己做了K3S和pg数据库的监控,并且通过我们自己做的监控,可以减少一些不必要的性能开销。主要监控容器资源消耗,宿主机资源消耗,pg数据库资源消耗
69 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
6891 0
OpenIM服务发现和负载均衡golang插件:gRPC接入etcdv3
OpenIM集成此插件,实现了轻量级的服务发现机制,打造了基于集群的IM服务,各模块很方便平行扩展,方便运维,本文把思路和代码分享给大家。
94 0
10
文章
0
问答
来源圈子
更多
阿里云存储基于飞天盘古2.0分布式存储系统,产品包括对象存储OSS、块存储Block Storage、共享文件存储NAS、表格存储、日志存储与分析、归档存储及混合云存储等,充分满足用户数据存储和迁移上云需求,连续三年跻身全球云存储魔力象限四强。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载