使用基于文件的服务发现来发现数据采集目标
Prometheus 提供了多种用于发现抓取目标的服务发现选项, 包括 Kubernetes, Consul 等。如果您使用系统当前不支持服务发现,则 Prometheus 的基于文件的服务发现机制可能会最好地满足您的用例,您可以在 JSON 文件中列出采集目标(以及有关这些目标的元数据)。
在本指南中,我们将:
在本地安装并运行 PrometheusNode Exporter
创建
targets.json
文件,为 Node Exporter 指定主机和端口信息安装并运行 Prometheus实例,该实例配置为使用
targets.json
文件发现 Node Exporter
安装并运行 Node Exporter
请参阅使用 Node Exporter 监控 Linux 主机的安装部分。
节点导出器在 9100 端口上运行。为确保节点导出器公开指标:
数据指标输出应该如下所示:
安装配置并运行 Prometheus
像 Node Exporter 一样,Prometheus 是一个静态二进制文件,可以通过 tar 包安装。下载适合您平台的最新版 并解压它:
解压目录包含 prometheus.yml
配置文件。使用如下内容替换该文件:
此配置指定存在一个名为 node 的作业(用于Node Exporter),该作业从 targets.json
文件中检索 Node Exporter 实例的主机和端口信息。
This configuration specifies that there is a job called node
(for the Node Exporter) that retrieves host and port information for Node Exporter instances from a targets.json
file.
创建 targets.json
文件并将此内容添加到其中:
NOTE: 在本指南中,为了简洁起见,我们将手动使用 JSON 服务发现配置。 但是,一般而言,我们建议您改用某种 JSON 生成程序或工具。
此配置指定一个带有 localhost:9100
目标的名为 node
的作业
现在你可以启动 Prometheus:
如果 Prometheus 成功启动,您应该在日志中看到如下行:
公开发现服务的数据指标
随着 Prometheus 的启动和运行,您可以使用 Prometheus 表达式浏览器检索 node
公开的指标。例如,如果您查询 [up{job="node"}
指标,则可以看到 Node Exporter 恰好被发现。
动态更改目标列表
当使用Prometheus的基于文件的服务发现机制时,Prometheus实例将侦听对该文件的更改并自动更新抓取目标列表,而无需重新启动实例。 为了演示这一点,请在端口 9200 上启动另一个 Node Exporter 实例。首先导航到包含 Node Exporter 二进制文件的目录,然后在新的终端窗口中运行以下命令:
现在,通过修改 targets.json
配置为新的 Node Exporter 添加一个条目:
保存更改后,Prometheus 将自动收到新目标列表的通知。up{job="node"}
数据指标将显示instance
标签分别为 localhost:9100
和 localhost:9200
的两个实例,
小结
在本指南中,您安装并运行了 Prometheus Node Exporter,并配置了 Prometheus 使用基于文件的服务发现从 Node Exporter 中发现和采集指标。
最后更新于