通过 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命令参数
参数 | 类型 | 说明 |
| string | 源 Prometheus 实例 ID(必填) |
| string | 请求 body,内联 JSON 或 |
| bool | 打印示例请求 body 后退出 |
| bool | 打印请求 body 的 JSON schema 后退出 |
Body 必需字段
字段 | 说明 |
| 聚合任务组名称 |
| RecordingRule YAML 配置内容 |
| 目标 Prometheus 实例 ID |
aggTaskGroupConfig为 RecordingRule YAML,格式兼容开源 Prometheus。其他可选字段(
scheduleMode、delay等)将使用 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命令参数
参数 | 类型 | 说明 |
| string | 源 Prometheus 实例 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命令参数
参数 | 类型 | 说明 |
| string | 源 Prometheus 实例 ID(必填) |
| string | 聚合任务组 ID(必填) |
| string | 请求 body,内联 JSON 或 |
| bool | 打印示例请求 body 后退出 |
| bool | 打印请求 body 的 JSON schema 后退出 |
prometheus recording-rule start/stop — 启停聚合任务组
使用 prometheus recording-rule start 和 prometheus 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命令参数
参数 | 类型 | 说明 |
| string | 源 Prometheus 实例 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命令参数
参数 | 类型 | 说明 |
| string | 源 Prometheus 实例 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命令参数
参数 | 类型 | 说明 |
| string | 源 Prometheus 实例 ID(必填) |
| string | 按状态过滤( |
| string | 按目标 Prometheus 实例 ID 过滤 |
| string | 按 ID 列表过滤(JSON 数组,如 |
| string | 按名称列表过滤(JSON 数组,如 |
| string | 名称模糊搜索 |
| string | 标签过滤(JSON 数组,字段名小写) |
| int32 | 最大返回数量 |
| 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参数。