云原生监控系统Prometheus——服务发现(基于文件的服务发现)
服务发现(基于文件的服务发现)
Prometheus 服务发现自动化检测分类,并且能够识别新目标和变更目标。也就是说。可以在容器平台或云平台中,自动发现并监控新目标或变更目标,动态进行数据采集和处理。
这里我们聊聊基于文件的服务发现。
现在,随着公司业务量增加,当前的静态配置维护工作的量级增加时(比如,targets 列表过长,配置文件急剧增长),再细心的技术人员也容易出现误操作。此时我们可以通过拆分配置文件的方式来提升配置文件的可读性。这就是我们要说的基于文件的服务发现。
基于文件的服务发现只是比静态配置提供了配置功能。但是在 Prometheus 所支持的大部分服务发现方式中,这种不依赖于第三方服务,是比较通用的服务发现方式。这些文件可以是 JSON 或 YAML 格式的文件,但是文件扩展名必须是 JSON 文件使用 .json,YAML 文件使用 .yml 或 .yaml 扩展名。
一、添加 JSON 格式文件
代码示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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 配置文件
代码示例如下:
1 2 3 4 5 6 | scrape_configs: - job_name: 'node_service_discovery' file_sd_configs: - files: - path/*.json #配置文件地址 refresh_interval: 60m #读取配置文件的时间间隔 |
首次添加 JSON 或 YAML 格式的动态服务发现文件时,需要重新启动 Prometheus 服务进行加载配置后才能生效,若是再修改配置文件时无须重新启动,Prometheus 服务会自动刷新加载文件。
三、添加 YAML 格式文件
代码示例如下:
1 2 3 4 5 6 | cd /etc/prometheus mkdir -pv targets vim targets /dev_node .yaml -targets: - "192.168.2.122:9100" |
四、修改 prometheus.yaml 配置文件
代码示例如下:
1 2 3 4 5 6 7 8 | 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 定时刷新加载目标文件,最终实现服务自动发现功能。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具