云原生监控系统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 定时刷新加载目标文件,最终实现服务自动发现功能。

posted @ 2022-07-17 16:10  左扬  阅读(369)  评论(0编辑  收藏  举报
levels of contents