您好,登錄后才能下訂單哦!
三臺docker主機(centos7):
docker01:172.16.1.30
部署服務:Prometheus server,Grafana,Node Exporter,cAdvrisor
docker02:172.16.1.31
部署服務:Node Exporter,cAdvrisor
docker03:172.16.1.32
部署服務:Node Exporter,cAdvrisor
注意:因為是測試環境,所以暫時關閉防火墻,禁用selinux,如果是對外網發布的服務器,不可以關閉防火墻,可以設置firewalld及iptables規則。
1,部署Node Export(收集dockerhost信息)
#三臺dockerhost都需要依次部署:
(1)下載鏡像prom/node-exporter鏡像:
[root@sqm-docker02 ~]# docker pull prom/node-exporter
(2)運行Node Exporter容器(掛載系統目錄)
[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)($|/)"
#查看容器是否正常運行:
三臺都部署完成后,登錄web網頁進入驗證:
輸入URL(三臺主機的都可以):http://172.16.1.30:9100/
進來以后,可以看到信息全是代碼,非常的不友好,因為我們還沒有部署圖形化(Grafana)。
2,部署cAdvisor(收集container信息)
#依次在三臺dockerhost上分別部署
(1)下載google/cadvisor鏡像
[root@sqm-docker01 ~]# docker pull google/cadvisor
(2)運行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
//查看容器是否正常運行:
登陸web網頁驗證:
URL:http://172.16.1.30:8080
可以檢測到dockerhost的各種信息。
3,部署Prometheus server:(普羅米修斯的主服務)
只部署在docker01上:
(1)下載Prometheus鏡像:
[root@sqm-docker01 ~]# docker pull prom/prometheus
(2)獲取普羅米修斯的配置文件,先運行一個基于普羅米修斯的鏡像:
[root@sqm-docker01 ~]# docker run -d -p 9090:9090 --name prometheus --net=host prom/prometheus
(3)拷貝prometheus容器內配置文件到當前目錄下:
[root@sqm-docker01 ~]# docker cp prometheus:/etc/prometheus/prometheus.yml /root/
修改該.yml文件:
[root@sqm-docker01 ~]# vim prometheus.yml
添加本機和另外兩臺docker主機上服務的監控地址:端口
(4)刪除剛剛創建的Prometheus容器(只為拷貝配置文件)
[root@sqm-docker01 ~]# docker stop prometheus
[root@sqm-docker01 ~]# docker rm prometheus
(5)運行一個Prometheus容器:
[root@sqm-docker01 ~]# docker run -d -p 9090:9090 -v /root/prometheus.yml:/etc/prometheus/prometheus.yml --name prometheus --net=host prom/prometheus
//查看容器是否正常運行:
登陸Prometheus web頁面:
URL:http://172.16.1.30:9090
確保監控到剛剛配置文件中添加三臺dockerhost的主機及端口,并且狀態為up。
4,部署Grafana:(提供友好的圖形化界面)
在Prometheus server上進行部署:
(1)下載Grafana鏡像:
[root@sqm-docker01 ~]# docker pull grafana/grafana
(2)運行Grafana:(設置登陸密碼為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
如果出現以上報錯,需要重新加載進程,并且重啟docker服務。
確保容器已經運行:
訪問web界面(圖形化):
URL:http://172.16.1.30:3000
默認用戶名:admin 密碼:123.com
登陸界面如下:
(3)接下來我們在圖形化web界面上進行部署:
點擊首頁上名稱為“add data source”圖標---------->選擇“Prometheus”點擊進入到以下界面
設置成功后,接下來進入Grafana的官網: https://grafana.com/
下載監控模板
下載成功后,回到Grafana管理的圖形化界面。
點擊導入剛剛下載的josn文件:
、
導入成功后,可以看到以下監控界面:
當然你也可以導入其他模板,可以在剛才的官網上下載其他模板。
肯定是在Prometheus server進行部署啦
(1)下載Alertmanager告警鏡像
[root@sqm-docker01 ~]# docker pull prom/alertmanager
(2)運行alertmanager:
[root@sqm-docker01 ~]# docker run --name alertmanager -d -p 9093:9093 prom/alertmanager
測試能否訪問web界面:
URL:http://172.16.1.30:9093/
(3)拷貝它配置文件:
如果不知道它的配置文件路徑,則需要進入容器進行查看:[root@sqm-docker01 ~]# docker cp alertmanager:/etc/alertmanager/alertmanager.yml /root/
刪除剛剛創建的容器:(只為了拷貝配置文件)
[root@sqm-docker01 ~]# docker stop alertmanager
[root@sqm-docker01 ~]# docker rm alertmanager
修改該.yml配置文件:
[root@sqm-docker01 ~]# vim alertmanager.yml
設置實現報警的郵箱信息:
注意:上面定義的smtp郵件協議,qq郵箱是465,如果填寫的是其他郵箱,則需要填寫相對應的smtp端口號。
(4)重新運行容器:
[root@sqm-docker01 ~]# docker run -d --name alertmanager -p 9093:9093 -v /root/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager
//確保容器正常運行:
(5)設置Alertmanager報警規則:
[root@sqm-docker01 ~]# mkdir -p prometheus/rules
[root@sqm-docker01 ~]# cd prometheus/rules/
編寫規則文件:
[root@sqm-docker01 rules]# vim node-up.rules
以上是自己自定義編寫的,當然也可以登陸Prometheus官網,搜索規則模板進行編寫:
//接下來修改普羅米修斯配置文件:
[root@sqm-docker01 ~]# vim prometheus.yml
刪除剛剛運行的普羅米修斯容器:
[root@sqm-docker01 ~]# docker stop prometheus
prometheus
[root@sqm-docker01 ~]# docker rm prometheus
prometheus
//需要重新運行容器,將規則目錄掛載到容器中:
[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
確保容器正常運行后,登陸網頁進行查看:
確保能夠看到剛才編寫的規則。
(6)測試郵箱報警:
接下來模擬其中一臺主機上的某個服務宕機掉,驗證qq郵箱是否能夠收到郵件:
[root@sqm-docker01 ~]# docker stop cadvisor
cadvisor
登陸Prometheus界面可以看到該服務down:
當服務宕機后,郵箱收到該報警郵件,提示為“FIRING”
如果當你的服務又恢復了正常運行,依然后觸發報警規則,會給你發送郵件,提示容器已修復“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>
故障主機: {{ .Labels.instance }}<br>
告警主題: {{ .Annotations.summary }}<br>
觸發時間: {{ .StartsAt.Format "2019-08-04 16:58:15" }} <br>
=========end==========<br>
{{ end }}
{{ end }}
//修改alertmanager配置文件:
[root@sqm-docker01 ~]# vim alertmanager.yml
#注意縮進:
//刪除原來的容器:
[root@sqm-docker01 ~]# docker stop alertmanager
[root@sqm-docker01 ~]# docker rm alertmanager
//重新運行容器(重新掛載文件)
[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
確保容器已正常運行:
接下來停掉一個容器,模擬宕機:
狀態為down:
//qq郵箱收到報警郵件:
//同樣的,如果當你的服務恢復了正常運行后,也會發送報警郵件:
至此普羅米修斯監控部署完畢,并且成功實現郵箱報警。。。
———————— 本文至此結束,感謝閱讀 ————————
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。