菜单
开源

发现.文件

注意

在 Alloy v0.35.0 中,discovery.file 组件已重命名为 local.file_matchdiscovery.file 被重新用于从一个或多个文件中发现抓取目标。

如果您尝试从本地文件系统发现文件而不是在一组文件中抓取目标,则应使用 local.file_match

discovery.file 从一组文件中发现目标,类似于 Prometheus file_sd_config.

用法

alloy
discovery.file "LABEL" {
  files = [FILE_PATH_1, FILE_PATH_2, ...]
}

参数

支持以下参数

名称类型描述默认值必需
fileslist(string)要读取并从中发现目标的文件。
refresh_intervalduration同步目标的频率。“5m”

files 中每个元素的最后一个路径段可以包含单个 *,匹配任何字符序列,例如 my/path/tg_*.json

导出字段

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

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

每个目标包含以下标签

  • __meta_filepath: 发现目标的文件的绝对路径。

组件健康状况

仅当给定无效配置时,discovery.file 才被报告为不健康。在这些情况下,导出字段保留其最后一个健康值。

调试信息

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

调试指标

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

示例

示例目标文件

json
[
  {
    "targets": [ "127.0.0.1:9091", "127.0.0.1:9092" ],
    "labels": {
      "environment": "dev"
    }
  },
  {
    "targets": [ "127.0.0.1:9093" ],
    "labels": {
      "environment": "prod"
    }
  }
]
yaml
- targets:
  - 127.0.0.1:9999
  - 127.0.0.1:10101
  labels:
    job: worker
- targets:
  - 127.0.0.1:9090
  labels:
    job: prometheus

基本文件发现

此示例从单个文件中发现目标,抓取它们,并将指标写入 Prometheus 远程写入端点。

alloy
discovery.file "example" {
  files = ["/tmp/example.json"]
}

prometheus.scrape "default" {
  targets    = discovery.file.example.targets
  forward_to = [prometheus.remote_write.demo.receiver]
}

prometheus.remote_write "demo" {
  endpoint {
    url = PROMETHEUS_REMOTE_WRITE_URL

    basic_auth {
      username = USERNAME
      password = PASSWORD
    }
  }
}

替换以下内容

  • PROMETHEUS_REMOTE_WRITE_URL: 要发送指标的 Prometheus remote_write 兼容服务器的 URL。
  • USERNAME: 用于对 remote_write API 进行身份验证的用户名。
  • PASSWORD: 用于对 remote_write API 进行身份验证的密码。

带有保留文件路径标签的文件发现

此示例从通配符文件路径发现目标,抓取它们,并将指标写入 Prometheus 远程写入端点。

它还使用重贴标签规则来保留文件路径作为每个目标上的标签。

alloy
discovery.file "example" {
  files = ["/tmp/example_*.yaml"]
}

discovery.relabel "keep_filepath" {
  targets = discovery.file.example.targets
  rule {
    source_labels = ["__meta_filepath"]
    target_label = "filepath"
  }
}

prometheus.scrape "default" {
  targets    = discovery.relabel.keep_filepath.output
  forward_to = [prometheus.remote_write.demo.receiver]
}

prometheus.remote_write "demo" {
  endpoint {
    url = PROMETHEUS_REMOTE_WRITE_URL

    basic_auth {
      username = USERNAME
      password = PASSWORD
    }
  }
}

替换以下内容

  • PROMETHEUS_REMOTE_WRITE_URL: 要发送指标的 Prometheus remote_write 兼容服务器的 URL。
  • USERNAME: 用于对 remote_write API 进行身份验证的用户名。
  • PASSWORD: 用于对 remote_write API 进行身份验证的密码。

兼容组件

discovery.file 有可以被以下组件消费的导出内容

注意

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