千家信息网

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

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Prometheus(普罗米修斯)监控环境准备:三台docker主机(centos7):docker01:172.16.1.30部署服务:Prometheus server,Grafana,Node
千家信息网最后更新 2026年11月01日监控利器-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,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通信

#查看容器是否正常运行:

三台都部署完成后,登录web网页进入验证:
输入URL(三台主机的都可以):http://172.16.1.30:9100/

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

//查看容器是否正常运行:

登陆web网页验证:
URL:http://172.16.1.30:8080


可以检测到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主机上服务的监控地址:端口

(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 web页面:
URL:http://172.16.1.30:9090

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


如果出现以上报错,需要重新加载进程,并且重启docker服务。

确保容器已经运行:

访问web界面(图形化):
URL:http://172.16.1.30:3000
默认用户名:admin 密码:123.com

登陆界面如下:

(3)接下来我们在图形化web界面上进行部署:
点击首页上名称为"add data source"图标---------->选择"Prometheus"点击进入到以下界面

设置成功后,接下来进入Grafana的官网: https://grafana.com/
下载监控模板





下载成功后,回到Grafana管理的图形化界面。
点击导入刚刚下载的josn文件:
、



导入成功后,可以看到以下监控界面:

当然你也可以导入其他模板,可以在刚才的官网上下载其他模板。


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

测试能否访问web界面:
URL:http://172.16.1.30:9093/

(3)拷贝它配置文件:
如果不知道它的配置文件路径,则需要进入容器进行查看:

[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 

设置实现报警的邮箱信息:

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

以上是自己自定义编写的,当然也可以登陆Prometheus官网,搜索规则模板进行编写:

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

登陆Prometheus界面可以看到该服务down:


当服务宕机后,邮箱收到该报警邮件,提示为"FIRING"


如果当你的服务又恢复了正常运行,依然后触发报警规则,会给你发送邮件,提示容器已修复"RESOLVED"(如下图)

(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

确保容器已正常运行:

接下来停掉一个容器,模拟宕机:

状态为down:

//qq邮箱收到报警邮件:

//同样的,如果当你的服务恢复了正常运行后,也会发送报警邮件:

至此普罗米修斯监控部署完毕,并且成功实现邮箱报警。。。

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

容器 运行 文件 服务 报警 配置 邮箱 界面 普罗 普罗米修斯 信息 规则 镜像 监控 登陆 主机 模板 邮件 三台 接下来 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网 科技股互联网 互联网与科技发展 金融科技创新监管互联网金融 互联网金融公司科技 致骋互联网科技 南京欣网互联网科技 华中科技有哪些互联网大佬 宁波青枫互联网科技有限公司 彤创互联网科技有限公司 知域互联网科技有限公司大骗子 新兴科技互联网创新大赛颁奖典礼 内蒙古九一互联网科技 高科技互联网发展前景如何 互联网科技公司营业执照怎么办理 群盈汇互联网科技有限公司 工业互联网展湾科技股份有限公司 皮皮虾互联网科技有限公司 下一代互联网重大应用科技园 广州有谷有贝互联网科技有限公司 重庆互联网络科技 善班互联网科技有限公司 互联网金融科技委员会 科技与互联网的利与弊 江阴互联网智能科技产品进口 城市宝互联网科技有限公司 世界互联网科技成果奖 普陀区互联网教育科技管理办法 科技互联网经济论坛 悟空问答互联网科技
0