prometheus配置文件動態管理


prometheus配置文件動態管理

由於Prometheus是“拉”的方式主動監測,所以需要在server端指定被監控節點的列表。當被監控的節點增多之后,每次增加節點都需要更改配置文件,非常麻煩,我這里用consul-template+consul動態生成配置文件,這種方式同樣適用於其他需要頻繁更改配置文件的服務。另外一種解決方案是etcd+confd,基本現在主流的動態配置系統分這兩大陣營。consul-template的定位和confd差不多,不過它是consul自家推出的模板系統。

1.普通實現方法

先看下普通配置下Prometheus的配置文件樣例:

- job_name: 'node-exporter'

static_configs:

- targets: ['10.167.202.10:9100']

labels:

hostname: 'web1'

- targets: ['10.167.202.11:9100']

labels:

hostname: 'web2'

- targets: ['10.167.202.12:9100']

labels:

hostname: 'web3'

2. file_sd_config實現方法

每次新加監控節點的時候,只需要添加一個新的targets即可,“hostname”是我自定義的一個label標簽,方便區分。

當targets的數量達到幾百上千之后,就產生一個問題,配置文件看起來就會特別冗余。所以有經驗的運維人就會想到用include的方式,把其他的配置文件包含進來,這樣就把一個大而冗余的主配置文件,切分成一個個小的配置文件。Prometheus這里用的方法就是基於文件的服務發現--"file_sd_config"。我這里在prometheus下面新建了一個conf.d的目錄,包含兩個子配置文件,分別監控不同系統的機器,linux和windows的機器:

在prometheus.yml中加入如下的配置

  - job_name: 'linuxnode-discorvery'

    file_sd_configs:

      - files:

        - /apps/prometheus/conf.d/linuxnode-discovery.json

  - job_name: 'windowsnode-discorvery'

    file_sd_configs:

      - files:

        - /apps/prometheus/conf.d/windowsnode-discovery.json

file_sd_config參考樣例

子配置文件可以是YAML或JSON格式,我這里用的JSON格式,示例如下:

cat conf.d/lnode-discovery.json

[

{

"targets": ["10.167.202.235:9100"],

"labels": {

"hostname": "test-01"

}

},

{

"targets": ["10.167.202.199:9100"],

"labels": {

"hostname": "test-02"

}

}

]

啟動服務后,如下:

 
 

 

 
 

以后添加節點,編輯對應的json文件即可,不用重啟服務。

 


免責聲明!

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



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