菜单
开源

本地.file_match

local.file_match 通过使用 glob 匹配模式和 doublestar 库在本地文件系统中发现文件。

用法

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

参数

支持以下参数

名称类型描述默认值必需
path_targetslist(map(string))要展开的目标;在 __path____path_exclude__ 键上查找 glob 匹配模式。
sync_period持续时间同步文件系统和目标的频率。"10s"

path_targets 使用 doublestar 风格路径。

  • /tmp/**/*.log 将匹配 tmp 的所有子文件夹以及以 *.log 结尾的所有文件。
  • /tmp/apache/*.log 将仅匹配 /tmp/apache/ 中以 *.log 结尾的文件。
  • /tmp/** 将匹配 tmp 的所有子文件夹、tmp 自己以及所有文件。

导出字段

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

名称类型描述
targetslist(map(string))从文件系统中发现的集合目标。

每个目标包括以下标签

  • __path__: 文件的绝对路径。

组件健康

local.file_match 仅在给出无效配置时报告为不健康。在这种情况下,导出字段将保留其最后的健康值。

调试信息

local.file_match 不公开任何特定组件的调试信息。

调试指标

local.file_match 不公开任何特定组件的调试指标。

示例

/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 容器日志发送到 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 具有可以由以下组件消费的导出

注意

连接某些组件可能不合理,或者组件可能需要进一步配置才能正确连接。有关详细信息,请参阅相关文档。