当您需要将某Prometheus实例的监控数据导出,进行自定义业务处理时,可以使用Prometheus数据投递功能,将Prometheus实例数据投递至云消息队列Kafka版或云原生大数据计算服务(MaxCompute)处理。您可以根据业务需求,选择相应的投递目标。本文介绍如何创建数据投递任务。
前提条件
已将云服务接入云监控2.0的Prometheus服务。
已开通事件总线EventBridge服务,并登录EventBridge控制台对需要的投递目标类型授权。具体操作,请参见开通事件总线EventBridge并授权。
说明数据投递功能依赖事件总线EventBridge,事件总线 EventBridge 已于2025年06月03日正式商业化,事件总线 EventBridge 计费信息,请参见计费概述。EventBridge支持 2 种计费方式,创建完数据投递任务后,您可以在任务配置中基于业务场景修改 EventBridge 的计费方式。
已创建投递目标相关资源,例如云消息队列Kafka版或云原生大数据计算服务(MaxCompute)。投递目标不同,需要创建的资源也不同。具体操作,请参见云消息队列Kafka版快速入门或将Prometheus数据投递至大数据计算服务MaxCompute。
注意事项
选择专有网络进行数据投递时,如果Prometheus实例所在VPC与目标VPC不在同一个,您需要保证目标VPC内的vSwitch的IP已加入Prometheus实例的白名单中,否则会导致网络不通。vSwitch的网段信息可以在专有网络控制台的交换机详情页面获取。
支持数据投递的数据源列表。
实例类型
说明
Prometheus for 云服务
除cloud-product-prometheus名称开头的免费实例
Prometheus for 容器服务
无
Prometheus for Flink Serverless
无
Prometheus for Kubernetes
无
通用
除通过OpenTelemetry地址上报上来的数据
仅支持从创建任务开始后的实时数据导出,不支持历史数据的投递。
操作步骤
登录云监控2.0控制台,选择目标工作空间,在左侧导航栏选择。
在左侧导航栏单击数据投递。
在数据投递页面,单击顶部菜单栏选择目标地域,然后单击新建任务。
在对话框中输入任务名称和任务描述后,单击确定。
在任务编辑页面,配置数据源和投递目标。
单击+ 添加数据源,配置以下参数,然后单击确定。
配置项
说明
示例
Prometheus 实例
被投递的Prometheus数据源。
c78cb8273c02*****
数据过滤
支持黑名单和白名单机制,过滤规则支持正则表达式,多个条件之间是 and 的关系,留空表示投递所有指标。
只投递 AliyunEcs_CPUUtilization和AliyunEcs_memory_usedutilization。
白名单规则:__name__=AliyunEcs_CPUUtilization|AliyunEcs_memory_usedutilization
只投递指标名前缀为AliyunEcs_的指标且regionId=cn-hangzhou的指标
白名单规则:__name__=AliyunEcs_*
regionId=cn-hangzhou
不投递 label 为 project=abc 的指标
过滤机制:黑名单规则:project=abc
数据打标
设置需要新增的标签,支持对投递的指标数据新增多个label。如果存在多个,则换行。
deliver_test_key1=ssss deliver_test_key2=yyyy单击添加目标,根据投递类型配置投递目标,重试区域建议使用默认配置。
目标类型选择阿里云消息队列Kafka版时,请参见将Prometheus数据投递至Kafka。
目标类型选择云原生大数据计算服务 MaxCompute时,请参见将Prometheus数据投递至大数据计算服务MaxCompute。
目标类型选择Prometheus Remote Write时。请参见将Prometheus数据投递至自建Prometheus实例。
配置完成后,在任务编辑页面单击保存。
新创建的投递任务为未启动状态,在任务详情页面,单击右上角的开启,即可开始投递任务。投递任务启动后,数据经过2~5分钟的延迟即可到达投递目标。
在目标 Prometheus 实例中查询投递的指标,来确认是否投递成功。若2~5分钟后仍查询不到指标,可在任务详情的监控大盘中查看投递任务的监控指标或在错误日志中开启错误日志对投递任务进行观测,排查原因。
数据示例
为使Prometheus监控数据适用于其他阿里云产品,数据投递功能会将传统指标数据转化为JSON格式的数据。
Prometheus监控数据:
http_requests_total{method="POST", handler="/api/tracks"} 1027 1609459200000转化为JSON格式数据:
{ "__name__": "http_requests_total", "method": "POST", "handler": "/api/tracks", "value": 1027, "timestamp": 1609459200000 }