标签:加法 选择 图形 连接 -- jobs 指定 模式 模块
博文大纲:
一、prometheus简介
二、Prometheus组成及架构
三、部署prometheus
1)环境准备
2)部署prometheus
Prometheus是一套开源的系统监控报警框架。它以给定的时间间隔从已配置的目标收集指标,评估规则表达式,显示结果,并在发现某些情况为真时触发警报。
作为新一代的监控框架,Prometheus具有以下特点 :
- 强大的多维度数据模型:
(1)时间序列数据通过metric名和键值对来区分;
(2)所有的metrics都可以设置任意的多维标签;
(3)数据模型更随意,,不需要刻意设置为以点分隔的字符串;
(4)可以对数据模型进行聚合、切割和切片操作;
(5)支持双精度浮点类型,标签可以设为全unicode(统一码);- 灵活、强大的查询语句:在同一个查询语句,可以对多个 metrics 进行乘法、加法、连接、取分数位等操作;
- 易于管理:不依赖于分布式存储;
- 使用 pull 模式采集时间序列数据;
- 可以采用 push gateway 的方式把时间序列数据推送至 Prometheus server 端;
- 可以通过服务发现或者静态配置去获取监控的 targets;
- 有多种可视化图形界面;
- 易于伸缩。;
Prometheus包含了许多组件,其中许多组件都是可选的,常用的组件有:
- Prometheus Server:用于收集和存储时间序列数据;
- Client Library:客户端库,为需要监控的服务生成相应的 metrics 并暴露给 Prometheus server;
- Push Gateway:主要用于短期的 jobs。由于这类 jobs 存在时间较短,可能在 Prometheus 来 pull 之前就消失了。为此,这次 jobs 可以直接向 Prometheus server 端推送它们的 metrics;
- Exporters:用于暴露已有的第三方服务的 metrics 给 Prometheus;
- Alertmanager:从 Prometheus server 端接收到 alerts 后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警;
…………等等,还有好多,这里就列出几个常用的组件!
Prometheus官方文档中的架构图:
官方的架构图中,主要模块块包括:Prometheus server, exporters, Pushgateway, PromQL, Alertmanager 以及图形界面;
大致的工作流程是:
(1)Prometheus server 定期从配置好的 jobs 或者 exporters 中拉 metrics,或者接收来自 Pushgateway 发过来的 metrics,或者从其他的 Prometheus server 中拉 metrics;
(2)Prometheus server 在本地存储收集到的 metrics,并运行已定义好的 alert.rules,记录新的时间序列或者向 Alertmanager 推送警报;
(3)Alertmanager 根据配置文件,对接收到的警报进行处理,发出告警;
(4)在图形界面中,可视化采集数据;
注意:上述三台服务器上必须具备最基本的docker环境,本次本人采用的docker版本为18.09.0!
本次案例所需部署的组件:
- Prometheus server:普罗米修斯的主服务器;
- NodeEXporter:负责收集Host硬件信息和操作系统信息;
- cAdvisor:负责收集Host上运行的容器信息;
- Grafana:负责展示普罗米修斯监控界面;
本次案例之间各组件的关系:NodeEXporter、cAdvisor负责收集信息发送给 Prometheus server,在由 Prometheus server交给Grafana进行图形化的显示。
实验环境,为了简单起见,关闭防火墙、SELinux,实际环境中需开启相应的端口!
NodeEXporter主要负责收集Host硬件信息和操作系统信息!
[root@dockerA ~]# 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)($|/)"
//使用prom/node-exporter 镜像创建一个名为node的容器,用于收集硬件和系统信息;
//--net=host表示Prometheus server可以直接与node-exporter通信;
//并映射9100端口
执行完成后,客户端使用浏览器进行访问,如图:
访问到以上页面表示node-exporter这个组件安装成功!
由于这个NodeEXporter组件需要在三台docker host主机上,所以以上命令就需要在另外两台主机上都执行。执行完成后,自行使用浏览器访问测试!
cAdvisor主要负责收集Host上运行的容器信息!
[root@dockerA ~]# 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
客户端访问测试:
访问到上述页面则表示cAdvisor这个组件安装成功!
同样这个cAdvisor组件也是需要在三台docker host上全部安装的!所以以上命令也需在另外两台主机上执行,执行完成后,自行测试!
Prometheus是普罗米修斯的主服务器!
在部署Prometheus之前,需要对它的配置文件进行修改,所以首先运行一个Prometheus容器将其配置文件复制到本地,便于进行修改。
[root@dockerA ~]# docker run -d -p 9090:9090 --name prometheus --net=host prom/prometheus
//运行一个Prometheus容器是为了将它的配置文件拿到本地
[root@dockerA ~]# docker cp prometheus:/etc/prometheus/prometheus.yml .
//将Prometheus容器中的主配置文件复制到本地
[root@dockerA ~]# vim prometheus.yml //编辑主配置文件
- targets: [‘localhost:9090‘,‘localhost:8080‘,‘localhost:9100‘,‘192.168.1.2:8080‘,‘192.168.1.2:9100‘,‘192.168.1.3:8080‘,‘192.168.1.3:9100‘]
//这项原本是存在的,只需修改即可!
//用于指定监控本机的9090、8080、9100这三个端口,另外添加另外两台docker主机的8080、9100这两个端口。
//8080端口运行的是cAdvisor服务
//9100端口运行的是node-exporter服务
//9090端口运行的就是Prometheus服务
[root@dockerA ~]# docker rm prometheus -f //将刚才运行的容器删除
prometheus
[root@dockerA ~]# docker run -d -p 9090:9090 --name prometheus --net=host -v /root/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
//重新运行一个prometheus容器,将刚才修改完成的配置文件挂载到容器中
客户端访问测试:
grafana主要负责展示普罗米修斯监控界面,给我们提供良好的图形化界面!
[root@dockerA ~]# mkdir grafana-storage
[root@dockerA ~]# chmod 777 -R grafana-storage
//创建一个目录,赋予777的权限
[root@dockerA ~]# docker run -d -p 3000:3000 --name grafana -v /root/grafana-storage:/var/lib/grafana -e "GF_SECURITY_ADMIN_PASSWORD=123.com" grafana/grafana
//“-e”选项表示修改容器内部的环境变量,将admin用户的密码更改为123.com;
客户端访问测试:
上述配置完成后,我们就需要配置它以什么样的形式来给我们展示了,可以自定义,但是很麻烦,我选择直接去grafana官网寻找现成的模板。如图:
将grafana官方的模板导入到我们的grafana容器提供的web页面中,方法有两种方式:
在grafana官网选择自己喜欢的模板,点击进入,如图:
下载后,回到自己搭建的grafana容器提供的web页面中,如图:
但是仔细看的话,会发现这个模板有些信息都检测不到,所以这里就是为了展示一种方式导入模板的方式。个人建议推荐使用第二种方式!
选择合适的模板后,记录其ID号,如图:
记录下模板的ID号之后,同样回到自己搭建的grafana容器提供的web页面中,如图:
至此web界面的监控就部署完成了!
标签:加法 选择 图形 连接 -- jobs 指定 模式 模块
原文地址:https://blog.51cto.com/14157628/2461349