注意: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