Prometheus是一款面向云原生的监控软件,支持众多软件、系统数据的采集与监控。您可以将Prometheus数据和告警监控规则迁移到日志服务中,基于日志服务告警系统完成告警。本文介绍如何将Prometheus告警无缝转换为日志服务告警。
背景信息
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所在服务器。
- 打开配置文件,并根据实际情况替换如下参数。具体操作,请参见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
参数 |
说明 |
url |
日志服务MetricStore的URL,格式为https://{project}.{sls-endpoint}/prometheus/{project}/{metricstore}/api/v1/write 。其中:
- {sls-endpoint}:服务入口。更多信息,请参见服务入口。
- {project}:您已创建的Project。
- {metricstore}:您已创建的MetricStore。
注意
- 如果您使用的是阿里云内网,请优先使用内网域名。
- 为保证传输安全性,请务必使用https。
|
basic_auth |
鉴权信息,以Remote Write协议写入数据到日志服务需要BasicAuth鉴权,即您在前提条件中所创建的阿里云AccessKey。其中:
- username为阿里云AccessKey ID。
- password为阿里云AccessKey Secret。
|
queue_config |
用于设置写入的缓存、重试等策略。
为避免过多无效网络请求,建议min_backoff不低于100ms,max_backoff不低于5s。
如果Prometheus数据量较大,可修改 queue_config配置,建议修改为: batch_send_deadline: 20s
capacity: 20480
max_backoff: 5s
max_samples_per_send: 2048
min_backoff: 100ms
min_shards: 100
|
- 验证是否已上传数据到日志服务。
配置好Prometheus后,您可通过预览方式查看数据是否已上传到日志服务。
- 登录日志服务控制台。
- 在Project列表区域,单击目标Project。
- 在页签中,选择目标MetricStore右侧的。
在
消费预览页面,如果有数据,则表示配置成功。

步骤二:迁移Prometheus告警监控规则
日志服务提供开箱即用的Python转换脚本用于迁移Prometheus告警监控规则。
- 下载prom_alert_to_sls-main.zip。
- 安装依赖包。
pip install -r /path/to/requirements.txt
- 修改并运行main.py文件。
main.py文件中的如下内容需根据实际情况配置。
if __name__ == '__main__':
region = '<region>' # 目标Project所在的地域。
metric_project = '<metric_project>' # 目标MetricStore所在的Project。
metric_store = '<metric_store>' # 用于存储Prometheus告警监控规则的MetricStore,需与您在步骤一:接入Prometheus数据时所设置的MetricStore一致。
# 阿里云访问密钥AccessKey。该AccessKey需具备写入数据到MetricStore以及创建告警的权限,即您在前提条件中所创建的阿里云AccessKey。
# 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维。
access_key = '<ak>'
access_secret_key = '<sk>'
action_policy_id = '<user define in sls>' # 设置为您所创建的日志服务告警行动策略ID。
alert_policy_id = 'sls.builtin.dynamic' # 告警策略ID,默认使用动态告警策略sls.builtin.dynamic。
transform_alert_rules('prometheus-rules.yaml',
region,
metric_project,
metric_store,
access_key,
access_secret_key,
action_policy_id,
alert_policy_id)
- 验证迁移结果。
- 登录日志服务控制台。
- 在Project列表区域,单击目标Project。
- 在左侧导航栏中,单击告警。
- 在规则/事务页签中,确认是否迁移Prometheus告警监控规则成功。
如果列表中存在Prometheus告警监控规则,则表示已成功将Prometheus告警监控规则转化为日志服务告警监控规则,后续您可以在日志服务中对Prometheus数据进行告警监控。
