一、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的服務發現
暫時沒搞懂什么意思,后續明白了,再進行補充