监控利器-Prometheus安装与部署+实现邮箱报警

Prometheus(普罗米修斯)监控

环境准备:

三台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,cAdvrisorcss

注意:由于是测试环境,因此暂时关闭防火墙,禁用selinux,若是是对外网发布的服务器,不能够关闭防火墙,能够设置firewalld及iptables规则。html


  • Prometheus server:普罗米修斯的主服务器,监听端口:9090
  • Node Exporter:收集Host硬件和操做系统的信息,监听端口:9100
  • vAdvrisor:负责收集Host上运行的container信息,监听端口:8080
  • Grafana:用来展现普罗米修斯监控操做界面。

项目操做:

1,部署Node Export(收集dockerhost信息)
#三台dockerhost都须要依次部署:node

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)($|/)"

监控利器-Prometheus安装与部署+实现邮箱报警

  • 参数--net=host:这样Prometheus server能够直接与Node Exporter通讯

#查看容器是否正常运行:
监控利器-Prometheus安装与部署+实现邮箱报警linux

三台都部署完成后,登陆web网页进入验证:
输入URL(三台主机的均可以):http://172.16.1.30:9100/
监控利器-Prometheus安装与部署+实现邮箱报警
监控利器-Prometheus安装与部署+实现邮箱报警web

进来之后,能够看到信息全是代码,很是的不友好,由于咱们尚未部署图形化(Grafana)。docker


2,部署cAdvisor(收集container信息)
#依次在三台dockerhost上分别部署vim

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

监控利器-Prometheus安装与部署+实现邮箱报警

//查看容器是否正常运行:
监控利器-Prometheus安装与部署+实现邮箱报警centos

登录web网页验证:
URL:http://172.16.1.30:8080
监控利器-Prometheus安装与部署+实现邮箱报警
监控利器-Prometheus安装与部署+实现邮箱报警
能够检测到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主机上服务的监控地址:端口

监控利器-Prometheus安装与部署+实现邮箱报警

(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安装与部署+实现邮箱报警

登录Prometheus web页面:
URL:http://172.16.1.30:9090
监控利器-Prometheus安装与部署+实现邮箱报警
监控利器-Prometheus安装与部署+实现邮箱报警

确保监控到刚刚配置文件中添加三台dockerhost的主机及端口,而且状态为up。


4,部署Grafana:(提供友好的图形化界面)
在Prometheus server上进行部署:

1)下载Grafana镜像: [root@sqm-docker01 ~]# docker pull grafana/grafana

监控利器-Prometheus安装与部署+实现邮箱报警

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

监控利器-Prometheus安装与部署+实现邮箱报警
若是出现以上报错,须要从新加载进程,而且重启docker服务。
监控利器-Prometheus安装与部署+实现邮箱报警
确保容器已经运行:
监控利器-Prometheus安装与部署+实现邮箱报警
访问web界面(图形化):
URL:http://172.16.1.30:3000
默认用户名:admin 密码:123.com
监控利器-Prometheus安装与部署+实现邮箱报警
登录界面以下:
监控利器-Prometheus安装与部署+实现邮箱报警

(3)接下来咱们在图形化web界面上进行部署:
点击首页上名称为“add data source”图标---------->选择“Prometheus”点击进入到如下界面
监控利器-Prometheus安装与部署+实现邮箱报警
监控利器-Prometheus安装与部署+实现邮箱报警

设置成功后,接下来进入Grafana的官网: https://grafana.com/
下载监控模板
监控利器-Prometheus安装与部署+实现邮箱报警
监控利器-Prometheus安装与部署+实现邮箱报警
监控利器-Prometheus安装与部署+实现邮箱报警
监控利器-Prometheus安装与部署+实现邮箱报警
监控利器-Prometheus安装与部署+实现邮箱报警
下载成功后,回到Grafana管理的图形化界面。
点击导入刚刚下载的josn文件:

监控利器-Prometheus安装与部署+实现邮箱报警
监控利器-Prometheus安装与部署+实现邮箱报警
监控利器-Prometheus安装与部署+实现邮箱报警
导入成功后,能够看到如下监控界面:
监控利器-Prometheus安装与部署+实现邮箱报警
固然你也能够导入其余模板,能够在刚才的官网上下载其余模板。
监控利器-Prometheus安装与部署+实现邮箱报警


3,实现Prometheus邮箱报警:

确定是在Prometheus server进行部署啦

1)下载Alertmanager告警镜像 [root@sqm-docker01 ~]# docker pull prom/alertmanager

监控利器-Prometheus安装与部署+实现邮箱报警

2)运行alertmanager: [root@sqm-docker01 ~]# docker run --name alertmanager -d -p 9093:9093 prom/alertmanager

测试可否访问web界面:
URL:http://172.16.1.30:9093/
监控利器-Prometheus安装与部署+实现邮箱报警
(3)拷贝它配置文件:
若是不知道它的配置文件路径,则须要进入容器进行查看:
监控利器-Prometheus安装与部署+实现邮箱报警
[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 

设置实现报警的邮箱信息:
监控利器-Prometheus安装与部署+实现邮箱报警

注意:上面定义的smtp邮件协议,qq邮箱是465,若是填写的是其余邮箱,则须要填写相对应的smtp端口号。

  • 配置项解释:
  • global: 全局配置。报警策略,报警渠道等。
  • route: 分发策略。
  • receivers: 接收者。
  • inhibit_rules: 抑制策略。当存与另外一组匹配的警报,抑制规则将禁止与一组匹配的警报。
4)从新运行容器: [root@sqm-docker01 ~]# docker run -d --name alertmanager -p 9093:9093 -v /root/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager

//确保容器正常运行:
监控利器-Prometheus安装与部署+实现邮箱报警

(5)设置Alertmanager报警规则: [root@sqm-docker01 ~]# mkdir -p prometheus/rules [root@sqm-docker01 ~]# cd prometheus/rules/
编写规则文件:
[root@sqm-docker01 rules]# vim node-up.rules 

监控利器-Prometheus安装与部署+实现邮箱报警

以上是本身自定义编写的,固然也能够登录Prometheus官网,搜索规则模板进行编写:
监控利器-Prometheus安装与部署+实现邮箱报警
监控利器-Prometheus安装与部署+实现邮箱报警

//接下来修改普罗米修斯配置文件: [root@sqm-docker01 ~]# vim prometheus.yml

监控利器-Prometheus安装与部署+实现邮箱报警

删除刚刚运行的普罗米修斯容器:
[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

确保容器正常运行后,登录网页进行查看:
监控利器-Prometheus安装与部署+实现邮箱报警
确保可以看到刚才编写的规则。


(6)测试邮箱报警:
接下来模拟其中一台主机上的某个服务宕机掉,验证qq邮箱是否可以收到邮件:

[root@sqm-docker01 ~]# docker stop cadvisor cadvisor

登录Prometheus界面能够看到该服务down:
监控利器-Prometheus安装与部署+实现邮箱报警
监控利器-Prometheus安装与部署+实现邮箱报警
当服务宕机后,邮箱收到该报警邮件,提示为“FIRING”


若是当你的服务又恢复了正常运行,依而后触发报警规则,会给你发送邮件,提示容器已修复“RESOLVED”(以下图)
监控利器-Prometheus安装与部署+实现邮箱报警

(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

#注意缩进:
监控利器-Prometheus安装与部署+实现邮箱报警
监控利器-Prometheus安装与部署+实现邮箱报警

//删除原来的容器: [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

确保容器已正常运行:
监控利器-Prometheus安装与部署+实现邮箱报警

接下来停掉一个容器,模拟宕机:
监控利器-Prometheus安装与部署+实现邮箱报警
状态为down:
监控利器-Prometheus安装与部署+实现邮箱报警

//qq邮箱收到报警邮件:
监控利器-Prometheus安装与部署+实现邮箱报警
//一样的,若是当你的服务恢复了正常运行后,也会发送报警邮件:
监控利器-Prometheus安装与部署+实现邮箱报警
至此普罗米修斯监控部署完毕,而且成功实现邮箱报警。。。

———————— 本文至此结束,感谢阅读 ————————

相关文章
相关标签/搜索