菜单
开源

本地文件匹配

local.file_match 使用glob模式及doublestar库在本地文件系统中发现文件。

使用方法

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

参数

以下参数被支持:

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

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 目标使用。

合金
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

此示例查找所有容器的日志并进行监控。

合金
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 的导出可以被以下组件消费

注意

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