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 capacity20480 max_backoff 5s max_samples_per_send2048 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。内容格式举例如下:
groupsname alert rulesalert 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加入), 获得第一手资料与支持