loki.enrich
实验性: 这是一个实验性组件。实验性组件可能会频繁发生不兼容的更改,并且可能会被移除而没有等效替代。必须将
stability.level
标志设置为experimental
才能使用此组件。
loki.enrich
组件通过服务发现目标中的额外标签来丰富日志。它会将传入日志中的一个标签与发现目标中的一个标签进行匹配,并将匹配目标中的指定标签复制到日志条目。
用法
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_label | string | 从发现目标中用于匹配的标签,例如 "__inventory_consul_service" 。 | 是 | |
targets | []discovery.Target | 来自 discovery. 组件的目标列表。 | 是 | |
labels_to_copy | []string | 要从发现目标复制到日志的标签列表。如果为空,则复制所有标签。 | 否 | |
logs_match_label | string | 从传入日志中用于匹配发现目标的标签,例如 "service_name" 。 | target_match_label | 否 |
块
loki.enrich
组件不支持任何块。您可以使用参数配置此组件。
导出值
导出以下值
名称 | 类型 | 描述 |
---|---|---|
receiver | loki.LogsReceiver | 可用于向此组件发送日志的接收器。 |
示例
// 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]
}
组件行为
该组件将日志与发现目标进行匹配,并使用额外标签丰富日志
- 对于每个日志条目,它从日志标签中查找
logs_match_label
的值;如果未指定logs_match_label
,则查找target_match_label
的值。 - 它将此值与发现目标中的
target_match_label
进行匹配。 - 如果找到匹配项,它会将请求的
labels_to_copy
从发现目标复制到日志条目。如果labels_to_copy
为空,则复制所有标签。 - 丰富或未更改的日志条目将被转发到配置的接收器。
注意
默认情况下,
loki.enrich
启动后立即准备就绪,即使没有发现任何目标。如果在元数据同步之前将遥测数据发送到此组件,则数据将原样通过,不会进行丰富。这最有可能影响loki.enrich
在discovery
组件发送新目标列表之前的短时间启动过程。
兼容组件
loki.enrich
可以接受来自以下组件的参数
- 导出 Targets 的组件
- 导出 Loki
LogsReceiver
的组件
loki.enrich
的导出值可由以下组件使用
- 使用 Loki
LogsReceiver
的组件
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能使连接正常工作。请参阅链接文档以获取更多详情。