发现.文件
注意
在 Alloy
v0.35.0
中,discovery.file
组件已重命名为 local.file_match,discovery.file
被重新用于从一个或多个文件中发现抓取目标。如果您尝试从本地文件系统发现文件而不是在一组文件中抓取目标,则应使用 local.file_match。
discovery.file
从一组文件中发现目标,类似于 Prometheus file_sd_config.
用法
discovery.file "LABEL" {
files = [FILE_PATH_1, FILE_PATH_2, ...]
}
参数
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
files | list(string) | 要读取并从中发现目标的文件。 | 是 | |
refresh_interval | duration | 同步目标的频率。 | “5m” | 否 |
files
中每个元素的最后一个路径段可以包含单个 *,匹配任何字符序列,例如 my/path/tg_*.json
。
导出字段
以下字段被导出,可以被其他组件引用
名称 | 类型 | 描述 |
---|---|---|
targets | list(map(string)) | 从文件系统发现的目标集合。 |
每个目标包含以下标签
__meta_filepath
: 发现目标的文件的绝对路径。
组件健康状况
仅当给定无效配置时,discovery.file
才被报告为不健康。在这些情况下,导出字段保留其最后一个健康值。
调试信息
discovery.file
不公开任何组件特定的调试信息。
调试指标
discovery.file
不公开任何组件特定的调试指标。
示例
示例目标文件
[
{
"targets": [ "127.0.0.1:9091", "127.0.0.1:9092" ],
"labels": {
"environment": "dev"
}
},
{
"targets": [ "127.0.0.1:9093" ],
"labels": {
"environment": "prod"
}
}
]
- targets:
- 127.0.0.1:9999
- 127.0.0.1:10101
labels:
job: worker
- targets:
- 127.0.0.1:9090
labels:
job: prometheus
基本文件发现
此示例从单个文件中发现目标,抓取它们,并将指标写入 Prometheus 远程写入端点。
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 远程写入端点。
它还使用重贴标签规则来保留文件路径作为每个目标上的标签。
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
有可以被以下组件消费的导出内容
- 消费 目标 的组件
注意
连接某些组件可能没有意义,或者组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参阅链接文档。