菜单
正式发布 (GA)

local.file_match

local.file_match 使用 glob 模式和 doublestar 库发现本地文件系统上的文件。

用法

alloy
local.file_match "LABEL" {
  path_targets = [{"__path__" = DOUBLESTAR_PATH}]
}

参数

您可以将以下参数与 local.file_match 一起使用

名称类型描述默认值必需
path_targetslist(map(string))要展开的目标;在 __path____path_exclude__ 键上查找 glob 模式。
ignore_older_thanduration忽略在此持续时间之前修改的文件。"0s"
sync_periodduration同步文件系统和目标的频率。"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 组件不支持任何块。您可以使用参数配置此组件。

导出的字段

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

名称类型描述
targetslist(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 目标使用。

alloy
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 上的所有日志并监控它们。

alloy
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 具有可以被以下组件使用的导出

注意

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