菜单
正式发布 (GA)

discovery.relabel

在 Alloy 中,目标定义为称为标签的键值对集合。

discovery.relabel 通过应用一个或多个重新标记规则来重写输入目标的标签集。如果未定义任何规则,则输入目标将按原样导出。

discovery.relabel 最常见的用途是过滤目标或标准化传递到下游组件的目标标签集。 rule 块按其在配置文件中出现的顺序应用于每个目标的标签集。 可以通过调用 rules 导出字段中的函数来检索配置的规则。

以双下划线 __ 开头的目标标签被认为是内部标签,并且可能在遥测数据收集之前被其他组件删除。 要保留任何这些标签,请使用 labelmap 操作来删除前缀,或将它们重新映射到不同的名称。 服务发现机制通常将其标签分组在 __meta_* 下。 例如,discovery.kubernetes 组件填充一组 __meta_kubernetes_* 标签,以提供有关发现的 Kubernetes 资源的信息。 如果重新标记规则需要临时存储标签值,例如作为后续步骤的输入,请使用 __tmp 标签名称前缀,因为它保证永远不会被使用。

可以通过为多个 discovery.relabel 组件指定不同的标签。

用法

alloy
discovery.relabel "<LABEL>" {
  targets = "<TARGET_LIST>"

  rule {
    ...
  }

  ...
}

参数

您可以将以下参数与 discovery.relabel 一起使用

名称类型描述默认值必需
targetslist(map(string))要重新标记的目标

您可以将以下块与 discovery.relabel 一起使用

描述必需
rule要应用于目标的重新标记规则。

rule

rule 块配置要应用于目标的重新标记规则。

rule 块包含可应用于输入指标的任何重新标记规则的定义。 如果定义了多个 rule 块,则转换将按从上到下的顺序应用。

以下参数可用于配置 rule。 所有参数都是可选的。 省略的字段采用其默认值。

名称类型描述默认值必需
actionstring要执行的重新标记操作。replace
modulusuint用于计算哈希源标签值的模数的正整数。
regexstring有效的 RE2 表达式,支持带括号的捕获组。 用于匹配从 source_labelseparator 字段组合中提取的值,或在 labelkeep/labeldrop/labelmap 操作期间过滤标签。(.*)
replacementstring如果正则表达式与提取的值匹配,则执行正则表达式替换的值。 支持先前捕获的组。"$1"
separatorstring用于连接 source_labels 中存在的值的分隔符。;
source_labelslist(string)要选择其值的标签列表。 它们的内容使用 separator 连接,并与 regex 匹配。
target_labelstring结果值将写入到的标签。

您可以使用以下操作

  • drop - 删除 regex 与使用 source_labelsseparator 提取的字符串匹配的指标。
  • dropequal - 删除连接的 source_labelstarget_label 匹配的目标。
  • hashmod - 哈希连接的标签,计算其模数 modulus,并将结果写入 target_label
  • keep - 保留 regex 与使用 source_labelsseparator 提取的字符串匹配的指标。
  • keepequal - 删除连接的 source_labelstarget_label 不匹配的目标。
  • labeldrop - 将 regex 与所有标签名称进行匹配。 从指标的标签集中删除任何匹配的标签。
  • labelkeep - 将 regex 与所有标签名称进行匹配。 从指标的标签集中删除任何不匹配的标签。
  • labelmap - 将 regex 与所有标签名称进行匹配。 根据 replacement 字段的内容重命名任何匹配的标签。
  • lowercase - 将 target_label 设置为连接的 source_labels 的小写形式。
  • replace - 将 regex 与连接的标签匹配。 如果存在匹配项,则使用 replacement 字段的内容替换 target_label 的内容。
  • uppercase - 将 target_label 设置为连接的 source_labels 的大写形式。

注意

可以使用 $CAPTURE_GROUP_NUMBER${CAPTURE_GROUP_NUMBER} 表示法引用正则表达式捕获组。

导出的字段

以下字段已导出,可以被其他组件引用

名称类型描述
outputlist(map(string))应用重新标记后的目标集。
rulesRelabelRules当前配置的重新标记规则。

组件运行状况

仅当给定无效配置时,discovery.relabel 才报告为不正常。 在这些情况下,导出的字段将保留其上次正常的值。

调试信息

discovery.relabel 不会公开任何特定于组件的调试信息。

调试指标

discovery.relabel 不会公开任何特定于组件的调试指标。

示例

alloy
discovery.relabel "keep_backend_only" {
  targets = [
    { "__meta_foo" = "foo", "__address__" = "localhost", "instance" = "one",   "app" = "backend"  },
    { "__meta_bar" = "bar", "__address__" = "localhost", "instance" = "two",   "app" = "database" },
    { "__meta_baz" = "baz", "__address__" = "localhost", "instance" = "three", "app" = "frontend" },
  ]

  rule {
    source_labels = ["__address__", "instance"]
    separator     = "/"
    target_label  = "destination"
    action        = "replace"
  }

  rule {
    source_labels = ["app"]
    action        = "keep"
    regex         = "backend"
  }
}

兼容组件

discovery.relabel 可以接受来自以下组件的参数

discovery.relabel 具有可以被以下组件使用的导出

注意

连接某些组件可能不合理,或者组件可能需要进一步配置才能使连接正常工作。 有关更多详细信息,请参阅链接的文档。