Installation and deployment monitoring tool -Prometheus + realization mail alarm

Prometheus (Prometheus) monitor

Preparing the environment:

Three docker host (centos7):
docker01: 172.16.1.30
Deployment Services: Prometheus Server, Grafana, the Node Exporter, cAdvrisor
docker02: 172.16.1.31
Deployment Services: Node Exporter, cAdvrisor
docker03: 172.16.1.32
Deployment Services: Node Exporter, cAdvrisor

Note: Because the test environment, so temporarily turn off the firewall, disable selinux, if it is issued by the external network server, can not turn off the firewall, you can set firewalld and iptables rules.


  • Prometheus server: Prometheus master server, listen port: 9090
  • Node Exporter: Host information collection hardware and operating system, listening port: 9100
  • vAdvrisor: container is responsible for collecting information on running Host, listening port: 8080
  • Grafana: Prometheus monitor used to display the user interface.

Project operations:

1, the deployment of Node Export (collect dockerhost information)
# Three dockerhost need in order to deploy:

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

Installation and deployment monitoring tool -Prometheus + realization mail alarm

  • Parameter --net = host: Thus Prometheus server may communicate directly with the Node Exporter

# Check whether the normal operation of the vessel:
Installation and deployment monitoring tool -Prometheus + realization mail alarm

After all three deployment is complete, log into the web page validation:
Enter the URL (three hosts can): http://172.16.1.30:9100/
Installation and deployment monitoring tool -Prometheus + realization mail alarm
Installation and deployment monitoring tool -Prometheus + realization mail alarm

Come in the future, you can see all the information code, very unfriendly, because we have not yet deployed graphical (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

Installation and deployment monitoring tool -Prometheus + realization mail alarm

//查看容器是否正常运行:
Installation and deployment monitoring tool -Prometheus + realization mail alarm

登陆web网页验证:
URL:http://172.16.1.30:8080
Installation and deployment monitoring tool -Prometheus + realization mail alarm
Installation and deployment monitoring tool -Prometheus + realization mail alarm
可以检测到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主机上服务的监控地址:端口

Installation and deployment monitoring tool -Prometheus + realization mail alarm

(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

//查看容器是否正常运行:
Installation and deployment monitoring tool -Prometheus + realization mail alarm

登陆Prometheus web页面:
URL:http://172.16.1.30:9090
Installation and deployment monitoring tool -Prometheus + realization mail alarm
Installation and deployment monitoring tool -Prometheus + realization mail alarm

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


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

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

Installation and deployment monitoring tool -Prometheus + realization mail alarm

(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

Installation and deployment monitoring tool -Prometheus + realization mail alarm
如果出现以上报错,需要重新加载进程,并且重启docker服务。
Installation and deployment monitoring tool -Prometheus + realization mail alarm
确保容器已经运行:
Installation and deployment monitoring tool -Prometheus + realization mail alarm
访问web界面(图形化):
URL:http://172.16.1.30:3000
默认用户名:admin 密码:123.com
Installation and deployment monitoring tool -Prometheus + realization mail alarm
登陆界面如下:
Installation and deployment monitoring tool -Prometheus + realization mail alarm

(3)接下来我们在图形化web界面上进行部署:
点击首页上名称为“add data source”图标---------->选择“Prometheus”点击进入到以下界面
Installation and deployment monitoring tool -Prometheus + realization mail alarm
Installation and deployment monitoring tool -Prometheus + realization mail alarm

设置成功后,接下来进入Grafana的官网https://grafana.com/
下载监控模板
Installation and deployment monitoring tool -Prometheus + realization mail alarm
Installation and deployment monitoring tool -Prometheus + realization mail alarm
Installation and deployment monitoring tool -Prometheus + realization mail alarm
Installation and deployment monitoring tool -Prometheus + realization mail alarm
Installation and deployment monitoring tool -Prometheus + realization mail alarm
下载成功后,回到Grafana管理的图形化界面。
点击导入刚刚下载的josn文件:

Installation and deployment monitoring tool -Prometheus + realization mail alarm
Installation and deployment monitoring tool -Prometheus + realization mail alarm
Installation and deployment monitoring tool -Prometheus + realization mail alarm
导入成功后,可以看到以下监控界面:
Installation and deployment monitoring tool -Prometheus + realization mail alarm
当然你也可以导入其他模板,可以在刚才的官网上下载其他模板。
Installation and deployment monitoring tool -Prometheus + realization mail alarm


3,实现Prometheus邮箱报警:

肯定是在Prometheus server进行部署啦

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

Installation and deployment monitoring tool -Prometheus + realization mail alarm

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

测试能否访问web界面:
URL:http://172.16.1.30:9093/
Installation and deployment monitoring tool -Prometheus + realization mail alarm
(3)拷贝它配置文件:
如果不知道它的配置文件路径,则需要进入容器进行查看:
Installation and deployment monitoring tool -Prometheus + realization mail alarm
[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 

设置实现报警的邮箱信息:
Installation and deployment monitoring tool -Prometheus + realization mail alarm

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

//确保容器正常运行:
Installation and deployment monitoring tool -Prometheus + realization mail alarm

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

Installation and deployment monitoring tool -Prometheus + realization mail alarm

以上是自己自定义编写的,当然也可以登陆Prometheus官网,搜索规则模板进行编写:
Installation and deployment monitoring tool -Prometheus + realization mail alarm
Installation and deployment monitoring tool -Prometheus + realization mail alarm

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

Installation and deployment monitoring tool -Prometheus + realization mail alarm

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

确保容器正常运行后,登陆网页进行查看:
Installation and deployment monitoring tool -Prometheus + realization mail alarm
确保能够看到刚才编写的规则。


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

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

登陆Prometheus界面可以看到该服务down:
Installation and deployment monitoring tool -Prometheus + realization mail alarm
Installation and deployment monitoring tool -Prometheus + realization mail alarm
当服务宕机后,邮箱收到该报警邮件,提示为“FIRING”


如果当你的服务又恢复了正常运行,依然后触发报警规则,会给你发送邮件,提示容器已修复“RESOLVED”(如下图)
Installation and deployment monitoring tool -Prometheus + realization mail alarm

(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" }}[email protected]{{ end }}
{{ define "email.to" }}[email protected]{{ 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

#注意缩进:
Installation and deployment monitoring tool -Prometheus + realization mail alarm
Installation and deployment monitoring tool -Prometheus + realization mail alarm

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

确保容器已正常运行:
Installation and deployment monitoring tool -Prometheus + realization mail alarm

接下来停掉一个容器,模拟宕机:
Installation and deployment monitoring tool -Prometheus + realization mail alarm
状态为down:
Installation and deployment monitoring tool -Prometheus + realization mail alarm

// qq mailbox receives an alarm message:
Installation and deployment monitoring tool -Prometheus + realization mail alarm
// Similarly, if after your service resumed normal operations, will send alarm messages:
Installation and deployment monitoring tool -Prometheus + realization mail alarm
So far Prometheus deployed monitoring, alarm and successful implementation of the mailbox. . .

-------- end of this article so far, thanks for reading --------

Guess you like

Origin blog.51cto.com/13972012/2446995