Skip to content

Prometheus Relabel 重写标签 #341

Open
@Bpazy

Description

@Bpazy

好文推荐: 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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions