将Prometheus数据投递至大数据计算服务MaxCompute

当您需要将某个Prometheus实例的数据导出,进行自定义业务处理时,可以使用Prometheus数据投递功能,将Prometheus实例数据投递至大数据计算服务MaxCompute处理。MaxCompute能帮助您结合其他的数据源执行大数据计算服务,加工后用于报表分析等。

前提条件

注意事项

  • 选择专有网络进行数据投递时,如果Prometheus实例所在VPC与目标VPC不在同一个,您需要保证目标VPC内的vSwitchIP已加入Prometheus实例的白名单中,否则会导致网络不通。vSwitch的网段信息可以在专有网络控制台的交换机详情页面获取。444.jpg

  • 支持数据投递的数据源列表。

    实例类型

    说明

    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资源

  1. 根据MaxCompute文档,任意选择一种方式连接至MaxCompute项目。具体操作,请参见选择连接工具

  2. 确定表结构:设置表结构的列名与Prometheus数据标签名保持一致。若表的列名找不到对应的标签值,那么该列会被写入NULL值。当存在多种指标数据时,表列名应该是这些指标标签名的并集

假设您导出的指标为以下的两种:

指标示例一

{
	"__name__": "metric1",
	"cluster_id": "***",
	"host": "***",
	"node_id": "***",
	"job": "***",
	"value": 347.51300048828125,
	"timestamp": 1703211584056
}

指标示例二

{
	"__name__": "metric2",
	"cluster_id": "***",
	"job": "***",
  "instance": "****",
  "cpu": "1",
	"value": 1.0,
	"timestamp": 1703211584056
}

您需要在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__valuetimestamp,它们是Prometheus数据的基本标签。建议您根据业务需要构造表结构,并设置足量字段作为标签映射。若您丢失关键标签,表将收到大量重复的数据。

步骤二:创建投递任务

  1. 登录ARMS控制台

  2. 在左侧导航栏选择Prometheus监控 > 数据投递,进入可观测监控Prometheus版的数据投递页面。

  3. 数据投递页面,单击顶部菜单栏选择目标地域,然后单击新建任务

  4. 在对话框中输入任务名称任务描述后,单击确定

  5. 任务编辑页面,配置数据源和投递目标。

    1. 单击+ 添加数据源,配置以下参数,然后单击确定

      配置项

      说明

      示例

      Prometheus实例

      被投递的Prometheus数据源。

      c78cb8273c02*****

      数据过滤

      设置需要过滤的指标标签,支持正则表达式。多个条件需要换行,条件需要同时满足,才会投递。

      __name__=AliyunEcs_CPUUtilization|AliyunEcs_memory_usedutilization
      regionId=cn-hangzhou
      id=i-2ze0mxp.*
    2. 单击添加目标,选择目标类型云原生大数据计算服务 MaxCompute,请按照表单所需填写其余信息,然后单击确定

  6. 配置完成后,在任务编辑页面,单击确定,然后单击保存创建投递任务。

步骤三:验证数据被投递至MaxCompute

SQL代码编辑框,输入以下SQL语句查询metric表中的数据,单击运行,在结果页签查看执行结果。

select * from metric limit 20;