您好,登錄后才能下訂單哦!
三臺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ī)則。
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)($|/)"
#查看容器是否正常運(yùn)行:
三臺都部署完成后,登錄web網(wǎng)頁進(jìn)入驗(yàn)證:
輸入URL(三臺主機(jī)的都可以):http://172.16.1.30:9100/
進(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
//查看容器是否正常運(yùn)行:
登陸web網(wǎng)頁驗(yàn)證:
URL:http://172.16.1.30:8080
可以檢測到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)控地址:端口
(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)行:
登陸Prometheus web頁面:
URL:http://172.16.1.30:9090
確保監(jiān)控到剛剛配置文件中添加三臺dockerhost的主機(jī)及端口,并且狀態(tài)為up。
4,部署Grafana:(提供友好的圖形化界面)
在Prometheus server上進(jìn)行部署:
(1)下載Grafana鏡像:
[root@sqm-docker01 ~]# docker pull grafana/grafana
(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
如果出現(xiàn)以上報錯,需要重新加載進(jìn)程,并且重啟docker服務(wù)。
確保容器已經(jīng)運(yùn)行:
訪問web界面(圖形化):
URL:http://172.16.1.30:3000
默認(rèn)用戶名:admin 密碼:123.com
登陸界面如下:
(3)接下來我們在圖形化web界面上進(jìn)行部署:
點(diǎn)擊首頁上名稱為“add data source”圖標(biāo)---------->選擇“Prometheus”點(diǎn)擊進(jìn)入到以下界面
設(shè)置成功后,接下來進(jìn)入Grafana的官網(wǎng): https://grafana.com/
下載監(jiān)控模板
下載成功后,回到Grafana管理的圖形化界面。
點(diǎn)擊導(dǎo)入剛剛下載的josn文件:
、
導(dǎo)入成功后,可以看到以下監(jiān)控界面:
當(dāng)然你也可以導(dǎo)入其他模板,可以在剛才的官網(wǎng)上下載其他模板。
肯定是在Prometheus server進(jìn)行部署啦
(1)下載Alertmanager告警鏡像
[root@sqm-docker01 ~]# docker pull prom/alertmanager
(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/
(3)拷貝它配置文件:
如果不知道它的配置文件路徑,則需要進(jìn)入容器進(jì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)報警的郵箱信息:
注意:上面定義的smtp郵件協(xié)議,qq郵箱是465,如果填寫的是其他郵箱,則需要填寫相對應(yīng)的smtp端口號。
(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)行:
(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
以上是自己自定義編寫的,當(dāng)然也可以登陸Prometheus官網(wǎng),搜索規(guī)則模板進(jìn)行編寫:
//接下來修改普羅米修斯配置文件:
[root@sqm-docker01 ~]# vim prometheus.yml
刪除剛剛運(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)行查看:
確保能夠看到剛才編寫的規(guī)則。
(6)測試郵箱報警:
接下來模擬其中一臺主機(jī)上的某個服務(wù)宕機(jī)掉,驗(yàn)證qq郵箱是否能夠收到郵件:
[root@sqm-docker01 ~]# docker stop cadvisor
cadvisor
登陸Prometheus界面可以看到該服務(wù)down:
當(dāng)服務(wù)宕機(jī)后,郵箱收到該報警郵件,提示為“FIRING”
如果當(dāng)你的服務(wù)又恢復(fù)了正常運(yùn)行,依然后觸發(fā)報警規(guī)則,會給你發(fā)送郵件,提示容器已修復(fù)“RESOLVED”(如下圖)
(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):
//刪除原來的容器:
[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)行:
接下來停掉一個容器,模擬宕機(jī):
狀態(tài)為down:
//qq郵箱收到報警郵件:
//同樣的,如果當(dāng)你的服務(wù)恢復(fù)了正常運(yùn)行后,也會發(fā)送報警郵件:
至此普羅米修斯監(jiān)控部署完畢,并且成功實(shí)現(xiàn)郵箱報警。。。
———————— 本文至此結(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)容。