菜单
实验性 开源

loki.enrich

实验性: 这是一个实验性组件。实验性组件可能会频繁发生不兼容的更改,并且可能会被移除而没有等效替代。必须将 stability.level 标志设置为 experimental 才能使用此组件。

loki.enrich 组件通过服务发现目标中的额外标签来丰富日志。它会将传入日志中的一个标签与发现目标中的一个标签进行匹配,并将匹配目标中的指定标签复制到日志条目。

用法

alloy
loki.enrich "<LABEL>" {
  // List of targets from a discovery component
  targets = <DISCOVERY_COMPONENT>.targets
  
  // Which label from discovered targets to match against
  match_label = "<LABEL>"
  
  // Which label from incoming logs to match against
  source_label = "<LABEL>"
  
  // List of labels to copy from discovered targets to logs
  labels_to_copy = ["<LABEL>", ...]
  
  // Where to send enriched logs
  forward_to = [<RECEIVER_LIST>]
}

参数

支持以下参数

名称类型描述默认值必需
forward_to[]loki.LogsReceiver要发送丰富日志的接收器列表。
target_match_labelstring从发现目标中用于匹配的标签,例如 "__inventory_consul_service"
targets[]discovery.Target来自 discovery. 组件的目标列表。
labels_to_copy[]string要从发现目标复制到日志的标签列表。如果为空,则复制所有标签。
logs_match_labelstring从传入日志中用于匹配发现目标的标签,例如 "service_name"target_match_label

loki.enrich 组件不支持任何块。您可以使用参数配置此组件。

导出值

导出以下值

名称类型描述
receiverloki.LogsReceiver可用于向此组件发送日志的接收器。

示例

alloy
// Configure HTTP discovery
discovery.http "default" {
    url = "http://network-inventory.example.com/prometheus_sd"
}

discovery.relabel "default" {
    targets = discovery.http.default.targets
    rule {
        action        = "replace"
        source_labels = ["__inventory_rack"]
        target_label  = "rack"
    }
    rule {
        action        = "replace"
        source_labels = ["__inventory_datacenter"]
        target_label  = "datacenter"
    }
    rule {
        action        = "replace"
        source_labels = ["__inventory_environment"]
        target_label  = "environment"
    }
    rule {
        action        = "replace"
        source_labels = ["__inventory_tenant"]
        target_label  = "tenant"
    }
    rule {
        action        = "replace"
        source_labels = ["__inventory_primary_ip"]
        target_label  = "primary_ip"
    }
}

// Receive syslog messages
loki.source.syslog "incoming" {
    listener {
        address = ":514"
        protocol = "tcp"
        labels = {
            job = "syslog"
        }
    }
    forward_to = [loki.enrich.default.receiver]
}

// Enrich logs using HTTP discovery
loki.enrich "default" {
    // Use targets from HTTP discovery (after relabeling)
    targets = discovery.relabel.default.output

    // Match hostname from logs to DNS name
    target_match_label = "primary_ip"

    forward_to = [loki.write.default.receiver]
}

组件行为

该组件将日志与发现目标进行匹配,并使用额外标签丰富日志

  1. 对于每个日志条目,它从日志标签中查找 logs_match_label 的值;如果未指定 logs_match_label,则查找 target_match_label 的值。
  2. 它将此值与发现目标中的 target_match_label 进行匹配。
  3. 如果找到匹配项,它会将请求的 labels_to_copy 从发现目标复制到日志条目。如果 labels_to_copy 为空,则复制所有标签。
  4. 丰富或未更改的日志条目将被转发到配置的接收器。

注意

默认情况下,loki.enrich 启动后立即准备就绪,即使没有发现任何目标。如果在元数据同步之前将遥测数据发送到此组件,则数据将原样通过,不会进行丰富。这最有可能影响 loki.enrichdiscovery 组件发送新目标列表之前的短时间启动过程。

兼容组件

loki.enrich 可以接受来自以下组件的参数

loki.enrich 的导出值可由以下组件使用

注意

连接某些组件可能不合理,或者组件可能需要进一步配置才能使连接正常工作。请参阅链接文档以获取更多详情。