我已将 Prometheus 设置为使用来自 prometheus-ecs-discovery:
的文件 sdscrape_configs:
- job_name: ecs
file_sd_configs:
- files:
- /prometheus/ecs_file_sd.yml
这会在其他标签中添加任务 arn 作为标签:
container_label_com_amazonaws_ecs_task_arn=
"arn:aws:ecs:us-west-1:xxxxxx:task/2c1655cd-36b7-4db9-4326-ee90537b6271"
在 grafana 中,我想使用任务 ID(在我的示例中为
2c1655cd-36b7-4db9-4326-ee90537b6271
)作为大部分统计数据的图例,可以从任务 arn 中提取。我可以以某种方式添加一个新标签吗?
这可以使用 relabel_configs 来实现。这将允许您从源标签创建新的目标标签。
scrape_configs:
- job_name: ecs
file_sd_configs:
- files:
- /prometheus/ecs_file_sd.yml
relabel_configs:
- source_labels: [container_label_com_amazonaws_ecs_task_arn]
regex: '.*\/(.*)'
replacement: '${1}'
target_label: task_id
上面将创建一个名为
task_id
的新标签,其值为 /
标签的 container_label_com_amazonaws_ecs_task_arn
之后的部分。
虽然我不认为它解决了OP的问题,但我遇到了这个问题,因为标题与我所坚持的类似。
我有标签,例如:
label_1="blue"
和 label_2="green"
我想添加一个新标签 (label_3
),使用 label_2
的值与 label_1
上的正则表达式匹配。
这可以使用
relabel_configs
和多个 source_labels
来实现 https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
- source_labels: [label_1, label_2]
separator: ';'
target_label: label_3
regex: "blue;(.+)"
replacement: '${2}'
action: replace