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

网友投稿 340 2022-10-31

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

Prometheus(普罗米修斯)监控

环境准备:

三台docker主机(centos7):docker01:172.16.1.30部署服务:Prometheus server,Grafana,Node Exporter,cAdvrisor docker02:172.16.1.31部署服务:Node Exporter,cAdvrisordocker03:172.16.1.32 部署服务:Node Exporter,cAdvrisor

注意:因为是测试环境,所以暂时关闭防火墙,禁用selinux,如果是对外网发布的服务器,不可以关闭防火墙,可以设置firewalld及iptables规则。

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

项目操作:

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

参数--net=host:这样Prometheus server可以直接与Node Exporter通信

进来以后,可以看到信息全是代码,非常的不友好,因为我们还没有部署图形化(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

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

确保监控到刚刚配置文件中添加三台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

3,实现Prometheus邮箱报警:

肯定是在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

删除刚刚创建的容器:(只为了拷贝配置文件)

[root@sqm-docker01 ~]# docker stop alertmanager [root@sqm-docker01 ~]# docker rm alertmanager

修改该.yml配置文件: [root@sqm-docker01 ~]# vim alertmanager.yml

注意:上面定义的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

(5)设置Alertmanager报警规则: [root@sqm-docker01 ~]# mkdir -p prometheus/rules [root@sqm-docker01 ~]# cd prometheus/rules/

编写规则文件: [root@sqm-docker01 rules]# vim node-up.rules

//接下来修改普罗米修斯配置文件: [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

(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==========
告警程序: prometheus_alert
告警级别: {{ .Labels.severity }} 级
告警类型: {{ .Labels.alertname }}
故障主机: {{ .Labels.instance }}
告警主题: {{ .Annotations.summary }}
触发时间: {{ .StartsAt.Format "2019-08-04 16:58:15" }}
=========end==========
{{ 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

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java Validated 分组校验的使用
下一篇:隔离技术在嵌入式系统接口中的应用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~