Prometheus指標采集常用配置


一、node-exporter配置textfile收集器
textfile收集器作用:
運行暴露自定義指標。例如,需要在某個被監控節點上添加一個地理位置的指標.
node-exporter會自動啟動textfile收集器,只需要指定textfile收集器指標所在的目錄即可。使用--collector.textfile.directory指定
如下,定義了一個metadata,里面包含兩個標簽,一個是role,一個是datacenter(nj南京)。最后,指標的值為1,因為它不是計數型、測量型或計時型的指標,而是提供上下文。

echo 'metadata{role="docker_server",datacenter="NJ"} 1' >> /zhao/node-exporter/textfile_collector/metadata.prom

啟動命令./node_exporter --collector.textfile.directory=/zhao/node-exporter/textfile_collector。效果如下

二、node-exporter配置只收集部分系統服務指標
通過systemd收集器白名單過濾
--collector.systemd.unit-whitelist="(docker|ssh|rsyslog).service"

以上兩個收集器完整使用示例

三、Prometheus配置多個targets
如果一個job里有多台主機,只需要在targets里配置多個ip和端口即可,使用逗號隔開

[root@bogon prometheus]# cat prometheus.yml |grep -v '#'|grep -v ^$|tail -n 7
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['192.168.68.17:9104']
  - job_name: 'node'
    static_configs:
    - targets: ['192.168.68.17:9100']
[root@bogon prometheus]#

重啟Prometheus

四、過濾不需要收集的指標
如下,只收集和返回cpu和內存相關的指標

- job_name: 'node'
    static_configs:
    - targets: ['192.168.68.17:9100']
    params:
      collect[]:
        - cpu
        - meminfo

五、配置記錄規則,返回自定義計算指標
有時候,需要將指標做相應計算后再進行返回。這時候我們就需要添加記錄規則
配置prometheus.yml文件,在rule_file:部分添加一行 - "rules/node_rules.yml" 同時,在prometheus.yml配置文件的同級目錄下,創建一個rules文件夾並新增一個node_rules.yml文件,文件內容如下:

groups:
- name: node_rules
  rules:
  - record: instance:node_cpu:avg_rate5m
    expr:  100 - avg (irate(node_cpu_seconds_total{job="node",mode="idle"}[5m])) by (instance) * 100

配置文件解析:記錄規則在規則組groups中定義,這里的規則組叫做node_rules,規則組名稱在服務器中必須是唯一的。編寫規則rules,記錄一個規則值node_cpu:avg_rate5m(節點cpu在5m內的平均速率),計算公式為expr。如需添加多個規則,只需添加多個- record和expr即可。搜索該時間序列只需要輸入instance:node_cpu:avg_rate5m就能搜索到。

六、基於文件的服務發現
靜態配置需要維護一長串主機列表,並不是一個可拓展的任務,一旦規模起來了,這種局限性更為明顯。
基於文件的服務發現比靜態配置更先進一小步,非常適合配置管理工具,例如puppet、ansible。定期執行腳本生成這些文件,Prometheus會按照指定時間計划從這些文件重新加載目標。這些文件可以是yaml或json格式。
用file_sd_configs塊替換prometheus.yml中的static_configs塊。

- job_name: node
  file_sd_configs:
    - files:
      - targets/nods/*.json
      refresh_interval: 5m
- job_name: docker
  file_sd_configs:
    - files:
      - targets/docker/*.json
      refresh_interval: 5m

默認情況下,這些文件發生變化是,Prometheus會自動重新加載文件內容。為以防萬一,還可以指定refresh_interval選項,該值為每個間隔結束時重新加載文件列表中的目標時間。也就是每隔5m重新加載文件列表中的文件。同樣,我們需要在prometheus.yml的同級目錄下,創建targets/{nodes,docker}文件夾
同時,我們還要在剛才新創建的文件夾下創建對應的json文件,內容如下

[{
    "targets":  [
        "ip地址:端口",
        "ip地址:端口"
    ],
    "labels": {
        "datacenter": "nj"
    }
}]

以上json文件,還添加了一個nj標簽。也可以使用yaml格式,如下

- targets:
    - "ip地址:端口",
    - "ip地址:端口"

七、基於API的服務發現
某些工具和平台上提供了原生的服務發現集成,內置支持prometheus。例如Amazon EC2,Azure、Consul,Google Compute Cloud,Kubernetes。這個后續實際使用到了,再進行補充

八、基於DNS的服務發現
暫時沒搞懂什么意思,后續明白了,再進行補充


免責聲明!

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



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