溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

發(fā)布時間:2020-04-08 10:34:04 來源:網(wǎng)絡(luò) 閱讀:1307 作者:wx5b9c94b17c62a 欄目:云計算

Prometheus(普羅米修斯)監(jiān)控

環(huán)境準(zhǔn)備:

三臺docker主機(jī)(centos7):
docker01:172.16.1.30
部署服務(wù):Prometheus server,Grafana,Node Exporter,cAdvrisor
docker02:172.16.1.31
部署服務(wù):Node Exporter,cAdvrisor
docker03:172.16.1.32
部署服務(wù):Node Exporter,cAdvrisor

注意:因?yàn)槭菧y試環(huán)境,所以暫時關(guān)閉防火墻,禁用selinux,如果是對外網(wǎng)發(fā)布的服務(wù)器,不可以關(guān)閉防火墻,可以設(shè)置firewalld及iptables規(guī)則。


  • Prometheus server:普羅米修斯的主服務(wù)器,監(jiān)聽端口:9090
  • Node Exporter:收集Host硬件和操作系統(tǒng)的信息,監(jiān)聽端口:9100
  • vAdvrisor:負(fù)責(zé)收集Host上運(yùn)行的container信息,監(jiān)聽端口:8080
  • Grafana:用來展示普羅米修斯監(jiān)控操作界面。

項(xiàng)目操作:

1,部署Node Export(收集dockerhost信息)
#三臺dockerhost都需要依次部署:

(1)下載鏡像prom/node-exporter鏡像:
[root@sqm-docker02 ~]# docker pull prom/node-exporter
(2)運(yùn)行Node Exporter容器(掛載系統(tǒng)目錄)
[root@sqm-docker02 ~]#  docker run -d -p 9100:9100 -v /proc:/host/proc -v /sys:/host/sys -v /:/rootfs --net=host prom/node-exporter --path.procfs /host/proc --path.sysfs /host/sys --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

  • 參數(shù)--net=host:這樣Prometheus server可以直接與Node Exporter通信

#查看容器是否正常運(yùn)行:
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

三臺都部署完成后,登錄web網(wǎng)頁進(jìn)入驗(yàn)證:
輸入URL(三臺主機(jī)的都可以):http://172.16.1.30:9100/
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

進(jìn)來以后,可以看到信息全是代碼,非常的不友好,因?yàn)槲覀冞€沒有部署圖形化(Grafana)。


2,部署cAdvisor(收集container信息)
#依次在三臺dockerhost上分別部署

(1)下載google/cadvisor鏡像
[root@sqm-docker01 ~]# docker pull google/cadvisor
(2)運(yùn)行cAdvisor鏡像:
[root@sqm-docker01 ~]# docker run -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker:/var/lib/docker:ro -p 8080:8080 --detach=true --name=cadvisor --net=host google/cadvisor

監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

//查看容器是否正常運(yùn)行:
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

登陸web網(wǎng)頁驗(yàn)證:
URL:http://172.16.1.30:8080
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
可以檢測到dockerhost的各種信息。


3,部署Prometheus server:(普羅米修斯的主服務(wù))
只部署在docker01上:

(1)下載Prometheus鏡像:
[root@sqm-docker01 ~]# docker pull prom/prometheus
(2)獲取普羅米修斯的配置文件,先運(yùn)行一個基于普羅米修斯的鏡像:
[root@sqm-docker01 ~]# docker run -d -p 9090:9090 --name  prometheus --net=host prom/prometheus
(3)拷貝prometheus容器內(nèi)配置文件到當(dāng)前目錄下:
[root@sqm-docker01 ~]#  docker cp prometheus:/etc/prometheus/prometheus.yml /root/
修改該.yml文件:
[root@sqm-docker01 ~]# vim prometheus.yml 

添加本機(jī)和另外兩臺docker主機(jī)上服務(wù)的監(jiān)控地址:端口

監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

(4)刪除剛剛創(chuàng)建的Prometheus容器(只為拷貝配置文件)

[root@sqm-docker01 ~]# docker stop prometheus 
[root@sqm-docker01 ~]# docker rm prometheus 
(5)運(yùn)行一個Prometheus容器:
[root@sqm-docker01 ~]# docker run -d -p 9090:9090 -v /root/prometheus.yml:/etc/prometheus/prometheus.yml --name prometheus --net=host prom/prometheus

//查看容器是否正常運(yùn)行:
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

登陸Prometheus web頁面:
URL:http://172.16.1.30:9090
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

確保監(jiān)控到剛剛配置文件中添加三臺dockerhost的主機(jī)及端口,并且狀態(tài)為up。


4,部署Grafana:(提供友好的圖形化界面)
在Prometheus server上進(jìn)行部署:

(1)下載Grafana鏡像:
[root@sqm-docker01 ~]# docker pull grafana/grafana

監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

(2)運(yùn)行Grafana:(設(shè)置登陸密碼為123.com)
[root@sqm-docker01 ~]# mkdir grafana-storage
[root@sqm-docker01 ~]# chmod 777 -R grafana-storage/
[root@sqm-docker01 ~]# docker run -d -p 3000:3000 --name grafana -v /root/grafana-storage:/var/lib/grafana -e "GF_SECURITY_ADMIN_PASSWORD=123.com" grafana/grafana

監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
如果出現(xiàn)以上報錯,需要重新加載進(jìn)程,并且重啟docker服務(wù)。
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
確保容器已經(jīng)運(yùn)行:
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
訪問web界面(圖形化):
URL:http://172.16.1.30:3000
默認(rèn)用戶名:admin 密碼:123.com
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
登陸界面如下:
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

(3)接下來我們在圖形化web界面上進(jìn)行部署:
點(diǎn)擊首頁上名稱為“add data source”圖標(biāo)---------->選擇“Prometheus”點(diǎn)擊進(jìn)入到以下界面
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

設(shè)置成功后,接下來進(jìn)入Grafana的官網(wǎng): https://grafana.com/
下載監(jiān)控模板
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
下載成功后,回到Grafana管理的圖形化界面。
點(diǎn)擊導(dǎo)入剛剛下載的josn文件:
、
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
導(dǎo)入成功后,可以看到以下監(jiān)控界面:
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
當(dāng)然你也可以導(dǎo)入其他模板,可以在剛才的官網(wǎng)上下載其他模板。
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警


3,實(shí)現(xiàn)Prometheus郵箱報警:

肯定是在Prometheus server進(jìn)行部署啦

(1)下載Alertmanager告警鏡像
[root@sqm-docker01 ~]# docker pull prom/alertmanager

監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

(2)運(yùn)行alertmanager:
[root@sqm-docker01 ~]#  docker run --name alertmanager -d -p 9093:9093 prom/alertmanager

測試能否訪問web界面:
URL:http://172.16.1.30:9093/
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
(3)拷貝它配置文件:
如果不知道它的配置文件路徑,則需要進(jìn)入容器進(jìn)行查看:
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
[root@sqm-docker01 ~]# docker cp alertmanager:/etc/alertmanager/alertmanager.yml /root/

刪除剛剛創(chuàng)建的容器:(只為了拷貝配置文件)

[root@sqm-docker01 ~]# docker stop alertmanager 
[root@sqm-docker01 ~]# docker rm alertmanager
修改該.yml配置文件:
[root@sqm-docker01 ~]# vim alertmanager.yml 

設(shè)置實(shí)現(xiàn)報警的郵箱信息:
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

注意:上面定義的smtp郵件協(xié)議,qq郵箱是465,如果填寫的是其他郵箱,則需要填寫相對應(yīng)的smtp端口號。

  • 配置項(xiàng)解釋:
  • global: 全局配置。報警策略,報警渠道等。
  • route: 分發(fā)策略。
  • receivers: 接收者。
  • inhibit_rules: 抑制策略。當(dāng)存與另一組匹配的警報,抑制規(guī)則將禁止與一組匹配的警報。
(4)重新運(yùn)行容器:
[root@sqm-docker01 ~]# docker run -d --name alertmanager  -p 9093:9093  -v /root/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager

//確保容器正常運(yùn)行:
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

(5)設(shè)置Alertmanager報警規(guī)則:
[root@sqm-docker01 ~]# mkdir -p prometheus/rules
[root@sqm-docker01 ~]# cd prometheus/rules/
編寫規(guī)則文件:
[root@sqm-docker01 rules]# vim node-up.rules 

監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

以上是自己自定義編寫的,當(dāng)然也可以登陸Prometheus官網(wǎng),搜索規(guī)則模板進(jìn)行編寫:
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

//接下來修改普羅米修斯配置文件:
[root@sqm-docker01 ~]# vim prometheus.yml

監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

刪除剛剛運(yùn)行的普羅米修斯容器:
[root@sqm-docker01 ~]# docker stop prometheus 
prometheus
[root@sqm-docker01 ~]# docker rm prometheus 
prometheus
//需要重新運(yùn)行容器,將規(guī)則目錄掛載到容器中:
[root@sqm-docker01 ~]# docker run -d -p 9090:9090 -v /root/prometheus.yml:/etc/prometheus/prometheus.yml -v /root/prometheus/rules:/usr/local/prometheus/rules --name prometheus --net=host prom/prometheus

確保容器正常運(yùn)行后,登陸網(wǎng)頁進(jìn)行查看:
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
確保能夠看到剛才編寫的規(guī)則。


(6)測試郵箱報警:
接下來模擬其中一臺主機(jī)上的某個服務(wù)宕機(jī)掉,驗(yàn)證qq郵箱是否能夠收到郵件:

[root@sqm-docker01 ~]# docker stop cadvisor 
cadvisor

登陸Prometheus界面可以看到該服務(wù)down:
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
當(dāng)服務(wù)宕機(jī)后,郵箱收到該報警郵件,提示為“FIRING”


如果當(dāng)你的服務(wù)又恢復(fù)了正常運(yùn)行,依然后觸發(fā)報警規(guī)則,會給你發(fā)送郵件,提示容器已修復(fù)“RESOLVED”(如下圖)
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

(7)搭建報警信息模板:

[root@sqm-docker01 ~]# mkdir alertmanager-tmpl
[root@sqm-docker01 ~]# cd alertmanager-tmpl/
[root@sqm-docker01 alertmanager-tmpl]# vim email.tmpl

編寫模板腳本:(填寫報警的qq郵箱)
{{ define "email.from" }}1234567890@qq.com{{ end }}
{{ define "email.to" }}1234567890@qq.com{{ end }}
{{ define "email.to.html" }}
{{ range .Alerts }}
=========start==========<br>
告警程序: prometheus_alert<br>
告警級別: {{ .Labels.severity }} 級<br>
告警類型: {{ .Labels.alertname }}<br>
故障主機(jī): {{ .Labels.instance }}<br>
告警主題: {{ .Annotations.summary }}<br>
觸發(fā)時間: {{ .StartsAt.Format "2019-08-04 16:58:15" }} <br>
=========end==========<br>
{{ end }}
{{ end }}

//修改alertmanager配置文件:
[root@sqm-docker01 ~]# vim alertmanager.yml

#注意縮進(jìn):
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

//刪除原來的容器:
[root@sqm-docker01 ~]# docker stop alertmanager 
 [root@sqm-docker01 ~]# docker rm alertmanager
//重新運(yùn)行容器(重新掛載文件)
[root@sqm-docker01 ~]# docker run -d --name alertmanager -p 9093:9093 -v /root/alertmanager.yml:/etc/alertmanager/alertmanager.yml -v /root/prometheus/alertmanager-tmpl:/etc/alertmanager-tmpl prom/alertmanager

確保容器已正常運(yùn)行:
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

接下來停掉一個容器,模擬宕機(jī):
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
狀態(tài)為down:
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警

//qq郵箱收到報警郵件:
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
//同樣的,如果當(dāng)你的服務(wù)恢復(fù)了正常運(yùn)行后,也會發(fā)送報警郵件:
監(jiān)控利器-Prometheus安裝與部署+實(shí)現(xiàn)郵箱報警
至此普羅米修斯監(jiān)控部署完畢,并且成功實(shí)現(xiàn)郵箱報警。。。

———————— 本文至此結(jié)束,感謝閱讀 ————————

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI