node-exporter: 采集node節點(物理機、虛擬機、雲主機)監控指標數據,能夠采集到主機的運行指標如CPU, 內存,磁盤,網絡,文件數等信息
1.k8s環境部署node-exporter
把node-export_v0_16.tar.gz鏡像上傳到master節點和node節點,然后解壓鏡像
wget http://download.zhufunin.com/k8s_1.16/node-exporter_v0_16.tar.gz
docker load -i node-exporter_v0_16.tar.gz
2.在k8s集群部署node-exporter組件
(1)在k8s-master節點生成一個node-export.yaml文件
wget http://download.zhufunin.com/k8s_1.16/node-export.yaml cat node-export.yaml kubectl apply -f node-export.yaml
2.通過node-export采集數據
curl http://192.168.124.16:9100/metrics
#node-export默認的監聽端口是9100,可以看到當前主機獲取到的所有監控數據,如下一段所示:
# HELP node_cpu_seconds_total Seconds the cpus spent in each mode.
# TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{cpu="0",mode="idle"} 56136.98
# HELP node_load1 1m load average.
# TYPE node_load1 gauge
node_load1 0.58
#HELP:解釋當前指標的含義,上面表示在每種模式下node節點的cpu花費的時間,以s為單位
#TYPE:說明當前指標的數據類型,上面是counter類型
node_cpu_seconds_total{cpu="0",mode="idle"} :
cpu0上idle進程占用CPU的總時間,CPU占用時間是一個只增不減的度量指標,從類型中也可以看出node_cpu的數據類型是counter(計數器)
node_load1該指標反映了當前主機在最近一分鍾以內的負載情況,系統的負載情況會隨系統資源的使用而變化,因此node_load1反映的是當前狀態,數據可能增加也可能減少,從注釋中可以看出當前指標類型為gauge(標准尺寸)
counter計數器:只是采集遞增的指標
gauge標准尺寸:統計的指標可增加可減少
3.列舉常見的監控指標:
node_boot_time:系統啟動時間
node_cpu:系統CPU使用量
nodedisk*:磁盤IO
nodefilesystem*:文件系統用量
node_load1:系統負載
nodememeory*:內存使用量
nodenetwork*:網絡帶寬
node_time:當前系統時間
go_*:node exporter中go相關指標
process_*:node exporter自身進程相關運行指標
4.使用PromQL語句查詢監控數據
rate(node_cpu[1m])
使用without表達式,可以將標簽CPU去除后聚合數據即可:
avg without(cpu) (rate(node_cpu[1m]))
那如果需要計算系統CPU的總體使用率,通過排除系統閑置的CPU使用率即可獲得:
1 - avg without(cpu) (rate(node_cpu{mode="idle"}[1m]))
5.PromQL總結
PromQL是Prometheus的查詢語言,通過PromQL我們可以對數據進行查詢,過濾,以及聚合,計算等操作。