云原生监控系统Prometheus——服务发现(基于文件的服务发现)
服务发现(基于文件的服务发现)
Prometheus 服务发现自动化检测分类,并且能够识别新目标和变更目标。也就是说。可以在容器平台或云平台中,自动发现并监控新目标或变更目标,动态进行数据采集和处理。
这里我们聊聊基于文件的服务发现。
现在,随着公司业务量增加,当前的静态配置维护工作的量级增加时(比如,targets 列表过长,配置文件急剧增长),再细心的技术人员也容易出现误操作。此时我们可以通过拆分配置文件的方式来提升配置文件的可读性。这就是我们要说的基于文件的服务发现。
基于文件的服务发现只是比静态配置提供了配置功能。但是在 Prometheus 所支持的大部分服务发现方式中,这种不依赖于第三方服务,是比较通用的服务发现方式。这些文件可以是 JSON 或 YAML 格式的文件,但是文件扩展名必须是 JSON 文件使用 .json,YAML 文件使用 .yml 或 .yaml 扩展名。
一、添加 JSON 格式文件
代码示例如下:
cd /etc/prometheus
mkdir -pv targets
vim targets/dev_node.json
{
"targets": [ "192.168.2.1:9090","192.168.1.2:9090" ],
"lables": {
"env": "web",
"job": "linux"
}
},
{
"targets": [ "192.168.2.3:9104","192.168.1.4:9104" ],
"lables": {
"env": "mysql01",
"job": "mysqld"
}
}
]
二、修改 prometheus.yaml 配置文件
代码示例如下:
scrape_configs:
- job_name: 'node_service_discovery'
file_sd_configs:
- files:
- path/*.json #配置文件地址
refresh_interval: 60m #读取配置文件的时间间隔
首次添加 JSON 或 YAML 格式的动态服务发现文件时,需要重新启动 Prometheus 服务进行加载配置后才能生效,若是再修改配置文件时无须重新启动,Prometheus 服务会自动刷新加载文件。
三、添加 YAML 格式文件
代码示例如下:
cd /etc/prometheus
mkdir -pv targets
vim targets/dev_node.yaml
-targets:
- "192.168.2.122:9100"
四、修改 prometheus.yaml 配置文件
代码示例如下:
scrape_configs:
- job_name: 'node_service_discovery'
file_sd_configs:
- files:
- path/*.json #配置文件地址
refresh_interval: 60m #读取配置文件的时间间隔
- path/*.yaml #配置文件地址
refresh_interval: 60m #读取配置文件的时间间隔
五、 建议
基于文件的服务发现仍然是对配置文件进行修改操作。如果你的应用环境中部署了配置管理工具,例如 Ansible、SaltStack、Puppet 等工具,再配合 CMD(配置管理数据库)就可以使用编写好的模版生成服务器、容器或各类应用服务列表的动态配置文件,然后 Prometheus 定时刷新加载目标文件,最终实现服务自动发现功能。