当您需要将某个Prometheus实例的数据导出,进行自定义业务处理时,可以使用Prometheus数据投递功能,将Prometheus实例数据投递至大数据计算服务MaxCompute处理。MaxCompute能帮助您结合其他的数据源执行大数据计算服务,加工后用于报表分析等。
前提条件
注意事项
选择专有网络进行数据投递时,如果Prometheus实例所在VPC与目标VPC不在同一个,您需要保证目标VPC内的vSwitch的IP已加入Prometheus实例的白名单中,否则会导致网络不通。vSwitch的网段信息可以在专有网络控制台的交换机详情页面获取。
支持数据投递的数据源列表。
实例类型
说明
Prometheus for 云服务
除cloud-product-prometheus名称开头的免费实例
Prometheus for 容器服务
无
Prometheus for 应用监控
无
Prometheus for Flink Serverless
无
Prometheus for Kubernetes
无
通用
除通过OpenTelemetry地址上报上来的数据
费用说明
数据投递至MaxCompute时将创建函数计算 FC(Function Compute)服务,服务名前缀为{task_name}_SINK_FC_TO_MAXCOMPUTE
,由函数计算 FC(Function Compute)将数据写入MaxCompute中,因此将收取函数计算服务费用。数据会攒批后发送给函数计算 FC(Function Compute),因此调用函数计算 FC(Function Compute)次数越少,产生的相关费用越少。您可以登录函数计算控制台查看当前FC资源状态。
步骤一:准备MaxCompute资源
根据MaxCompute文档,任意选择一种方式连接至MaxCompute项目。具体操作,请参见选择连接工具。
确定表结构:设置表结构的列名与Prometheus数据标签名保持一致。若表的列名找不到对应的标签值,那么该列会被写入NULL值。当存在多种指标数据时,表列名应该是这些指标标签名的并集。
假设您导出的指标为以下的两种:
您需要在MaxCompute中根据下面的例子创建SQL表。具体操作,请参见使用SQL分析。
CREATE TABLE metric (
__name__ VARCHAR(50) NOT NULL,
cluster_id VARCHAR(50),
host VARCHAR(50),
node_id VARCHAR(50),
job VARCHAR(50),
instance VARCHAR(50),
cpu VARCHAR(50),
value DOUBLE,
timestamp BIGINT
);
至少存在以下字段:__name__
、value
和timestamp
,它们是Prometheus数据的基本标签。建议您根据业务需要构造表结构,并设置足量字段作为标签映射。若您丢失关键标签,表将收到大量重复的数据。
步骤二:创建投递任务
登录ARMS控制台。
在左侧导航栏选择
,进入可观测监控Prometheus版的数据投递页面。在数据投递页面,单击顶部菜单栏选择目标地域,然后单击新建任务。
在对话框中输入任务名称和任务描述后,单击确定。
在任务编辑页面,配置数据源和投递目标。
单击+ 添加数据源,配置以下参数,然后单击确定。
配置项
说明
示例
Prometheus实例
被投递的Prometheus数据源。
c78cb8273c02*****
数据过滤
设置需要过滤的指标标签,支持正则表达式。多个条件需要换行,条件需要同时满足,才会投递。
__name__=AliyunEcs_CPUUtilization|AliyunEcs_memory_usedutilization regionId=cn-hangzhou id=i-2ze0mxp.*
单击添加目标,选择目标类型为云原生大数据计算服务 MaxCompute,请按照表单所需填写其余信息,然后单击确定。
配置完成后,在任务编辑页面,单击确定,然后单击保存创建投递任务。
步骤三:验证数据被投递至MaxCompute
在SQL代码编辑框,输入以下SQL语句查询metric表中的数据,单击运行,在结果页签查看执行结果。
select * from metric limit 20;