大鹏一日同风起,扶摇直上九万里。这篇文章主要讲述Centos7 docker部署监控Prometheus+Grafana相关的知识,希望能为你提供帮助。
一、Prometheus简介
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02S334-0.jpg)
文章图片
Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation), 将Prometheus纳入其下第二大开源项目。Prometheus目前在开源社区相当活跃。Prometheus和Heapster(Heapster是K8S的一个子项目,用于获取集群的性能数据。)相比功能更完善、更全面。Prometheus性能也足够支撑上万台规模的集群。
二、Prometheus基本原理Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、nginx、mysql、Linux系统信息(包括磁盘、内存、CPU、网络等等)。
其大概的工作流程是:
1、Prometheus server 定期从配置好的 jobs 或者 exporters 中拉 metrics,或者接收来自 Pushgateway 发过来的 metrics,或者从其他的 Prometheus server 中拉 metrics。
2、Prometheus server 在本地存储收集到的 metrics,并运行已定义好的 alert.rules,记录新的时间序列或者向 Alertmanager 推送警报。
3、Alertmanager 根据配置文件,对接收到的警报进行处理,发出告警。
4、在Grafana图形界面中,可视化查看采集数据。
三、Prometheus架构图
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02W925-1.jpg)
文章图片
四、Prometheus特性 1、多维度数据模型。 2、灵活的查询语言。 3、不依赖分布式存储,单个服务器节点是自主的。 4、通过基于HTTP的pull方式采集时序数据。 5、可以通过中间网关进行时序列数据推送。 6、通过服务发现或者静态配置来发现目标服务对象。 7、支持多种多样的图表和界面展示,比如Grafana等。 五、Prometheus组件 1、Prometheus Server 主要负责数据采集和存储,提供PromQL查询语言的支持。 2、Alertmanager 警告管理器,用来进行报警。 3、Push Gateway 支持临时性Job主动推送指标的中间网关。 4、Exporters 输出被监控组件信息的HTTP接口。 5、Grafana 监控数据展示Web UI。 六、Prometheus服务发现由于 Prometheus 是通过 Pull 的方式主动获取监控数据,也就是每隔几秒钟去各个target采集一次metric。所以需要手工指定监控节点的列表,当监控的节点增多之后,每次增加节点都需要更改配置文件,尽管可以使用接口去热更新配置文件,但仍然非常麻烦,这个时候就需要通过服务发现(service discovery,SD)机制去解决。
Prometheus 支持多种服务发现机制,可以自动获取要收集的 targets,包含的服务发现机制包括:azure、consul、dns、ec2、openstack、file、gce、kubernetes、marathon、triton、zookeeper(nerve、serverset),配置方法可以参考手册的配置页面。可以说 SD 机制是非常丰富的,但目前由于开发资源有限,已经不再开发新的 SD 机制,只对基于文件的 SD 机制进行维护。针对我们现有的系统情况,我们选择了静态配置方式。
七、Prometheus四种数据类型 1、CounterCounter用于累计值,例如记录请求次数、任务完成数、错误发生次数。一直增加,不会减少。重启进程后,会被重置。
例如:http_response_totalmethod=”GET”,endpoint=”/api/tracks” 100,10秒后抓取http_response_totalmethod=”GET”,endpoint=”/api/tracks” 100。
2、GaugeGauge常规数值,例如 温度变化、内存使用变化。可变大,可变小。重启进程后,会被重置。例如: memory_usage_byteshost=”master-01″ 100 < 抓取值、memory_usage_byteshost=”master-01″ 30、memory_usage_byteshost=”master-01″ 50、memory_usage_byteshost=”master-01″ 80 < 抓取值。
3、HistogramHistogram(直方图)可以理解为柱状图的意思,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。它特别之处是可以对记录的内容进行分组,提供count和sum全部值的功能。例如:小于10=5次,小于20=1次,小于30=2次,count=7次,sum=7次的求和值。
4、SummarySummary和Histogram十分相似,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。同样提供 count 和 sum 全部值的功能。例如:count=7次,sum=7次的值求值。
它提供一个quantiles的功能,可以按%比划分跟踪的结果。例如:quantile取值0.95,表示取采样值里面的95%数据。
八、部署环境系统版本:CentOS Linux release 7.6.1810 (Core)
docker版本:Docker version 1.13.1
关闭防火墙 systemctl stop firewalld.service
禁止防火墙开机自启 systemctl disable firewalld.service
关闭selinux
sed -i ‘s/SELINUX=enforcing /SELINUX=disabled/g’ /etc/selinux/config
重启系统即可 reboot
九、部署主机监控主机:192.168.189.2(Prometheus+Grafana)
被监控主机:192.168.189.5(node-exporter)
十、部署方式方式一:使用docker镜像部署
方式二:使用二进制源码部署
==注:本文使用docker镜像部署。==
十一、部署Prometheus 1、下载镜像包docker pull prom/node-exporter
docker pull prom/prometheus
docker pull grafana/grafana
2、创建prometheus挂载目录mkdir /opt/prometheus
3、创建prometheus配置文件
vi /opt/prometheus/prometheus.yml
global:
scrape_interval:15s
evaluation_interval: 15s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: [localhost:9090]
labels:
instance: centos7
- job_name: grafana
static_configs:
- targets: [192.168.189.2:9100]
labels:
instance: centos7
==注:这里的IP:189.2就是本地localhost本地IP,因为为了实验方便,将prometheus和grafana搭建在同一个服务器上了。==
4、安装dockeryum -y install docker
5、启动docker并设置开机自启systemctl start docker
systemctl enable docker
6、启动prometheus
docker run-d \\
-p 9090:9090 \\
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml\\
prom/prometheus
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02R039-2.jpg)
文章图片
7、查看端口状态netstat -antupl |grep 9090
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02R041-3.jpg)
文章图片
8、访问地址http://192.168.189.2:9090/
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02T236-4.jpg)
文章图片
十二、部署grafana 1、创建挂载数据目录mkdir /opt/grafana-storage
2、设置权限chmod 777 -R /opt/grafana-storage
==注:因为这个文件需要写入所以要给一定的权限,这里为了方便测试给777,具体权限要根据具体实际情况而定。==
3、启动grafana
docker run -d \\
-p 3000:3000 \\
--name=grafana \\
-v /opt/grafana-storage:/var/lib/grafana \\
grafana/grafana
4、查看端口状态netstat -antupl | grep 3000
5、访问地址http://192.168.189.2:3000/login
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02R622-5.jpg)
文章图片
==注:默认账号密码都是admin==
十三、部署node-exporter 1、启动node-exporter
docker run -d -p 9100:9100 \\
-v "/proc:/host/proc:ro" \\
-v "/sys:/host/sys:ro" \\
-v "/:/rootfs:ro" \\
--net="host" \\
prom/node-exporter
2、查看端口状态netstat -antupl | grep 9100
3、访问网址http://192.168.189.2:9100/
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02W112-6.jpg)
文章图片
十四、添加监控节点主机IP192.168.189.5
1、安装dockeryum -y install docker
2、启动docker并设置开机自启systemctl start docker
systemctl enable docker
3、被监控主机安装node-exporter //下载镜像docker pull prom/node-exporter
//安装并启动镜像
docker run -d -p 9100:9100 \\
-v "/proc:/host/proc:ro" \\
-v "/sys:/host/sys:ro" \\
-v "/:/rootfs:ro" \\
--net="host" \\
prom/node-exporter
5、修改prometheus配置文件主机IP:192.168.189.2
cat /opt/prometheus/prometheus.yml
global:
scrape_interval:15s
evaluation_interval: 15s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: [localhost:9090]
labels:
instance: centos7
- job_name: grafana
static_configs:
- targets: [192.168.189.2:9100]
labels:
instance: centos7
- job_name: harbor
static_configs:
- targets: [192.168.189.5:9100]
labels:
instance: centos7
6、重启prometheusdocker restart aee4834494e
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02R946-7.jpg)
文章图片
7、测试//网页登录prometheus
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02V312-8.jpg)
文章图片
//点击Status下拉选项,选择Targets。
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02R959-9.jpg)
文章图片
//如下图说明添加监控节点已完成
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02QL6-10.jpg)
文章图片
十五、添加监控模版 1、添加数据源 //网页登陆grafana
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02V953-11.jpg)
文章图片
//点击左侧中间设置键添加数据源
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02S416-12.jpg)
文章图片
//点击Add data source
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02V0V-13.jpg)
文章图片
//点击prometheus
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02Wc5-14.jpg)
文章图片
//设置名字和IP地址
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02WF0-15.jpg)
文章图片
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02V0X-16.jpg)
文章图片
==注:如上图点击Save & Test,如果出现绿色的,说明ok了。==
2、添加模版 //点击左上角+号
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02R507-17.jpg)
文章图片
//点击Import
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02TK4-18.jpg)
文章图片
//点击输入ID号或者上传json文件(二选一即可)
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02R159-19.jpg)
文章图片
//点击右侧load
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02VW7-20.jpg)
文章图片
//选择数据源点击Import导入模版
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02S218-21.jpg)
文章图片
//最终显示成果【Centos7 docker部署监控Prometheus+Grafana】
![Centos7 docker部署监控Prometheus+Grafana](http://img.readke.com/220608/1T02WP5-22.jpg)
文章图片
推荐阅读
- linux fedora35安装deepin-wine(deepin-wine-on-fedora项目)
- 第一次在linux服务器上跑python项目&Sklearn安装问题
- linux下制作qcow2镜像
- 千万级车联网 MQTT 消息平台架构设计
- linux /bin/sh -c的用途
- Docker镜像的创建
- docker的镜像创建过程+创建私人仓库 (已重新编写)
- linux之file命令总结
- win7系统不能正常关机 技术员联盟Win7关机失败的处理办法