聚合任务组管理

更新时间:
复制 MD 格式

通过 aliyun cms2 prometheus recording-rule 命令组管理 Prometheus 聚合任务组(AggTaskGroup),实现 RecordingRule 预聚合计算。聚合任务从源 Prometheus 实例读取指标数据,执行 RecordingRule 计算,并将结果写入目标实例,从而降低查询端计算压力。

说明
  • 聚合任务相关命令位于 prometheus recording-rule 命令组下(如 aliyun cms2 prometheus recording-rule list)。

  • 源实例参数为 --prometheus-id,聚合任务组 ID 参数为 --group-id

重要

聚合任务仅支持 Prometheus V2 版本实例。

背景信息

聚合任务对已写入的指标数据做二次预聚合计算。某些 PromQL 查询在查询端计算量大,可通过预聚合规则将计算前移至写入端,减少查询端资源占用,降低 PromQL 复杂度,提高查询性能。

开源 RecordingRule 以规则组形式存在,每个规则组可包含多条规则。云监控聚合任务中,聚合规则配置格式兼容开源 RecordingRule,任务配置中 aggTaskGroupConfig 字段内容为 YAML 格式的 RecordingRule 规则。

前提条件

  • 已完成 CLI 工具安装与配置

  • 已创建 Prometheus V2 版本实例。

  • 聚合任务调度时需要 AliyunLogETLRole 角色。

prometheus recording-rule create — 创建聚合任务组

使用 prometheus recording-rule create 命令在源 Prometheus 实例下创建聚合任务组。

# 创建聚合任务组
aliyun cms2 prometheus recording-rule create --prometheus-id rw-xxx --body '{
  "aggTaskGroupName": "my-recording-rules",
  "aggTaskGroupConfig": "groups:\n- name: node.rules\n  rules:\n  - record: instance:node_cpu_utilisation:rate5m\n    expr: 1 - avg without(cpu)(rate(node_cpu_seconds_total{mode=\"idle\"}[5m]))",
  "targetPrometheusId": "rw-yyy"
}'

# 从 JSON 文件创建
aliyun cms2 prometheus recording-rule create --prometheus-id rw-xxx --body @./recording-rule.json

命令参数

参数

类型

说明

--prometheus-id

string

源 Prometheus 实例 ID(必填)

--body

string

请求 body,内联 JSON 或 @file.json(必填)

--show-example-body

bool

打印示例请求 body 后退出

--show-schema

bool

打印请求 body 的 JSON schema 后退出

Body 必需字段

字段

说明

aggTaskGroupName

聚合任务组名称

aggTaskGroupConfig

RecordingRule YAML 配置内容

targetPrometheusId

目标 Prometheus 实例 ID

说明
  • aggTaskGroupConfig 为 RecordingRule YAML,格式兼容开源 Prometheus。

  • 其他可选字段(scheduleModedelay 等)将使用 API 默认值。

  • 创建成功后,响应返回 aggTaskGroupId(生成的任务组 ID)和 requestId

prometheus recording-rule get — 查询聚合任务组

使用 prometheus recording-rule get 命令获取聚合任务组的完整详情。

aliyun cms2 prometheus recording-rule get --prometheus-id rw-xxx --group-id aggTaskGroup-abc123

# JSON 输出
aliyun cms2 prometheus recording-rule get --prometheus-id rw-xxx --group-id aggTaskGroup-abc123 -o json

命令参数

参数

类型

说明

--prometheus-id

string

源 Prometheus 实例 ID(必填)

--group-id

string

聚合任务组 ID(必填)

prometheus recording-rule update — 更新聚合任务组

使用 prometheus recording-rule update 命令更新已有聚合任务组的配置,仅修改 body 中包含的字段。

aliyun cms2 prometheus recording-rule update --prometheus-id rw-xxx --group-id aggTaskGroup-abc123 \
  --body '{"aggTaskGroupConfig": "...", "targetPrometheusId": "rw-yyy"}'

# 从文件更新
aliyun cms2 prometheus recording-rule update --prometheus-id rw-xxx --group-id aggTaskGroup-abc123 \
  --body @./updated-config.json

命令参数

参数

类型

说明

--prometheus-id

string

源 Prometheus 实例 ID(必填)

--group-id

string

聚合任务组 ID(必填)

--body

string

请求 body,内联 JSON 或 @file.json(必填)

--show-example-body

bool

打印示例请求 body 后退出

--show-schema

bool

打印请求 body 的 JSON schema 后退出

prometheus recording-rule start/stop — 启停聚合任务组

使用 prometheus recording-rule startprometheus recording-rule stop 命令启动或停止聚合任务组。start 将任务组状态置为 Running,stop 将状态置为 Stopped。

# 启动聚合任务组
aliyun cms2 prometheus recording-rule start \
  --prometheus-id rw-xxx --group-id aggTaskGroup-abc123

# 停止聚合任务组
aliyun cms2 prometheus recording-rule stop \
  --prometheus-id rw-xxx --group-id aggTaskGroup-abc123

命令参数

参数

类型

说明

--prometheus-id

string

源 Prometheus 实例 ID(必填)

--group-id

string

聚合任务组 ID(必填)

说明

update 用于配置更新,start/stop 用于启停控制。

prometheus recording-rule delete — 删除聚合任务组

使用 prometheus recording-rule delete 命令删除指定聚合任务组。

警告

删除操作不可逆,聚合任务组及其历史产出无法恢复。

aliyun cms2 prometheus recording-rule delete --prometheus-id rw-xxx --group-id aggTaskGroup-abc123

命令参数

参数

类型

说明

--prometheus-id

string

源 Prometheus 实例 ID(必填)

--group-id

string

聚合任务组 ID(必填)

prometheus recording-rule list — 列出聚合任务组

使用 prometheus recording-rule list 命令列出指定 Prometheus 实例下的所有聚合任务组,支持多种过滤条件和分页查询。

# 列出所有任务组
aliyun cms2 prometheus recording-rule list --prometheus-id rw-xxx

# 按状态过滤
aliyun cms2 prometheus recording-rule list --prometheus-id rw-xxx --status Running

# 按名称搜索
aliyun cms2 prometheus recording-rule list --prometheus-id rw-xxx --query "node"

# 按目标实例过滤
aliyun cms2 prometheus recording-rule list --prometheus-id rw-xxx --target-prometheus-id rw-yyy

# 按标签过滤
aliyun cms2 prometheus recording-rule list --prometheus-id rw-xxx --tag '[{"key":"env","value":"prod"}]'

# 分页查询
aliyun cms2 prometheus recording-rule list --prometheus-id rw-xxx --max-results 10
aliyun cms2 prometheus recording-rule list --prometheus-id rw-xxx --max-results 10 --next-token "xxx"

# 文本(CSV)输出
aliyun cms2 prometheus recording-rule list --prometheus-id rw-xxx -o text

命令参数

参数

类型

说明

--prometheus-id

string

源 Prometheus 实例 ID(必填)

--status

string

按状态过滤(Running/Stopped

--target-prometheus-id

string

按目标 Prometheus 实例 ID 过滤

--filter-ids

string

按 ID 列表过滤(JSON 数组,如 '["aggTaskGroup-xxx"]'

--filter-names

string

按名称列表过滤(JSON 数组,如 '["name1"]'

--query

string

名称模糊搜索

--tag

string

标签过滤(JSON 数组,字段名小写)

--max-results

int32

最大返回数量

--next-token

string

分页 token

使用限制

  • list 为单页请求,不自动翻页。

  • create/update 的 body 不做 CLI 侧 Schema 校验,字段级约束由 API 校验。

  • --tag 必须是 JSON 数组,字段名小写:[{"key":"k","value":"v"}]

  • --filter-ids/--filter-names 必须是 JSON 字符串数组:["id1","id2"]

  • 启停使用独立子命令 start/stop,无 --status 参数。