Prometheus是一款面向云原生的监控软件,支持众多软件、系统数据的采集与监控。您可以将Prometheus数据和告警监控规则迁移到日志服务中,基于日志服务告警系统完成告警。本文介绍如何将Prometheus告警无缝转换为日志服务告警。
前提条件
- 已创建日志服务MetricStore。具体操作,请参见创建MetricStore。
- 已创建具备写入MetricStore和创建告警权限的AccessKey。具体的权限策略请参见授予指定Logstore的写入权限、创建告警权限策略。如何创建AccessKey,请参见访问密钥。
- 已创建日志服务告警行动策略。具体操作,请参见创建行动策略。
背景信息
Prometheus告警监控规则配置主要包括告警名称、评估语句、告警labels、告警annoations等信息。Prometheus告警触发后需要在AlertManager中配置告警路由和通知。AlertManager功能强大,但是一套全脚本化的配置,针对非研发人员,并不友好。AlertManager需要对接额外的PagerDuty等系统,才能完成常见的告警值班轮岗等需求,在使用上需要维护各类碎片化的系统。日志服务告警通过阿里云控制台简单的界面化操作即可完成,同时支持比较高阶的功能(例如轮岗值班代班等),可以满足各类运维运营人员的需求。
Prometheus告警监控规则主要包含groups配置、rules配置,内容示例如下:
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告警监控规则与日志服务告警监控规则的映射关系如下表所示。
Prometheus告警监控规则 | 日志服务告警监控规则 |
---|---|
alert | 日志服务告警监控规则名称。 |
expr | 日志服务时序查询的PromQL语句。 |
for | 日志服务告警监控规则中的连续触发阈值。 |
labels | 日志服务告警监控规则中的标签。
如果Prometheus告警监控规则的labels中包含severity等严重度的配置,则会映射为日志服务告警监控规则中的严重度。 |
annotations | 日志服务告警监控规则中的标注。
日志服务告警监控规则中的标注支持大部分Prometheus告警的渲染语法。 |
步骤一:接入Prometheus数据
Prometheus默认将时序数据存储在本地磁盘和内存中,数据量较大时,往往会占用海量内存。您可以通过Prometheus Remote Write功能将数据迁移到日志服务的时序库中进行存储。
步骤二:迁移Prometheus告警监控规则
日志服务提供开箱即用的Python转换脚本用于迁移Prometheus告警监控规则。