Open
Description
好文推荐: https://sheldon-lu.github.io/sheldon_Gitbook/sd/service-discovery-with-relabel.html
我这里直接给一下 Prometheus 官方文档的翻译和使用示例:
Prometheus relabeling(标签重写)允许对抓取到的指标进行调整,根据配置可以更改、添加、删除标签等操作。下面是 relabeling 配置的参数说明:
翻译
# 源标签选择现有标签的值。它们的内容使用配置的分隔符连接
# 并根据配置的正则表达式匹配来进行替换、保留和删除操作。
[ source_labels: '[' <labelname> [, ...] ']' ]
# 在连接的源标签值之间放置的分隔符。
[ separator: <string> | 默认 = ; ]
# 替换动作中结果值写入的标签。
# 对于替换动作,这是必需的。正则表达式中的捕获组可用。
[ target_label: <labelname> ]
# 抽取的值与之匹配的正则表达式。
[ regex: <regex> | 默认 = (.*) ]
# 取源标签值的哈希的模数。
[ modulus: <uint64> ]
# 如果正则表达式匹配,则执行的正则替换的替换值。
# 正则表达式的捕获组可用。
[ replacement: <string> | 默认 = $1 ]
# 基于正则匹配执行的动作。
[ action: <relabel_action> | 默认 = replace ]
举个栗子
假设我们有一个指标,它含有多个标签,我们想基于某些标签的值对其进行过滤,然后更改或添加一个新的标签。以下是一个 relabel 配置的例子:
目标:
如果 instance 标签的值为 localhost:9090
,我们想要添加或更新一个标签 environment
,其值设置为 development
。
relabel 配置:
- source_labels: [instance]
regex: 'localhost:9090'
target_label: environment
replacement: 'development'
action: replace
解释:
source_labels
: 我们从指标中选择instance
标签作为数据源。regex
: 我们使用正则表达式localhost:9090
来匹配instance
标签的值。target_label
: 我们指定目标标签为environment
。replacement
: 如果匹配成功,我们将environment
标签的值设置为development
。action
: 我们选择的动作是替换(replace
),因为我们想要基于instance
标签的值来更改或添加environment
标签。
Metadata
Metadata
Assignees
Labels
No labels