6.prometheus服務發現(基於file、dns)


一、概述

手動配置監控目標不適合大批量的監控節點,尤其是kubernetes。
prometheus 通過服務發現解決這個問題,自動機制來檢測,分類和識別新的和變更的目標。可以通過下面三種方式:
• 通過配置管理工具填充的文件接收目標列表(file_sd_config)。
• 查詢API以獲取目標列表(azure_sd_config、consul_sd_config、ec2_sd_config、openstack_sd_config、kubernetes_sd_config、gce_sd_config等等)。
• 使用DNS記錄返回目標列表(dns_sd_config)。

二、基於文件的目標發現(file_sd_configs)

基於文件的發現這是比靜態配置更高級的一小步,但是它對於配置管理工具的配置非常有用。通過基於文件的發現,Prometheus使用文件中指定的目標。這些文件通常由另一個系統生成,例如配置管理系統,如Puppet、Ansible,或者從另一個源(如CMDB)查詢。定期運行腳本或查詢,或觸發它們重新填充這些文件。然后,Prometheus按照指定的時間表從這些文件中重新加載目標。
這些文件可以是Yaml或者Json格式,並包含定義的目標列表,就像我們在靜態配置總定義它們一樣。
[root@node1 prometheus]# mkdir -p targets/{nodes,docker}
[root@node1 prometheus]# vim targets/nodes/node_exporter.json
[{
  "targets":[
    "192.168.42.133:9100",
    "192.168.42.128:9100"
  ],
  "labels":{
    "datacenter":"CD"
  }
}]
[root@node1 prometheus]# vim targets/docker/CAdvisor.yml
- targets:
  - "192.168.42.133:8181"
[root@node1 prometheus]# vim prometheus.yml
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
 
  - job_name: 'node_exporter'
    file_sd_configs:
    - files:
      - targets/nodes/*.json
      refresh_interval: 5m
 
  - job_name: 'docker_CADvisor'
    file_sd_configs:
    - files:
      - targets/docker/*.yml
      refresh_interval: 5m
[root@node1 prometheus]# docker restart prometheus-server 
在web端可以看到配置文件已更新,並且各個target采集數據正常。
在metric查詢框中可以查詢到新采集的數據。(如果graph查詢到以前的實驗數據也很正常,因為會存儲)

三、基於DNS的目標發現

DNS服務發現依賴於查詢A、AAAA或SRV DNS記錄。
基於DNS的服務發現,需要搭建一台配置好的DNS服務器,參見: https://www.cnblogs.com/cmxu/p/12272997.html
將prometheus-server所在主機的dns設置為剛剛部署好的dns,dns配置好解析記錄如下:
scrape_configs:
  - job_name: 'node_exporter_dns'   #基於SRV記錄發現,不手動指定,默認就是基於SRV
    dns_sd_configs:
    - names: ['_prometheus._tcp.cmxu.com']
 
  - job_name: 'docker_CADvisor_dns'  #基於A記錄發現
    dns_sd_configs:
    - names: ['node1.cmxu.com']
      type: A
      port: 8181
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM