顺滑迁移Prometheus告警到SLS告警

本文涉及的产品
对象存储 OSS,20GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
文件存储 NAS,50GB 3个月
简介: Prometheus作为一个开源的云原生监控系统,具有很广泛的应用场景,通过各种Exporter收集各类设备,应用的指标,将各类指标抽象为时序数据,在Prometheus上可以使用PromQL进行高效的指标查询和分析。SLS告警是云上的一站式告警监控运维平台,支持各种Ops场景。SLS告警系统主要包括指标采集,监控系统,告警管理,通知管理等子系统。本文介绍如何将Prometheus告警无缝转换为SLS告警,并使用SLS告警的管理功能。

SLS告警简介

SLS告警是云上的一站式告警监控运维平台,支持各种Ops场景。SLS告警系统主要包括指标采集,监控系统,告警管理,通知管理等子系统。

  • 指标采集包括时序、日志、Trace数据;
  • 监控系统支持定时查询各类数据源并进行协同评估,满足触发条件后,产生告警;
  • 告警管理系统主要包括对监控系统产生的告警进行合并、抑制、静默等处理,以此来达到告警降噪的目的,除了SLS自身的告警监控,还支持常见的第三方告警系统,可以将Prometheus,Zabbix,Grafana等产生的告警进行统一降噪处理。
  • 通知管理支持众多的通知渠道,包括常见的短信、语音、Webhook、钉钉、企业微信、飞书,还支持Function Compute和EventBridge等。同时,还支持灵活的分派策略,支持将不同属性的告警发送给不同的渠道。此外还包括灵活的值班轮岗,代班等功能。

Prometheus告警

Prometheus作为一个开源的云原生监控系统,具有很广泛的应用场景,通过各种Exporter收集各类设备,应用的指标,将各类指标抽象为时序数据,在Prometheus上可以使用PromQL进行高效的指标查询和分析。

在告警方面,可以在Prometheus上配置监控规则,满足Prometheus的监控规则后,会有触发或者恢复告警产生。这些告警的通知需要搭建另外的告警管理系统AlertManger进行处理。

Prometheus的告警规则配置示例(参考)如下:

告警产生后可以在Prometheus的UI看到触发告警的状态:

Prometheus告警规则的配置主要包括告警名称,评估语句,告警labels,告警annoations等信息,告警触发后需要在AlertManager中配置告警的路由,通知等。AlertManager虽然功能强大,但是需要具备“程序员”的能力才可以进行比较灵活的配置,AlertManager基本是一套全脚本化的配置:对于运营人员如果对业务进行告警配置,往往不是很友好;

如果需要常见的告警值班轮岗等需求时,需要对接额外的Pageduty等系统,在使用上需要维护各类碎片化的系统。在告警产生时如果需要对接各类云上功能,比如Function Compute或者EventBridge,需要自行开发Webhook等,不具有一站式的解决方案。

实现同样的功能,Prometheus告警需要搭配AlertManager,PageDuty再加上脚本化开发等才可以实现相应的功能。而SLS告警支持在阿里云控制台简单的输入配置,界面化的操作即可完成告警管理的配置,同时SLS告警支持比较高阶的功能,如轮岗值班代班等,可以满足各类运维运营人员的需求。同时SLS告警具有强大的支持团队,在使用上有任何问题,可以随时在SLS支持群中提出获取解决方案。


Prometheus告警迁移方案

有没有一种办法即保留现有的Prometheus使用方式,又可以将现有的Prometheus告警规则迁移到云上使用呢?答案是肯定的。这里介绍一种简单的迁移办法,并提供脚本来进行迁移。

该迁移方案主要包括两个步骤,接下来分别进行详细介绍

  • 将Prometheus数据RemoteWrite到SLS的时序库。
  • 将Prometheus告警规则迁移转化为SLS告警。

Prometheus数据RemoteWrite到SLS的时序库中

Promethues默认将时序指标存储在本地磁盘和内存,在指标数据非常庞大的时候,往往需要占用海量的内存;Prometheus也可以将指标数据RemoteWrite到远端存储。SLS时序存储具有价格低廉,查询高效,兼容PromQL语法的特点,是一种理想的RemoteWrite目标。配置非常简单:

  • 首先创建MetricStore,参考创建MetricStore
  • 创建具有写入MetricStore的AK,配置Prometheus的Remote Write,配置脚本如下:
url: https://sls-prometheus-test.cn-beijing.log.aliyuncs.com/prometheus/sls-prometheus-test/prometheus-raw/api/v1/write
basic_auth:  username: access-key-id
  password: access-key-secret
queue_config:  batch_send_deadline: 20s
  capacity: 20480  max_backoff: 5s
  max_samples_per_send: 2048  min_backoff: 100ms
  min_shards: 100   

             

这样就可以在SLS控制台,Project->时序存储->时序库中查看时序数据。具体使用方法可以参考通过Remote Write协议接入Prometheus监控数据


迁移Prometheus告警规则

迁移Prometheus告警规则主要包含两个步骤:

  • 在SLS控制台-告警管理中心创建行动策略
  • 通过脚本将Prometheus告警规则转化为SLS告警规则

创建SLS告警行动策略

首先在SLS控制台进入日志应用->告警管理中心。在第一次进入后,会提示选择告警中心日志库的存储区域,此时可以选择一个跟业务Project一样的区域或者地理位置相近的区域。

然后点击右上角的全局配置

点击左侧行动策略菜单,点击添加按钮,创建行动策略,行动策略配置支持各种通知渠道,具体配置可以参考创建行动策略

Prometheus告警规则迁移到SLS

Prometheus的告警规则主要包含groups,rules的配置,其配置示例在上文也有涉及。这类假设已经有了一批Prometheus的告警规则,文件是prometheus-alert.yaml。内容格式举例如下:

groups:- name: alert
  rules:  - alert: CacheMiss
    expr: sum by (method) (rate(metastore_query_count{job="some_job", hit_cache="true"}[5m])) / sum by (method) (rate(metastore_query_count{job="some_job"}[5m])) * 100 < 85
    for: 1m
    labels:      severity: High
    annotations:      description: Method {{ $labels.method }} cache hit rate is {{ $value }}

Prometheus告警规则可以同SLS告警规则进行同等的映射:

  • alert映射为SLS告警规则名称;
  • expr映射为SLS时序查询的PromQL;
  • for映射为SLS告警规则的连续触发阈值:threshold;
  • labels映射为SLS告警规则中的标签;
  • annoations映射为SLS告警规则的标注;
  • 同时在labels中如果含有severity等严重度的配置,会映射为SLS告警规则的严重度。

同时SLS的告警监控规则的标注支持大部分Prometheus的渲染语法,通过以上的映射规则,可以使用SLS的SDK自行编写程序进行转换。这里提供了一个开箱即用的Python转换脚本,完整脚本可以参考github链接

执行脚本主要步骤如下:

  • 首先创建requirements.txt,主要依赖如下:

pyyaml

aliyun-log-python-sdk

  • 修改main.py,具体AK,SK和行动策略id需要自行配置,其他相关配置如有需要也可自行修改。

  • 安装完requirement.text中的依赖后,可以开始运行python main.py。

即可将告警导入到指定的project下,在Project下查看告警中心,可以看到5个Prometheus告警规则已经导入到SLS的Project下面。

点开其中一个进行编辑,可以看到prometheus告警与SLS告警的映射关系:

可以看到:

  • 规则名称由group和rule的名字拼接而成;
  • 检查频率设置为了最小1分钟;
  • 查询统计使用了SLS的promql_query进行了封装;
  • 分组评估使用了标签自动;
  • 触发条件对应了labels中设置的severity的高严重度;
  • 标注使用了prometheus告警中的annotations进行了替换,为了保持模板的可用性,增加了一个value变量;
  • 告警策略默认使用动态告警策略sls.builtin.dynamic,行动策略使用了事先创建好的huolang-test-prom-test;

至此,已经将prometheus的告警规则转化为了SLS的告警监控规则,后续就可以修改告警策略和行动策略来享受到SLS告警管理带来的便利。

总结

本文分别简单介绍了SLS告警和Prometheus告警,以及两者之间存在映射的可能性,并且通过实例和脚本将两者进行了转换;通过该迁移方案,用户可以将原有的Prometheus告警规则无缝迁移到SLS告警,然后可以使用SLS告警强大的告警降噪和告警通知渠道功能。在使用过程中如果遇到任何问题,可以咨询SLS的技术支持群。

以下链接供参考

SLS日志服务:https://help.aliyun.com/document_detail/48869.html

SLS告警学习路径:https://help.aliyun.com/learn/markets/aliyuningpath/log/alert

通过Remote Write协议接入Prometheus监控数据:https://help.aliyun.com/document_detail/171781.html

创建告警策略:https://help.aliyun.com/document_detail/207709.html

脚本链接:https://github.com/panawala/prom_alert_to_sls



欢迎扫群加入阿里云-日志服务(SLS)技术交流(集团同学请直接搜索群号11702236加入), 获得第一手资料与支持

相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
目录
相关文章
|
2月前
|
弹性计算 Prometheus Cloud Native
SLS Prometheus存储问题之Union MetricStore在性能测试中是如何设置测试环境的
SLS Prometheus存储问题之Union MetricStore在性能测试中是如何设置测试环境的
|
2月前
|
存储 Prometheus Cloud Native
SLS Prometheus存储问题之为什么SLS时序引擎最终选择了使用C++实现PromQL的部分算子
SLS Prometheus存储问题之为什么SLS时序引擎最终选择了使用C++实现PromQL的部分算子
|
2月前
|
测试技术 UED 存储
SLS Prometheus存储问题之在使用内置降采样时,SLS自动选择适配的指标库该如何解决
SLS Prometheus存储问题之在使用内置降采样时,SLS自动选择适配的指标库该如何解决
|
2月前
|
存储 并行计算 开发工具
SLS Prometheus存储问题之相比客户端SDK聚合写入,SLS网关侧聚合写入有什么优势
SLS Prometheus存储问题之相比客户端SDK聚合写入,SLS网关侧聚合写入有什么优势
|
1月前
|
存储 Prometheus Cloud Native
[prometheus]配置alertmanager和钉钉告警
[prometheus]配置alertmanager和钉钉告警
|
3月前
|
运维 Serverless API
Serverless 应用引擎产品使用合集之sls日志告警调用函数计算,出现抛出的结果异常,是什么原因
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
3月前
|
存储 运维 Serverless
函数计算产品使用问题之日志告警不生效,一般是由于什么造成的
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
4月前
|
存储 Prometheus 并行计算
10倍性能提升-SLS Prometheus 时序存储技术演进
本文将介绍近期SLS Prometheus存储引擎的技术更新,在兼容 PromQL 的基础上实现 10 倍以上的性能提升。同时技术升级带来的成本红利也将回馈给使用SLS 时序引擎的上万内外部客户。
158596 7
|
4月前
|
机器学习/深度学习 运维 监控
用SLS配置日志关键字告警的N种方法
本文由日志关键词告警出发,介绍了使用SLS进行关键词监控告警配置,并且介绍了几种常见的配置方法,可以覆盖关键词监控的大部分场景。
316 0
用SLS配置日志关键字告警的N种方法
|
4月前
|
存储 运维 监控
使用Terraform玩转SLS告警
本文主要介绍使用Terraform来操作SLS告警监控,告警管理。
90 0
使用Terraform玩转SLS告警

热门文章

最新文章

相关产品

  • 日志服务