注意:alertmanager插件部署時的細節
Prometheus(普羅米修斯)
實驗:
部署prometheus服務,3臺dockerhost,所有監控。要求結合grafana展現收集數據信息。html
實驗環境:
Docker01 docker02 docker03
192.168.1.1 192.168.1.20 192.168.1.30
NodeExporter: NodeExporter: NodeExporter:
cAdvsor cAdvsor cAdvsor
Prometheus Server
Grafananode
所有關閉防火牆,禁用seLinux。git
須要的部署組件
Prometheus Server:普羅米修斯的主服務器
NodeExporter:負責收集Host硬件信息和操作系統信息。
cAdvsor:負責收集Host上運行的容器信息。(谷歌開發)
Grafana:負責展現普羅米修斯的監控界面。github
1》3個節點,所有部署node-EXporter,和cAdvsor
//部署node-Expor,收集硬件和系統信息
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)($|/)"docker
裏面是搜素到的硬件信息
vim
PS:注意這裏使用了--net==host,這樣Prometheus Server能夠直接,與node-exporter通訊
佔用端口9100
//部署安裝cadvisor,收集節點容器信息(佔用8080端口)服務器
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
訪問
ide
2》在docker01上部署Prometheus Server服務
在部署prometheus以前,咱們須要對他的配置文件進行修改,因此咱們先運行一個容器,先將其配置文件拷貝出來。
建立一個容器
[root@docker ~]# docker run -d -p 9090:9090 --name prometheus \google
--net=host prom/prometheus
配置文件目錄/etc/prometheus/prometheus.yml
docker cp prometheus:/etc/prometheus/prometheus.yml ./
修改配置文件
vim prometheus.yml
PS:這裏指定了prometheus的監控項,包括它也會監控本身收集到的數據。
刪除舊的容器
docker rm -f prometheus
建立新的prometheus,並掛在prometheus的配置文件目錄
docker run -d -p 9090:9090 --name prometheus --net=host -v /root/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus插件
能夠查看各個監控項
PS:這裏可以查看到咱們各個監控項。
3》在docker01,部署grafana服務,用來展現prometheus收集到的數據
[root@docker ~]# mkdir grafana-storage
[root@docker ~]# chmod 777 -R grafana-storage/
[root@docker ~]#docker run -d -p 3000:3000 --name grafana -v /root/grafana-storage:/var/lib/grafana -e "GF_SECURITY_ADMIN_PASSWORD=123.com" grafana/grafana
訪問頁面
3000端口
添加數據源
Prometheus
PS;看到這個提高示,說明,皮肉麼天黑蛇grafana服務的是正常鏈接的。
此時雖然grafana收集到了數據,但怎末顯示它,仍然是個問題,grafana支持自定義顯示信息,不過要自定義起來很是麻煩,不過好在,果真煩啊官方爲咱們提供了一些模板,來供咱們使用。
Grafana官網:https://grafana.com/
進入頁面
選中一款,而後,咱們有看兩種方式能夠套用這個模板。
第一種方式:下載,在上傳
下載完成以後。來到grafana控制檯
第二種方式:
能夠直接經過模板的ID號,
Id號8321
拓展:在github上搜索prometheus項目,查找相關組件定義,以及其餘部署方法。
配置AlertManager監控組件
https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/ 定義警報規則的官網
AlerManager:用來接收prometheus發送的報警信息,而且執行設置好的報警方式,報警內容。
實驗:
1)部署prometheus監控組件alertmanager.
建立一個容器
docker run -d --name alertmanager -p 9093:9093 prom/alertmanager:latest
進入容器
docker exec -it alertmanager /bin/sh
導入配置文件alertmanager.yml
alerManager.yml配置文件:
Global:全局配置:包括報警解決後的超時時間,SMTP相關配置,各類渠道通知的API地址等新消息。
Routr:用來設置報警的分發策略。
Receivers:配置告警消息接收者信息。
Inhibit-rules:抑制規則配置,當存在於另外一組匹配的警報時,抑制規則將禁用於一組匹配的警告。
路由轉發(三臺都作) [root@docker ~]# echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf [root@docker ~]# sysctl -p net.ipv4.ip_forward = 1
郵箱受權碼
xtpejnituuzidjeg
Kpflqmbkdyqbebdc
刪除
docker rm -f alertmanager
掛載alertmanager目錄的alertmanager.yml配置文件
docker run -d --name alertmanager -p 9093:9093 -v /root/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager:latest
2》建立監控規則,使用email報警方式。監控服務運行狀態,若是服務節點down機狀態,則發送郵件
Prometheus配置alertmanagre報警規則
[root@docker ~]# mkdir -p prometheus/rules
[root@docker ~]# cd prometheus/rules/
導入文件node-up.rules到此目錄下
Prometheus配置文件
須要與node-up.rules 中的job相對應。不然就找不到。
更改prometheus的配置文件
Prometheus容器內的路徑:
將規則等目錄再次建立容器 docker run -d -p 9090:9090 --name prometheus --net=host -v /root/prometheus.yml:/etc/prometheus/prometheus.yml -v /root/prometheus/rules/node-up.rules:/usr/local/prometheus/rules/node-up.rules: prom/prometheus
訪問9090
Status--->Rulesd
Status--->Targets
掛起
訪問9093能夠看到報錯信息
收到報錯郵件
3》建立郵件發送模板,仍使用email報警方式,模擬服務節點down機狀態,查看驗證email發送模板。
AlertManager配置自定義 [root@docker ~]# cd prometheus/ [root@docker prometheus]# ls rules [root@docker prometheus]# mkdir alertmanager-tmpl [root@docker prometheus]# cd alertmanager-tmpl/ 將郵件導入進去email.tmpl vim email.tmpl {{ define "email.from" }}2468489176@qq.com{{ end }} {{ define "email.to" }}2468489176@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 }}
/root/prometheus/alertmanager-tmpl
修改alertmanager.yml 配置文件
vim alertmanager.yml
容器內的路徑
templates:
docker rm -f alertmanager
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:latest