Centos7 docker部署监控Prometheus+Grafana

大鹏一日同风起,扶摇直上九万里。这篇文章主要讲述Centos7 docker部署监控Prometheus+Grafana相关的知识,希望能为你提供帮助。
一、Prometheus简介

Centos7 docker部署监控Prometheus+Grafana

文章图片

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

文章图片

四、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

文章图片

7、查看端口状态netstat -antupl |grep 9090
Centos7 docker部署监控Prometheus+Grafana

文章图片

8、访问地址http://192.168.189.2:9090/
Centos7 docker部署监控Prometheus+Grafana

文章图片

十二、部署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

文章图片

==注:默认账号密码都是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

文章图片

十四、添加监控节点主机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

文章图片

7、测试//网页登录prometheus
Centos7 docker部署监控Prometheus+Grafana

文章图片

//点击Status下拉选项,选择Targets。
Centos7 docker部署监控Prometheus+Grafana

文章图片

//如下图说明添加监控节点已完成
Centos7 docker部署监控Prometheus+Grafana

文章图片

十五、添加监控模版 1、添加数据源 //网页登陆grafana
Centos7 docker部署监控Prometheus+Grafana

文章图片

//点击左侧中间设置键添加数据源
Centos7 docker部署监控Prometheus+Grafana

文章图片

//点击Add data source
Centos7 docker部署监控Prometheus+Grafana

文章图片

//点击prometheus
Centos7 docker部署监控Prometheus+Grafana

文章图片

//设置名字和IP地址
Centos7 docker部署监控Prometheus+Grafana

文章图片

Centos7 docker部署监控Prometheus+Grafana

文章图片

==注:如上图点击Save & Test,如果出现绿色的,说明ok了。==
2、添加模版 //点击左上角+号
Centos7 docker部署监控Prometheus+Grafana

文章图片

//点击Import
Centos7 docker部署监控Prometheus+Grafana

文章图片

//点击输入ID号或者上传json文件(二选一即可)
Centos7 docker部署监控Prometheus+Grafana

文章图片

//点击右侧load
Centos7 docker部署监控Prometheus+Grafana

文章图片

//选择数据源点击Import导入模版
Centos7 docker部署监控Prometheus+Grafana

文章图片

//最终显示成果【Centos7 docker部署监控Prometheus+Grafana】
Centos7 docker部署监控Prometheus+Grafana

文章图片


    推荐阅读