目錄
1.node_exporter簡介
2.部署node_exporter
2.1.安裝node_exporter
2.2.編寫system啟動腳本
3.prometheus監(jiān)控Linux主機(jī)
3.1.修改配置文件增加主機(jī)節(jié)點
3.2.主機(jī)添加成功
4.監(jiān)控Linux主機(jī)CPU、內(nèi)存、磁盤使用率
4.1.監(jiān)控CPU使用率
4.1.1.獲取空閑CPU監(jiān)控數(shù)據(jù)
4.1.2.獲取5分鐘內(nèi)的監(jiān)控數(shù)據(jù)
4.1.3.獲取5分鐘內(nèi)的CPU平均空閑情況
4.1.4.獲取CPU5分鐘內(nèi)使用率
4.2.監(jiān)控內(nèi)存使用率
4.2.1.獲取空閑內(nèi)存
4.2.2.獲取空閑內(nèi)存率
4.2.3.獲取內(nèi)存使用率
4.3.監(jiān)控磁盤使用率
4.3.1.獲取磁盤空閑率
4.3.2.獲取磁盤使用率
5.監(jiān)控系統(tǒng)服務(wù)狀態(tài)
5.1.配置node_exporter啟動參數(shù)
5.2.查看服務(wù)的監(jiān)控狀態(tài)
1.node_exporter簡介
node_exporter常用于系統(tǒng)監(jiān)控,使用go語言編寫的指標(biāo)收集器
node_exporter操作文檔:https://prometheus.io/docs/guides/node-exporter/
prometheus支持的exporters列表:https://prometheus.io/docs/instrumenting/exporters/
2.部署node_exporter
環(huán)境準(zhǔn)備,在所有機(jī)器上都部署node_exporter,步驟都一樣
IP | 角色 |
---|---|
192.168.81.210 | prometheus、node_exporter、docker |
192.168.81.220 | node_exporter、docker |
192.168.81.230 | node_exporter、docker |
2.1.安裝node_exporter
node_exporter下載地址: https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz
tar xf node_exporter-1.0.1.linux-amd64.tar.gz
mv node_exporter-1.0.1.linux-amd64 /data/node_exporter/
cp /data/node_exporter/node_exporter /usr/bin/
2.2.編寫system啟動腳本
1.編寫文件
vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=https://prometheus.io
[Service]
Restart=on-failure
ExecStart=/data/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
2.啟動
systemctl daemon-reload
systemctl start node_exporter.service
systemctl enable node_exporter.service
3.prometheus監(jiān)控Linux主機(jī)
3.1.修改配置文件增加主機(jī)節(jié)點
我們使用自動發(fā)現(xiàn)來實現(xiàn),修改完配置加載一下
1.修改配置文件
[root@prometheus-server ~]# vim /data/prometheus/prometheus.yml
- job_name: 'centos7-node'
file_sd_configs:
- files: ['/data/prometheus/targets/node/*.yml']
refresh_interval: 5s
2.加載配置
[root@prometheus-server ~]# curl -XPOST 192.168.81.210:9090/-/reload
3.編寫自動發(fā)現(xiàn)文件
[root@prometheus-server ~]# mkdir /data/prometheus/targets/node
[root@prometheus-server ~]# vim /data/prometheus/targets/node/node.yml
- targets:
- '192.168.81.210:9100'
- '192.168.81.220:9100'
- '192.168.81.230:9100'
labels:
idc: "bj"
3.2.主機(jī)添加成功
4.監(jiān)控Linux主機(jī)CPU、內(nèi)存、磁盤使用率
4.1.監(jiān)控CPU使用率
CPU的監(jiān)控項名稱是:node_cpu_seconds_total,使用總量
直接執(zhí)行node_cpu_seconds_total查詢后會出現(xiàn)很多監(jiān)控指標(biāo),顯然不是想要的
node_cpu_seconds_total執(zhí)行后會出現(xiàn)很多監(jiān)控指標(biāo),其中各種類型的比如系統(tǒng)態(tài)、用戶態(tài)都會由mode標(biāo)簽來區(qū)分
我們想要查詢CPU的使用率的思路是:
? 查出當(dāng)前空閑的CPU百分比,最后用100減去,mode標(biāo)簽值idle就表示當(dāng)前空閑的CPU值
4.1.1.獲取空閑CPU監(jiān)控數(shù)據(jù)
mode標(biāo)簽值為idle的為空閑
node_cpu_seconds_total{mode='idle'}
4.1.2.獲取5分鐘內(nèi)的監(jiān)控數(shù)據(jù)
上一步雖然可以查出來結(jié)果,但是不太理想,因為CPU是不斷波動的,我們可以在增加一個條件,查詢5分鐘內(nèi)的一個CPU使用情況
4.1.3.獲取5分鐘內(nèi)的CPU平均空閑情況
我們可以使用irate和avg函數(shù)結(jié)合剛才查詢出5分鐘內(nèi)數(shù)據(jù)做一個平均情況展示
函數(shù)的使用方法:函數(shù)(指標(biāo)獲取方式)
avg(irate(node_cpu_seconds_total{mode=‘idle’}[5m])) by (instance)
by(instance)表示以instance標(biāo)簽進(jìn)行分組
4.1.4.獲取CPU5分鐘內(nèi)使用率
最后我們可以*100得出一個百分比的空閑率,再由100-即可得到CPU的使用率
100 - (avg(irate(node_cpu_seconds_total{mode='idle'}[5m])) by (instance) *100)
4.2.監(jiān)控內(nèi)存使用率
由于內(nèi)存的監(jiān)控項沒有像CPU一樣區(qū)分了很多標(biāo)簽,因此內(nèi)存監(jiān)控相較于CPU則需要結(jié)合很多個監(jiān)控項
node_memory_MemFree_bytes //空閑內(nèi)存
node_memory_MemTotal_bytes //總內(nèi)存
node_memory_Cached_bytes //緩存
node_memory_Buffers_bytes //緩沖區(qū)內(nèi)存
監(jiān)控內(nèi)存使用的思路:
? 1.空閑內(nèi)存+緩存+緩沖區(qū)內(nèi)存得出空閑總內(nèi)存
? 2.得出的空閑總內(nèi)存再除總內(nèi)存大小再乘100,得出空閑率
? 3.再用100-空閑率就得出使用率
4.2.1.獲取空閑內(nèi)存
(node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes)
4.2.2.獲取空閑內(nèi)存率
(node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100
4.2.3.獲取內(nèi)存使用率
100 - ((node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100)
4.3.監(jiān)控磁盤使用率
關(guān)于磁盤使用率,這里我們用到的主要有:
? node_filesystem_free_bytes //剩余磁盤空間
? node_filesystem_size_bytes //磁盤空間總大小
這兩個監(jiān)控項中都有相同的標(biāo)簽可以關(guān)聯(lián),我們這里用到的標(biāo)簽有fstype,fstype標(biāo)簽值是關(guān)于磁盤的文件系統(tǒng)類型,對于磁盤監(jiān)控,我們主要對xfs、ext4等文件系統(tǒng)的磁盤進(jìn)行監(jiān)控,像tmpfs這種的不必要監(jiān)控,另一個主要的標(biāo)簽是mountpoint,這個標(biāo)簽值主要用來儲存磁盤的掛載點,我們可以通過標(biāo)簽來選擇要對那個掛載點的磁盤進(jìn)行監(jiān)控
磁盤使用率實現(xiàn)思路:
? 1.由磁盤空閑容量除磁盤總?cè)萘砍?00即可得到磁盤空閑率
? 2.用100減磁盤空閑率即可得到磁盤使用率
在使用邏輯運算時最好習(xí)慣性加一個()防止錯誤
我們監(jiān)控/目錄的磁盤使用情況
4.3.1.獲取磁盤空閑率
node_filesystem_free_bytes{fstype=~"ext4|xfs",mountpoint="/"} / node_filesystem_size_bytes{fstype=~"ext4|xfs",mountpoint="/"} *100
可以看到得出的結(jié)果和系統(tǒng)df命令查到的是一致的,空閑84,代表已經(jīng)使用16
4.3.2.獲取磁盤使用率
100 - (node_filesystem_free_bytes{fstype=~"ext4|xfs",mountpoint="/"} / node_filesystem_size_bytes{fstype=~"ext4|xfs",mountpoint="/"} *100)
所差不多
5.監(jiān)控系統(tǒng)服務(wù)狀態(tài)
監(jiān)控服務(wù)的狀態(tài),例如nginx、docker這種服務(wù)器的啟動狀態(tài)
node_exporter是根據(jù)systemd去監(jiān)控的,因此只有能用systemctl啟動的服務(wù)器才能被監(jiān)控到
配置非常簡單,只需要在啟動時開啟system監(jiān)控,并指定監(jiān)控什么服務(wù)即可
配置system監(jiān)控的參數(shù):
–collector.systemd //開啟system監(jiān)控
–collector.systemd.unit-whitelist=".+" //對那些服務(wù)啟動system監(jiān)控,可以使用正則匹配
5.1.配置node_exporter啟動參數(shù)
三臺監(jiān)控主機(jī)都要操作
vim /usr/lib/systemd/system/node_exporter.service
ExecStart=/data/node_exporter/node_exporter --collector.systemd --collector.systemd.unit-whitelist=(docker|sshd|node_exporter).service
重啟服務(wù)
systemctl daemon-reload
systemctl restart node_exporter.service
5.2.查看服務(wù)的監(jiān)控狀態(tài)
以docker為例,我們查詢docker存活狀態(tài)
node_systemd_unit_state使用這個監(jiān)控項查看,里面也有很多標(biāo)簽,name=“docker.service”,標(biāo)簽name表示服務(wù)的名稱, state=“active”,state表示服務(wù)的狀態(tài),active表示活動的,對應(yīng)的監(jiān)控值也是1,如果為1則表示正常,不為1表示異常文章來源地址http://www.zghlxwxcb.cn/news/detail-853588.html
node_systemd_unit_state{name="docker.service", state="active"}
存活狀態(tài)文章來源:http://www.zghlxwxcb.cn/news/detail-853588.html
node_systemd_unit_state使用這個監(jiān)控項查看,里面也有很多標(biāo)簽,name=“docker.service”,標(biāo)簽name表示服務(wù)的名稱, state=“active”,state表示服務(wù)的狀態(tài),active表示活動的,對應(yīng)的監(jiān)控值也是1,如果為1則表示正常,不為1表示異常
node_systemd_unit_state{name="docker.service", state="active"}
到了這里,關(guān)于prometheus使用node_exporter監(jiān)控Linux主機(jī)CPU、內(nèi)存、磁盤、服務(wù)運行狀況的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!