local.file_match
local.file_match
使用 glob 模式和 doublestar 库发现本地文件系统上的文件。
用法
local.file_match "LABEL" {
path_targets = [{"__path__" = DOUBLESTAR_PATH}]
}
参数
您可以将以下参数与 local.file_match
一起使用
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
path_targets | list(map(string)) | 要展开的目标;在 __path__ 和 __path_exclude__ 键上查找 glob 模式。 | 是 | |
ignore_older_than | duration | 忽略在此持续时间之前修改的文件。 | "0s" | 否 |
sync_period | duration | 同步文件系统和目标的频率。 | "10s" | 否 |
path_targets
使用 doublestar 样式路径。
/tmp/**/*.log
匹配tmp
的所有子目录,并包含任何以*.log
结尾的文件。/tmp/apache/*.log
仅匹配/tmp/apache/
中以*.log
结尾的文件。/tmp/**
匹配tmp
的所有子目录、tmp
本身以及所有文件。
当 ignore_older_than
设置为默认值 0s
时,local.file_match
不会忽略文件。
块
local.file_match
组件不支持任何块。您可以使用参数配置此组件。
导出的字段
以下字段已导出,可供其他组件引用
名称 | 类型 | 描述 |
---|---|---|
targets | list(map(string)) | 从文件系统发现的目标集。 |
每个目标都包含以下标签
__path__
:文件的绝对路径。
组件运行状况
仅当给定无效配置时,local.file_match
才报告为不健康。在这些情况下,导出的字段会保留其最后一次健康值。
调试信息
local.file_match
不公开任何组件特定的调试信息。
调试指标
local.file_match
不公开任何组件特定的调试指标。
示例
以下示例向您展示如何使用 local.file_match
查找日志文件并将它们发送到 Loki
将 /tmp/logs/*.log
文件发送到 Loki
此示例发现 /tmp/logs
下的所有文件和文件夹。绝对路径由 loki.source.file.files
目标使用。
local.file_match "tmp" {
path_targets = [{"__path__" = "/tmp/logs/**/*.log"}]
}
loki.source.file "files" {
targets = local.file_match.tmp.targets
forward_to = [loki.write.endpoint.receiver]
}
loki.write "endpoint" {
endpoint {
url = <LOKI_URL>
basic_auth {
username = <USERNAME>
password = <PASSWORD>
}
}
}
替换以下内容
<LOKI_URL>
:要将日志发送到的 Loki 服务器的 URL。<USERNAME>
:用于向 Loki API 进行身份验证的用户名。<PASSWORD>
:用于向 Loki API 进行身份验证的密码。
将 Kubernetes Pod 日志发送到 Loki
此示例查找 Pod 上的所有日志并监控它们。
discovery.kubernetes "k8s" {
role = "pod"
}
discovery.relabel "k8s" {
targets = discovery.kubernetes.k8s.targets
rule {
source_labels = ["__meta_kubernetes_namespace", "__meta_kubernetes_pod_label_name"]
target_label = "job"
separator = "/"
}
rule {
source_labels = ["__meta_kubernetes_pod_uid", "__meta_kubernetes_pod_container_name"]
target_label = "__path__"
separator = "/"
replacement = "/var/log/pods/*$1/*.log"
}
}
local.file_match "pods" {
path_targets = discovery.relabel.k8s.output
}
loki.source.file "pods" {
targets = local.file_match.pods.targets
forward_to = [loki.write.endpoint.receiver]
}
loki.write "endpoint" {
endpoint {
url = <LOKI_URL>
basic_auth {
username = <USERNAME>
password = <PASSWORD>
}
}
}
替换以下内容
<LOKI_URL>
:要将日志发送到的 Loki 服务器的 URL。<USERNAME>
:用于向 Loki API 进行身份验证的用户名。<PASSWORD>
:用于向 Loki API 进行身份验证的密码。
兼容组件
local.file_match
可以接受来自以下组件的参数
- 导出 目标 的组件
local.file_match
具有可以被以下组件使用的导出
- 使用 目标 的组件
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参阅链接的文档。