Docker监控之Prometheus

一、Prometheus简介

Prometheus(普罗米修斯),是一套开源的系统监控报警框架。它以给定的时间间隔从已配置的目标收集指标,评估规则表达式,显示结果,并在发现某些情况为真时触发警报。
作为新一代的监控框架,Prometheus 具有以下特点:

 

* 多维数据模型:由度量名称和键值对标识的时间序列数据
* PromSQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询
* 不依赖分布式存储,单个服务器节点可直接工作
* 基于HTTP的pull方式采集时间序列数据
* 推送时间序列数据通过PushGateway组件支持
* 通过服务发现或静态配置发现目标
* 多种图形模式及仪表盘支持(grafana)
* 适用于以机器为中心的监控以及高度动态面向服务架构的监控

 

 

Prometheus架构图

Docker监控之Prometheus

 

大致的工作流程是:

* Prometheus server 定期从配置好的 jobs 或者 exporters 中拉 metrics,或者接收来自 Pushgateway 发过来的 metrics,
或者从其他的 Prometheus server 中拉 metrics;
* Prometheus server 在本地存储收集到的 metrics,并运行已定义好的 alert.rules,记录新的时间序列或者向 Alertmanager 推送警报;
* Alertmanager 根据配置文件,对接收到的警报进行处理,发出告警;
* 在图形界面中,可视化采集数据;

 

 

二、环境准备

2.1环境规划

主机名称 IP地址 安装组件
docker01 192.168.45.129 NodeEXporter、cAdvisor、Prometheus Server、Grafana
docker02 192.168.45.141 NodeEXporter、cAdvisor
docker03 192.168.45.142 NodeEXporter、cAdvisor

注:部署该服务,包括四个组件:Prometheus Server、Node Exporter、cAdvrisor、Grafana其作用如下:

* Prometheus Server: 普罗米修斯的主服务器。(端口:9090)
* NodeEXporter: 负责收集Host硬件信息和操作系统信息。(端口:9100)
* cAdvisor: 负责收集Host上运行的容器信息。(端口:8080)
* Grafana:负责展示普罗米修斯监控界面。(端口:3000)
* Alertmanager:用来接收Prometheus发送的报警信息,并且执行设置好的报警方式,报警内容(同样也是在dockerA主机上部署,端口:9093);

 

各组件的关系:NodeEXporter、cAdvisor负责收集信息发送给 Prometheus server,在由 Prometheus server交给Grafana进行图形化的显示。如需报警,则由prometheus向Alertmanager组件发送信息!

 

 

2.2 部署Node-EXporter收集硬件和系统信息

注:实验环境,全部关闭防火墙,禁用selinux,三台dockerhost主机,全部部署Node-EXporter和cAdvisor

[root@docker01 ~]# docker run -d --name node -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)($|/)"
//部署node-EXporter,负责收集硬件和系统信息。
//使用prom/node-exporter 镜像创建一个名为node的容器,用于收集硬件和系统信息;
//--net=host表示Prometheus server可以直接与node-exporter通信;
//并映射9100端口

 

验证:打开浏览器验证结果

Docker监控之Prometheus

Docker监控之Prometheus

注:出现这个结果表示Node-Exporter组件安装成功,注意:另外两台dockerhost主机也需安装Node-Exporter组件组件操作完全一样,安装完成后请自行打开浏览器验证。

 

2.3 部署cAdvisor,收集节点容器信息

[root@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

 


 
验证:打开浏览器验证结果

 Docker监控之Prometheus

注:出现这个结果表示cAdvisor组件安装成功,注意:另外两台dockerhost主机也需安装cAdvisor组件操作完全一样,安装完成后请自行打开浏览器验证。

 

2.4 在docker01上部署Prometheus Server服务

在部署prometheus之前,我们需要对它的配置文件进行修改,所以我们先运行一个容器,先将其配置文件拷贝出来。

[root@docker01 ~]# docker run -d -p 9090:9090 --name prometheus --net=host prom/prometheus
[root@docker01 ~]# docker cp prometheus:/etc/prometheus/prometheus.yml ./
[root@docker01 ~]# vim prometheus.yml
   - targets: [localhost:9090,localhost:8080,localhost:9100,192.168.45.141:8080,192.168.45.141:9100,192.168.45.142:8080,192.168.45.142:9100]
 //用于指定监控本机的9090、8080、9100这三个端口,另外添加另外两台docker主机的8080、9100这两个端口。
 //8080端口运行的是cAdvisor服务
 //9100端口运行的是node-exporter服务
 //9090端口运行的就是Prometheus服务

 

注:这里指定了prometheus的监控项,包括它也会监控自己本地主机的数据

[root@docker01 ~]# docker rm prometheus -f    //将刚才运行的容器删除
prometheus
[root@docker01 ~]# docker run -d -p 9090:9090 --name prometheus --net=host -v /root/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
//重新运行一个prometheus容器,将刚才修改完成的配置文件挂载到容器中

 

验证:打开浏览器验证结果

Docker监控之Prometheus

Docker监控之Prometheus

 

Docker监控之Prometheus

上一篇:kafka简介


下一篇:QT 浮点数相比较qFuzzyCompare()