Prometheus服務發現


Prometheus服務發現

目標列表和關聯標簽都是采用手動服務發現的方式。不難看出,在繁雜的工作中維護一長串主機列表並不是一個可擴展的任務(HUP的Prometheus服務器也不是每次都可以優雅地啟動)。尤其對於大多數環境的動態特性,以及被監控主機、應用程序和服務的規模來說,這種局限性更為明顯。因此需要更成熟的服務發現方式。

探索以下幾種服務發現方案:

• 通過配置管理工具填充的文件接收目標列表。
• 查詢API(如Amazon AWS API)以獲取目標列表。
• 使用DNS記錄返回目標列表。

基於文件發現

基於文件的發現只是比靜態配置更高級的一小步,但是它對於配置管理工具的配置非常有用。通過基於文件的發現,普羅米修斯使用文件中指定的目標。這些文件通常由另一個系統生成,例如配置管理系統,如Puppet、Ansible,或者從另一個源(如CMDB)查詢。定期運行腳本或查詢,或觸發它們(重新)填充這些文件。然后,普羅米修斯按照指定的時間表從這些文件中重新加載目標。
這些文件可以是YAML或JSON格式,並包含定義的目標列表,就像我們在靜態配置中定義它們一樣。

image-20200918104234369

  - job_name: 'node'
    file_sd_configs:
      - files:
        - targets/nodes/*.json
        refresh_interval: 5m
  - job_name: 'docker'
    file_sd_configs:
      - files:
        - targets/docker/*.yml
        refresh_interval: 5m

查看配置文件

[root@localhost prometheus]# cd targets/
[root@localhost targets]# ll
總用量 0
drwxr-xr-x. 2 root root 24 9月  18 10:37 docker
drwxr-xr-x. 2 root root 24 9月  18 10:40 nodes
[root@localhost targets]# cat docker/docker.yml
- targets:
  - "192.168.1.124:8080"
[root@localhost targets]# cat nodes/nodes.json
[{
  "targets": [
     "192.168.1.124:9100"
    ]
}]
[root@localhost targets]#

image-20200918104357377

基於API的服務

發現原生的服務發現集成在某些工具和平台上提供,它們內置支持Prometheus。這些服務發現插件使用工具和平台現有的數據存儲或API來返回目標列表。當前可用的本機服務發現插件包括以下平台:

  • Amazon EC2

  • Azure

  • Consul

  • Google Compute Cloud

  • Kubernetes

下面我在研究發現Consul中的服務

基於DNS的服務

發現如果基於文件的服務發現不適合你,或者你的源或服務不支持任何現有的服務發現工具,則可以選擇基於DNS的服務發現。DNS服務發現允許你指定DNS條目列表,然后查詢這些條目中的記錄以發現目標列表。它依賴於A、AAAA或SRV DNS記錄查詢。提示 DNS記錄將由Prometheus服務器上本地定義的DNS服務器解析。例如,Linux上的/etc/resolv.conf。讓我們看一下使用DNS服務發現的新作業。

這里有點懵,實驗就不做了

DNS服務發現依賴於查詢A、AAAA或SRV DNS記錄。
# 基於 SRV 記錄發現
scrape_configs:
- job_name: ‘webapp'
dns_sd_configs:
- names: [‘_prometheus._tcp.xiodi.cn’]
注意:_prometheus 為服務名稱,_tcp 為協議, xiodi.cn 為域名
# 基於 A 記錄
- job_name: 'webapp'
dns_sd_configs:
- names: [ 'c720174.xiodi.cn']
type: A
port: 9090

image-20200918104855408


免責聲明!

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



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