性能测试——搭建Prometheus+Grafana平台(超详细版)
在线安装 yum install -y grafana-9.5.21-1.x86_64.rpm【或者rpm -ivh grafana-9.5.21-1.x86_64.rpm】图解释:Jmeter通过对服务器进行压测,得到性能的业务指标,再通过后端监听器把数据传输给influxdb存储,grafana从influxdb里读取数据展示。时序数据库:是一种时间相关的非关系型数据库,按照时间序列记 录数据
一、搭建influxdb + prometheus + grafana +Jmeter监控平台
1、目的:对性能测试的结果进行持久化存储。
2、每个组件介绍
- Jmeter:性能测试工具,可以收集到服务器的性能测试指标:统计TPS、响应时间、线程数、错误率等信息。
- influxdb: 一种时序数据库, 可以永久性保存数据【除非手动清除和数 据库坏了】
- 时序数据库:是一种时间相关的非关系型数据库,按照时间序列记 录数据,每一条数据都有一个时间,很方便用线性图展示数据。
- Jmeter通过一个【后端监听器】可以将统计出的结果实时异步发送 到 InfluxDB 中进行持久化存储
- Grafana:监控大屏, 一个web端的展示平台, 通过更换模板展示不同的 效果,可以直接拉取influxdb数据显示出来在页面图标里,直观并美观
图解释:Jmeter通过对服务器进行压测,得到性能的业务指标,再通过后端监听器把数据传输给influxdb存储,grafana从influxdb里读取数据展示。
3、安装和部署监控平台
-
Grafana
- 介绍:grafana是一款用go编写的开源应用,用于大规模指标数据的可视化 展示,是网络架构和应用分析中最流行的时序数据展示工具;【监控大屏】
- 支持的数据库:influxdb、prometheus、graphite等 【都是时序数据库】
- 官方网站:grafana.com网站
- 安装:安装建议使用独立机器,不要在被测项目服务器上,会占用系统资源影响性能 测试结果数据。【可以放在之前的助攻机上或者新建一个空的机器上】步骤如下:
- 将安装包放在服务器上grafana-9.5.21-1.x86_64.rpm
- 在线安装 yum install -y grafana-9.5.21-1.x86_64.rpm【或者rpm -ivh grafana-9.5.21-1.x86_64.rpm】
- 启动服务:systemctl start grafana-server | systemctl restart grafana-server 【启动 | 重启】
- 查看一下grafana的服务: systemctl status grafana-server ,状态为active(running)
- web页面访问grafana服务:端口默认3000,账号和密码默认是 admin / admin
- 访问http://机器ip:3000,可以看到登录页面,输入账号和密码即可登录
此时,完成Grafana的安装
-
Influxdb
- 介绍:influxDB是一个时序数据库,使用Go语言编写,适合构建大部分分
布式监控系统。JMeter的业务指标支持的influxdb数据库,不支持prometheus数据库。
-
安装:使用独立机器安装,建议grafana和influxdb放在同一机器,安装步骤如下:
- 导入rpm包到服务器 influxdb-1.7.0.x86_64.rpm
- 在服务器上在线安装:yum install -y influxdb-1.7.0.x86_64.rpm
- 启动数据库:influx & 或者 service influxdb start,端口为8086(&是后台运行的意思)
- 查看服务启动情况:ps -ef | grep influxd,如下图:
-
Jmeter
-
在Jmeter与influxdb集成:添加后端监听器,选择influxdb,以及做好数据库的信息配置:

备注:
1、application对应的值是事物名,可以不改
2、summyOnly对应的值是true,代表合并所有事物,就没有其他事物 None
Influxdb + Grafana结合使用:添加数据源【influxdb数据库】+ 添加面板【grafana的模板】
1、具体步骤
- 访问grafana,http://ip地址:3000,使用账号密码admin/admin 登录进去
- 默认没有数据源,添加数据源:Administrator-->data
Sources-->Add data source--->搜索influxdb,并选择influxdb:
- 配置influxdb的ip和端口,并选择jmeter数据库:
4. Dashboard【New】 > import--> 输入5496, load >选择db名字为刚刚添加的数据源【influxDB】--> import 即可:

5. 运行脚本后,就可以看到数据了!
-
注意事项(遇到的问题):
1、jmeter写数据到 influxdb数据库中, Jmeter到influxdb 8086端口要通 【Jmeter通过后端监听器写入数据到influxdb数据库】 ,虚拟机防火墙关闭的,所有端口都是开放的;但是如果以后的公司用的云 服务器,那么这个端口安全组策略开放;
2、grafana到 influxdb的网络+ grafana到influxd 8086端口要通 【grafana 需要去influxdb的数据库里拿数据显示】 我们课程里是把grafana和influxdb配置在同一台机器里,但是在实际操作中未 必是同一个服务器,所以确保网络通道。
3、grafana的机器要能访问 grafana.com网站,需要load 模板。【通过id形式 加载模板,否则就用json文件离线形式导入】通过id形式导入面板,网络和域名解析都是正常; 否则用json离线导入。
二、性能监控平台:Prometheus+grafana+Export
1、目的:监控系统资源指标【比如cpu 内存 等】
2、各个详细介绍:
-
Prometheus 数据库
1、介绍:Prometheus 是由 SoundCloud 开源监控告警解决方案。它用时序数据的方式存储数据,有独立的 PromQL (Prometheus Query Language) 数据 查询语言。以下是它的一些特点:
-
开源的,可以灵活定制
-
也是时序数据库,数据带time时间戳,但是格式跟influxdb有差异;功能比influxdb更强大,可以跟更多的插件进行集成,很多数据都可以写到 prometheus,更强大。
-
Prometheus只存放数据,不主动收集数据,需要通过工具push数据 存储进去。【influxdb的数据是通过JMeter的后端监听器推送过来】 prometheus用的是export工具,收集被测服务器里的资源数据 的。
2、安装:不要安装在被测项目服务器,可以安装在助攻机上 【可以跟之前的grafana和influxdb在一台机器上】,详细步骤如下:
- 将安装包传到服务器上进行解压:tar -xzvf prometheus-2.20.1.linux-amd64.tar.gz
- 进入解压目录,启用prometheus服务,命令:./promethues & 【后台启动】
- 验证是否成功:http://192.168.61.158:9090/graph,默认端口为9090,可以访问到网页,说明prometheus的安装没问题【默认端口9090 端口 不可以复用和冲突的】
- 查看进程:ps -ef | grep prometheus
这个prometheus上能看一个数据 也有一些图标,但是不是很美观和直观,所以收集的数据 还是要借助grafana来看。
-
Export收集数据
1、介绍:export是一类监控工具【不是一个工具】:主要用于收集服务器资源利用率情 况,需要安装在被监听的服务器上【被测的项目服务器】。它的特点:
-
可以监控数据,并定时的发送给prometheus存储在数据库里。
-
每个场景有不同的export,需要监听不同的数据,就需要使用不同的export。
-
如果你有多台被监控的服务器都需要收集数据,那么就需要多台服务器上 都上传这个exporter。
我们需要监控硬件资源,如:CPU、内存、磁盘、就需要Node Export
-
NodeExport+Prometheus集成【注意确保两个服务器之间网络通的】
1、安装:因为监测的是北侧服务器的硬件资源使用情况,因此安装在被测服务器上,步骤如下:
2、进入解压后的目录,启动这个服务: ./node_exporter &
3、验证这个node服务是否启动:打开 http://ip:9100/metrics,可以看到metrics 这个路径,点击进去就是收集到的硬件监控的结果。刷新会实时更新监控到的数据。注意事项:
① node_exporter 启动后,默认端口是 9100 【注意端口需要开放安全组策略 ,不然访问不到,虚拟机防火墙都已经放开】
② 但是export收集数据不能持久化存储数据,所以我们要把node_export的数据全部要传到prometheus数据库里去存储。
2、vi prometheus.yml 编辑配置文件,添加下面标黄的部分:保存并退出
- 地址是被测试下面的服务器的地址,不要写错了;如果要加多个目标机 器,逗号隔开就可以: - targets: ['192.168.61.156:9100','192.168.61.157:9100']
- job_name :这个名字只要不重复,自己随便取,但是建议见名知意; server_data 或者node_export都可以
- 注意格式对其和缩进,如果错了会识别错误
5、修改完完成后需要重启prometheus服务: 可以先kill掉之前的启动进程,再次启动一下 ./promethues & 【kill进程: kill -9 进程号】
- 可以去prometheus页面上查看一下 监控节点是否显示:选择status- -> target:
- http://ip地址:9090/targets :会出现刚刚配置的节点,并状态是up的。
-
Node Export+Prometheus+Grafana集成
在grafana里添加prometheus的数据源,并把收集的通过模板展示出来。
1、步骤:
① 添加数据源 prometheus,配置IP和端口地址,保存数据源。
② 按照图示的导航地址,找到这个页面,然后输入模板ID 12884 ,再填写我圈出来的部分
③ 点击import后,可以直接调整到监控面板里显示监控的数据
三、常见问题
1、如果出现红色的叹号:
- 检查prometheus服务是否启动; 【ps -ef | grep prometheus】
- grafana的数据源prometheus的配置:地址是否正确?地址有可能变化 的?
2、不提示红色叹号,但是数据显示null N/A:
- 如果显示不出来被测服务器的instance,检查prometheus的配置文件;【可能没有配置 或者配置完没重启 配置格式有问题】
- 如果出现连接不上问题,界面上所有的pannel都是 N/A None, pannel 是空的数据
-
要检查服务器的node export启动情况;【./node_exporter & 】:http://ip地址:9090/targets 检查prometheus上的状 态是否为up的;
-
首先排查数据源的配置没有问题;
-
右上角时间范围可以选择-选择时间范围(扩大)
-
时间不同步:数据库服务器、grafana机器、被监控机器,时间相差非常大,也会显示不了数据,需要去同步一下时间:【date检查时间是否不一样 】
-
influxdb数据库有数据,但是grafana不显示/显示部分数据,就是influxdb的时间和jmeter工具机器时间不一致,同步时间;① yum -y install ntp 【使用ntp同步时间,如果没有ntp工具先安装一下】② ntpdate cn.pool.ntp.org 【再同步时间】
-
更多推荐
所有评论(0)