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. 1)下载镜像prom/node-exporter镜像:
  2. [root@sqm-docker02 ~]# docker pull prom/node-exporter
  1. 2)运行Node Exporter容器(挂载系统目录)
  2. [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. 1)下载google/cadvisor镜像
  2. [root@sqm-docker01 ~]# docker pull google/cadvisor
  1. 2)运行cAdvisor镜像:
  2. [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. 1)下载Prometheus镜像:
  2. [root@sqm-docker01 ~]# docker pull prom/prometheus
  1. 2)获取普罗米修斯的配置文件,先运行一个基于普罗米修斯的镜像:
  2. [root@sqm-docker01 ~]# docker run -d -p 9090:9090 --name prometheus --net=host prom/prometheus
  1. 3)拷贝prometheus容器内配置文件到当前目录下:
  2. [root@sqm-docker01 ~]# docker cp prometheus:/etc/prometheus/prometheus.yml /root/
  1. 修改该.yml文件:
  2. [root@sqm-docker01 ~]# vim prometheus.yml

添加本机和另外两台docker主机上服务的监控地址:端口

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

  1. [root@sqm-docker01 ~]# docker stop prometheus
  2. [root@sqm-docker01 ~]# docker rm prometheus
  1. 5)运行一个Prometheus容器:
  2. [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. 1)下载Grafana镜像:
  2. [root@sqm-docker01 ~]# docker pull grafana/grafana

  1. 2)运行Grafana:(设置登陆密码为123.com
  2. [root@sqm-docker01 ~]# mkdir grafana-storage
  3. [root@sqm-docker01 ~]# chmod 777 -R grafana-storage/
  4. [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. 1)下载Alertmanager告警镜像
  2. [root@sqm-docker01 ~]# docker pull prom/alertmanager

  1. 2)运行alertmanager
  2. [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/

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

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

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

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

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

//确保容器正常运行:

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

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

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

  1. 删除刚刚运行的普罗米修斯容器:
  2. [root@sqm-docker01 ~]# docker stop prometheus
  3. prometheus
  4. [root@sqm-docker01 ~]# docker rm prometheus
  5. prometheus
  1. //需要重新运行容器,将规则目录挂载到容器中:
  2. [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邮箱是否能够收到邮件:

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

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


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


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

(7)搭建报警信息模板:

  1. [root@sqm-docker01 ~]# mkdir alertmanager-tmpl
  2. [root@sqm-docker01 ~]# cd alertmanager-tmpl/
  3. [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 }}

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

#注意缩进:

  1. //删除原来的容器:
  2. [root@sqm-docker01 ~]# docker stop alertmanager
  3. [root@sqm-docker01 ~]# docker rm alertmanager
  1. //重新运行容器(重新挂载文件)
  2. [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邮箱收到报警邮件:

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

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

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

监控利器-Prometheus安装与部署+实现邮箱报警的更多相关文章

  1. 强大的开源企业级数据监控利器Lepus安装与配置管理

    开篇介绍 官方网站:http://www.lepus.cc 开源企业级数据库监控系统 简洁.直观.强大的开源数据库监控系统,MySQL/Oracle/MongoDB/Redis一站式性能监控,让数据库 ...

  2. prometheus监控预警之AlertManager邮箱报警

    Alertmanager 主要用于接收 Prometheus 发送的告警信息,它支持丰富的告警通知渠道,例如邮件.微信.钉钉.Slack 等常用沟通工具,而且很容易做到告警信息进行去重,降噪,分组等, ...

  3. 微服务监控神器Prometheus的安装部署

    本文涉及:如何在k8s下搭建Prometheus+grafana的监控环境 基本概念 Prometheus提供了容器和云原生领域数据搜集.存储.处理.可视化和告警一套完整的解决方案,最初时是由Soun ...

  4. Prometheus 安装部署

    Prometheus 安装部署 安装版本:prometheus-2.6.1 百度云下载:https://pan.baidu.com/s/1w16lQZKw8PCHqlRuSK2i7A 提取码:lw1q ...

  5. Prometheus 系统监控方案 二 安装与配置

    下载Prometheus 下载最新安装包,本文说的都是在Linux x64下面内容,其它平台没尝试过,请选择合适的下载. Prometheus 主程序,主要是负责存储.抓取.聚合.查询方面. Aler ...

  6. Linux 服务器运行健康状况监控利器 Spotlight on Unix 的安装与使用

    1.本文背景 1.1.Linux 服务器情况 # cat /etc/issueRed Hat Enterprise Linux Server release 6.1 (Santiago)Kernel ...

  7. zabbix监控实战<2>----zabbix-server的安装与部署

    第一章     zabbix-server的安装与部署 1.1  环境部署 eth0                               eth1 master      10.0.0.71  ...

  8. 重磅!容器集群监控利器 阿里云Prometheus 正式免费公测

    Prometheus 作为容器生态下集群监控的首选方案,是一套开源的系统监控报警框架.它启发于 Google 的 borgmon 监控系统,并于 2015 年正式发布.2016 年,Prometheu ...

  9. 第七模块 :微服务监控告警Prometheus架构和实践

    119.监控模式分类~1.mp4 logging:日志监控,Logging 的特点是,它描述一些离散的(不连续的)事件. 例如:应用通过一个滚动的文件输出 Debug 或 Error 信息,并通过日志 ...

随机推荐

  1. windows系统安装git

    一.下载git的安装包 git官网的下载地址:https://git-scm.com/download/win 选择自己的机型进行安装. 二.安装配置 一直点下一步就可以 安装完毕之后,打开电脑命令窗 ...

  2. POJ 1325 Machine schedine (二分图-最小点覆盖数=最大匹配边数)

    As we all know, machine scheduling is a very classical problem in computer science and has been stud ...

  3. 自然语言处理(NLP) - 数学基础(1) - 排列组合

    正如我在<自然语言处理(NLP) - 数学基础(1) - 总述>一文中所提到的NLP所关联的概率论(Probability Theory)知识点是如此的多, 饭只能一口一口地吃了, 我们先 ...

  4. Python中的input你真会吗?

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:一米阳光里的晴天娃娃   python中的input()方法是在控制台可 ...

  5. Python深入之python内存管理机制(重点)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:醍醐三叶   关于python的存储问题, (1)由于python中 ...

  6. 使用iCamera 测试MT9F002 1400w高分辨率摄像头说明

    一.硬件准备 l MT9F002摄像头模块 l iCamera 硬件主板CC1601 l MT9F002转接板(FPC_MT9F002 CB1602) 二.软件准备 l 下载iCamera软件 l 安 ...

  7. linux-history、find、

    1.history:查看历史记录 -c:清除历史命令记录 -d:删除某一条使用过的命令,-d后跟命令的序列号 2.find:在目录结构中搜索文件 -type:后面跟文件的类型,d表示目录,f表示文件 ...

  8. 【CSS】330- 手把手教你玩转 CSS3 3D 技术

    点击上方"前端自习课"关注,学习起来~ CSS3的3D起步 要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(transla ...

  9. 【JS】307- 复习 Object.assign 原理及其实现

    点击上方"前端自习课"关注,学习起来~ }let b = {    name: "muyiy",    book: {        title: " ...

  10. Electron:主进程和渲染进程