Prometheus(普羅米修斯)與監控組件alertmanager的部署

注意: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,收集硬件和系統信息

Prometheus(普羅米修斯)與監控組件alertmanager的部署
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

裏面是搜素到的硬件信息
Prometheus(普羅米修斯)與監控組件alertmanager的部署vim

PS:注意這裏使用了--net==host,這樣Prometheus Server能夠直接,與node-exporter通訊
佔用端口9100
Prometheus(普羅米修斯)與監控組件alertmanager的部署
//部署安裝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
訪問
Prometheus(普羅米修斯)與監控組件alertmanager的部署ide

2》在docker01上部署Prometheus Server服務
在部署prometheus以前,咱們須要對他的配置文件進行修改,因此咱們先運行一個容器,先將其配置文件拷貝出來。
建立一個容器
[root@docker ~]# docker run -d -p 9090:9090 --name prometheus \google

--net=host prom/prometheus
Prometheus(普羅米修斯)與監控組件alertmanager的部署
配置文件目錄/etc/prometheus/prometheus.yml
docker cp prometheus:/etc/prometheus/prometheus.yml ./
修改配置文件
vim prometheus.yml
Prometheus(普羅米修斯)與監控組件alertmanager的部署
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插件

能夠查看各個監控項
Prometheus(普羅米修斯)與監控組件alertmanager的部署
Prometheus(普羅米修斯)與監控組件alertmanager的部署
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

訪問頁面
Prometheus(普羅米修斯)與監控組件alertmanager的部署
3000端口
Prometheus(普羅米修斯)與監控組件alertmanager的部署
添加數據源
Prometheus(普羅米修斯)與監控組件alertmanager的部署

Prometheus
Prometheus(普羅米修斯)與監控組件alertmanager的部署
Prometheus(普羅米修斯)與監控組件alertmanager的部署
Prometheus(普羅米修斯)與監控組件alertmanager的部署

PS;看到這個提高示,說明,皮肉麼天黑蛇grafana服務的是正常鏈接的。
此時雖然grafana收集到了數據,但怎末顯示它,仍然是個問題,grafana支持自定義顯示信息,不過要自定義起來很是麻煩,不過好在,果真煩啊官方爲咱們提供了一些模板,來供咱們使用。
Grafana官網:https://grafana.com/

Prometheus(普羅米修斯)與監控組件alertmanager的部署
進入頁面
Prometheus(普羅米修斯)與監控組件alertmanager的部署
Prometheus(普羅米修斯)與監控組件alertmanager的部署
Prometheus(普羅米修斯)與監控組件alertmanager的部署
Prometheus(普羅米修斯)與監控組件alertmanager的部署

選中一款,而後,咱們有看兩種方式能夠套用這個模板。
第一種方式:下載,在上傳
Prometheus(普羅米修斯)與監控組件alertmanager的部署
下載完成以後。來到grafana控制檯

Prometheus(普羅米修斯)與監控組件alertmanager的部署

Prometheus(普羅米修斯)與監控組件alertmanager的部署

Prometheus(普羅米修斯)與監控組件alertmanager的部署

第二種方式:
能夠直接經過模板的ID號,
Prometheus(普羅米修斯)與監控組件alertmanager的部署
Prometheus(普羅米修斯)與監控組件alertmanager的部署
Prometheus(普羅米修斯)與監控組件alertmanager的部署
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
Prometheus(普羅米修斯)與監控組件alertmanager的部署
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
Prometheus(普羅米修斯)與監控組件alertmanager的部署
刪除
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配置文件
Prometheus(普羅米修斯)與監控組件alertmanager的部署
須要與node-up.rules 中的job相對應。不然就找不到。
Prometheus(普羅米修斯)與監控組件alertmanager的部署

更改prometheus的配置文件
Prometheus(普羅米修斯)與監控組件alertmanager的部署

Prometheus容器內的路徑:

  • "/usr/local/prometheus/rules/*.rules"
    再次刪除,由於須要將規則添加進去(docker logs 容器名)
    docker rm -f 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
Prometheus(普羅米修斯)與監控組件alertmanager的部署

Status--->Targets
掛起
Prometheus(普羅米修斯)與監控組件alertmanager的部署
訪問9093能夠看到報錯信息
Prometheus(普羅米修斯)與監控組件alertmanager的部署
收到報錯郵件
Prometheus(普羅米修斯)與監控組件alertmanager的部署
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
容器內的路徑

Prometheus(普羅米修斯)與監控組件alertmanager的部署

templates:

  • '/etc/alertmanager-tmpl/*.tmpl'
    Prometheus(普羅米修斯)與監控組件alertmanager的部署
  • to: '{{ template "email.to" }}'
    html: '{{ template "email.to.html" .}}'

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

Prometheus(普羅米修斯)與監控組件alertmanager的部署

相關文章
相關標籤/搜索