在Prometheus的架構(gòu)設(shè)計(jì)中,PrometheusServer并不直接服務(wù)監(jiān)控特定的目標(biāo),其主要任務(wù)負(fù)責(zé)數(shù)據(jù)的收集,存儲(chǔ)并且對外提供數(shù)據(jù)查詢支持。因此為了能夠能夠監(jiān)控到某些東西,如主機(jī)的CPU使用率,我們需要使用到Exporter。Prometheus周期性的從Exporter暴露的HTTP服務(wù)地址(通常是/metrics)拉取監(jiān)控樣本數(shù)據(jù)。
從上面的描述中可以看出Exporter可以是一個(gè)相對開放的概念,其可以是一個(gè)獨(dú)立運(yùn)行的程序獨(dú)立于監(jiān)控目標(biāo)以外,也可以是直接內(nèi)置在監(jiān)控目標(biāo)中。只要能夠向Prometheus提供標(biāo)準(zhǔn)格式的監(jiān)控樣本數(shù)據(jù)即可。
這里為了能夠采集到主機(jī)的運(yùn)行指標(biāo)如CPU, 內(nèi)存,磁盤等信息。我們可以使用Node Exporter 。
node_exporter安裝部署
配置hosts文件解析并修改主機(jī)名(在Prometheus ,node1,node2都要配置)Prometheus安裝文檔
[root@locathost ~]# vim /etc/hosts
192.168.100.100 prometheus
192.168.100.10 node2
192.168.100.9 node2
修改主機(jī)名
Prometheus服務(wù)器
[root@prometheus ~]# hostnamectl set-hostname prometheus
node1 node2
[root@node1 ~]# hostnamectl set-hostname node1
[root@node2 ~]# hostnamectl set-hostname node2
配置時(shí)間服務(wù)器同步時(shí)間
prometheus服務(wù)器
[root@prometheus ~]# yum -y install ntp ntpdate
[root@prometheus ~]# sed -i '/^server/s/^/#/g' /etc/ntp.conf
[root@prometheus ~]# cat <<END >>/etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 8
END
[root@prometheus ~]# systemctl enable ntpd --now
[root@prometheus ~]# ntpdate ntp1.aliyun.com
node服務(wù)器(node1和node2配置相同再此只拿node1舉栗子)
[root@node1 ~]# yum -y install ntpdate
[root@node1 ~]# /usr/sbin/ntpdate 192.168.100.100
下載node_exporter(node1和node2配置相同再此只拿node1舉栗子) Prometheus官網(wǎng)
[root@node1 ~]# tar zxvf node_exporter-1.5.0.linux-amd64.tar.gz
[root@node1 ~]# mv node_exporter-1.5.0.linux-amd64 /usr/local/exporter
配置系統(tǒng)啟動(dòng)腳本
[root@node1 ~]# vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network.target
[Service]
User=prometheus
Group=prometheus
ExecStart=/usr/local/exporter/node_exporter --web.listen-address=:20001 --collector.systemd --collector.systemd.unit-whitelist=(sshd|nginx).service --collector.processes --collector.tcpstat
[Install]
WantedBy=multi-user.target
[root@node1 ~]# useradd -M -s /sbin/nologin prometheus
[root@node1 ~]# chown -R prometheus:prometheus /usr/local/exporter/
[root@node1 ~]# systemctl enable --now node_exporter
[root@node1 ~]# systemctl status node_exporter.service
[root@node2 ~]# firewall-cmd --add-port=20001/tcp --permanent
[root@node2 ~]# firewall-cmd --reload
訪問192.168.100.9:20001 192.168.100.10:20001可以看到這個(gè)頁面


初始Node Exporter監(jiān)控指標(biāo)
訪問http://192.168.100.10/metrics,可以看到當(dāng)前node exporter獲取到的當(dāng)前主機(jī)的所有監(jiān)控?cái)?shù)據(jù),如下所示:

每一個(gè)監(jiān)控指標(biāo)之前都會(huì)有一段類似于如下形式的信息:
# HELP node_cpu Seconds the cpus spent in each mode.
# TYPE node_cpu counter
node_cpu{cpu="cpu0",mode="idle"} 362812.7890625
# HELP node_load1 1m load average.
# TYPE node_load1 gauge
node_load1 3.0703125
其中HELP用于解釋當(dāng)前指標(biāo)的含義,TYPE則說明當(dāng)前指標(biāo)的數(shù)據(jù)類型。在上面的例子中node_cpu的注釋表明當(dāng)前指標(biāo)是cpu0上idle進(jìn)程占用CPU的總時(shí)間,CPU占用時(shí)間是一個(gè)只增不減的度量指標(biāo),從類型中也可以看出node_cpu的數(shù)據(jù)類型是計(jì)數(shù)器(counter),與該指標(biāo)的實(shí)際含義一致。又例如node_load1該指標(biāo)反映了當(dāng)前主機(jī)在最近一分鐘以內(nèi)的負(fù)載情況,系統(tǒng)的負(fù)載情況會(huì)隨系統(tǒng)資源的使用而變化,因此node_load1反映的是當(dāng)前狀態(tài),數(shù)據(jù)可能增加也可能減少,從注釋中可以看出當(dāng)前指標(biāo)類型為儀表盤(gauge),與指標(biāo)反映的實(shí)際含義一致。
除了這些以外,在當(dāng)前頁面中根據(jù)物理主機(jī)系統(tǒng)的不同,你還可能看到如下監(jiān)控指標(biāo):
node_boot_time:系統(tǒng)啟動(dòng)時(shí)間
node_cpu:系統(tǒng)CPU使用量
nodedisk*:磁盤IO
nodefilesystem*:文件系統(tǒng)用量
node_load1:系統(tǒng)負(fù)載
nodememeory*:內(nèi)存使用量
nodenetwork*:網(wǎng)絡(luò)帶寬
node_time:當(dāng)前系統(tǒng)時(shí)間
go_*:node exporter中g(shù)o相關(guān)指標(biāo)
process_*:node exporter自身進(jìn)程相關(guān)運(yùn)行指標(biāo)
配置prometheus采集node端信息
為了能夠讓PrometheusServer能夠從當(dāng)前node exporter獲取到監(jiān)控?cái)?shù)據(jù),這里需要修改Prometheus配置文件。編輯prometheus.yml并在scrape_configs節(jié)點(diǎn)下添加以下內(nèi)容:
[root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml
- job_name: "node"
static_configs:
- targets:
- "192.168.100.9:20001"
- "192.168.100.10:20001"
###注意格式?。?!
[root@prometheus ~]# systemctl restart prometheus
[root@prometheus ~]# systemctl status prometheus
查看集成


使用PromQL查詢監(jiān)控?cái)?shù)據(jù)
Prometheus UI是Prometheus內(nèi)置的一個(gè)可視化管理界面,通過Prometheus UI用戶能夠輕松的了解Prometheus當(dāng)前的配置,監(jiān)控任務(wù)運(yùn)行狀態(tài)等。通過Graph面板,用戶還能直接使用PromQL實(shí)時(shí)查詢監(jiān)控?cái)?shù)據(jù):

PromQL是Prometheus自定義的一套強(qiáng)大的數(shù)據(jù)查詢語言,除了使用監(jiān)控指標(biāo)作為查詢關(guān)鍵字以為,還內(nèi)置了大量的函數(shù),幫助用戶進(jìn)一步對時(shí)序數(shù)據(jù)進(jìn)行處理。例如使用rate()函數(shù),可以計(jì)算在單位時(shí)間內(nèi)樣本數(shù)據(jù)的變化情況即增長率,因此通過該函數(shù)我們可以近似的通過CPU使用時(shí)間計(jì)算CPU的利用率:
rate(node_cpu_seconds_total[2m])

這時(shí)如果要忽略是哪一個(gè)CPU的,只需要使用without表達(dá)式,將標(biāo)簽CPU去除后聚合數(shù)據(jù)即可文章來源:http://www.zghlxwxcb.cn/news/detail-694211.html
avg without(cpu) (rate(node_cpu_seconds_total[2m]))文章來源地址http://www.zghlxwxcb.cn/news/detail-694211.html

到了這里,關(guān)于配置node_exporter的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!