1、下載安裝
node_exporter服務需要在三台機器都安裝,這里我們以一台機器為例:
地址:https://prometheus.io/download/
### 另外兩個節點部署時,需要先創建腳本中運行用戶prometheus
[root@prometheus-server ~]# wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
[root@prometheus-server ~]# tar -xf node_exporter-0.18.1.linux-amd64.tar.gz
[root@prometheus-server ~]# cp node_exporter-0.18.1.linux-amd64/node_exporter /usr/local/bin/
## 編輯啟動腳本
[root@prometheus-server ~]# vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_export
Documentation=https://github.com/prometheus/node_exporter
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/bin/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
## 啟動
[root@prometheus-server ~]# systemctl enable node_exporter
Created symlink from /etc/systemd/system/multi-user.target.wants/node_exporter.service to /usr/lib/systemd/system/node_exporter.service.
[root@prometheus-server ~]# systemctl start node_exporter
## 監題9100端口
[root@prometheus-server ~]# netstat -anlptu|grep 9100
tcp6 0 0 :::9100 :::* LISTEN 5216/node_exporter
Node_exporter安裝非常簡單,下載解壓啟動就可以,node_exporter只是收集操作系統的一些指標,如果想要進行其它服務的監控收集,需要額外安裝對應的exporter服務。這里之所以沒有采用docker方式部署,原因如下:
官方說明:https://github.com/prometheus/node_exporter
2、配置prometheus監控目標
Node_export 相當於一個客戶端一樣,運行在各個節點進行機器數據的收集。
[root@prometheus-server ~]# vim /etc/prometheus/prometheus.yml
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# scheme defaults to 'http'.
- targets: ['localhost:9090']
- job_name: 'node' ### 新增加job
static_configs:
- targets: ['10.10.0.11:9100','10.10.0.12:9100','10.10.0.13:9100'] ### 主機列表
3、訪問prometheus
Status >> targets,可以看到新增加的節點已經成功連接prometheus服務
4、收集系統CPU監控信息
4.1 CPU使用率
公式:100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
4.2 CPU負載
公式:
node_load1 ## 1分鍾負載
node_load5 ##5分鍾負載
node_load15 ##15分鍾負載
5、收集系統內存監控信息
5.1 內存使用率
公式:(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes ))* 100
5.2 可用內存(單位:M)
公式:node_memory_MemAvailable_bytes / 1024 / 1024
6、收集系統磁盤監控信息
6.1 磁盤總大小(單位: G)
公式:node_filesystem_size_bytes {fstype=~"ext4|xfs"} / 1024 / 1024 / 1024
6.2 磁盤剩余大小(單位: G)
公式:node_filesystem_avail_bytes {fstype=~"ext4|xfs"} / 1024 / 1024 / 1024
6.3 磁盤使用率
公式:(1-(node_filesystem_free_bytes{fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"})) * 100
7、收集系統網絡監控信息
7.1 網卡入網流量 (指定某一個網卡)
公式:irate(node_network_receive_bytes_total{device='ens32'}[5m])
7.2 網卡出網流量(指定某一個網卡)
公式:irate(node_network_transmit_bytes_total{device='ens32'}[5m])
說明:以上收集系統各信息,都是通過node_exporter服務進行數據的收集,然后通過prometheus內置的PromQL語句進行組合查詢,對於每一個公式,都可以在prometheus WEB界面測試查詢。
比如,查看系統可用內存,第一張圖是通過prometheus界面promsql語句查詢,第二幅圖是在機器上通過free -lm命令查出:
注意:新版本node_exporter中一些PromQL查詢指標值與舊版本不一致,使用時注意區分。
關於具體的PromQL語句以及公式中函數的使用參考:https://prometheus.io/docs/prometheus/latest/querying/functions/