性能测试监控:Jmeter +InfluxDB +collectd +Grafana(十六)
虚拟机ip 192.168.180.128
Influxdb
- 时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等);
- 度量(Metrics):对实时大量数据进行计算;
- 事件(Event):支持任意的事件数据,换句话说,任意事件的数据我们都可以做操作。
- schemaless(无结构),可以是任意数量的列;
- min, max, sum, count, mean, median 一系列函数,方便统计;
- Native HTTP API, 内置http支持,使用http读写;
- Powerful Query Language 类似sql;
- Built-in Explorer 自带管理工具。
Influxdb安装
官方安装文档:https://docs.influxdata.com/influxdb/v1.4/introduction/installation/
官网:https://portal.influxdata.com/downloads
- port 8083:管理页面端口,访问localhost:8083可以进入你本机的influxdb管理页面;
- port 8086:http连接influxdb client端口,一般使用该端口往本机的influxdb读写数据。
1. 安装InfluxDB(方式一,官方文档安装方式)
新建InfluxDB下载源
输入 cat << EOF | tee /etc/yum.repos.d/influxdb.repo
使用yum下载InfluxDB yum install -y influxdb
2. 安装InfluxDB(方式二)
下载rpm包
wget https://s3.amazonaws.com/influxdb/influxdb-race-nightly-1.x86_64.rpm
chown: cannot access `/var/log/influxdb': No such file ordirectory
然后进入到 scripts 目录下 cat 查看这个启动文件
执行启动命令 /usr/bin/influxd -config /etc/influxdb/influxdb.conf $INFLUXD_OPTS (2019-09-05再次安装后发现,先执行下面第三步的“修改配置”,再启动。即可成功访问)
打开浏览器,访问虚拟机IP“http://192.168.180.128:8086/”
启动成功之后 会发现 访问的时候 提示 404 page not found 不用着急 因为只部署一个influxdb是无法在web页面监控到的(官方1.2以上都移除了web页面监控)
可以通过检查端口查看是否启动成功
[root@Lamw scripts]# netstat -tlnpu |grep influxd
如果还出现访问不了的情况,可以检查下防火墙是否关闭。如未关闭,关闭防火墙之后 再尝试。
3. 修改配置
修改InfluxDB的配置,主要配置jmeter存储的数据库与端口号,还有需要将UI端口开放, 找到 [http] 、 [[graphite]]节点,enabled改为true(默认是开启的),bind-address修改绑定的IP和端口:
[root@Lamw ~]# vi /etc/influxdb/influxdb.conf
# 找到graphite并且修改它的库与端口 [[graphite]] enabled = true database = "jmeter" bind-address = ":2003" protocol = "tcp" consistency-level = "one"
原图:
修改如下:
# [http]
#Determines whether HTTP endpoint is enabled.
enabled= true
# The bindaddress used by the HTTP service.
bind-address= ":8086" 此处配置的IP和端口供grafana连接使用
修改后
# 找到admin,将前面的#号去掉,开放它的UI端口 [admin] # Determines whether the admin service is enabled. enabled = true # The default bind address used by the admin service. bind-address = ":8083" # Whether the admin service should use HTTPS. # https-enabled = false # The SSL certificate used when HTTPS is enabled. # https-certificate = "/etc/ssl/influxdb.pem
配置完了之后:
启动InfluxDB
[root@localhost ~]# influx
查看数据库
show databases
创建数据库
create database "jmeter"
创建influxdb数据库,数据库名称是jmeter
切换数据库
use jmeter
上面的 show database报错是因为打错了了, 应该是show databases
4. 安装collectd(可有可无,小七装了之后没启用)
# yum install epel-release -y
# yum install -y collectd
启动collectd:
# service collectd start
# service collectd status
5. 安装Grafana
使用yum下载Grafana并且安装
yum install https://grafanarel.s3.amazonaws.com/builds/grafana-3.0.1-1.x86_64.rpm
2019-09-05 更新的最新下载地址 wget https://dl.grafana.com/oss/release/grafana-6.3.5-1.x86_64.rpm Grafana 官网 https://grafana.com/grafana/download 下载后的安装 1、运行 rpm -ivh grafana-6.3.5-1.x86_64.rpm 报错:warning: grafana-6.3.5-1.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 24098cb6: NOKEY error: Failed dependencies: urw-fonts is needed by grafana-6.3.5-1.x86_64
2、执行 yum install -y urw-fonts 3、再进行第一步的运行rpm -ivh grafana-6.3.5-1.x86_64.rpm 4、然后启动即可/etc/init.d/grafana-server restart
启动Grafana
[root@Lamw usr]# /etc/init.d/grafana-server restart
打开浏览器,访问虚拟机IP“http://192.168.180.128:3000”
输入用户名,密码登录系统。用户名与密码都是"admin"
添加需要展示数据的数据库(配置InfluxDB )
添加InfluxDB数据库配置。输入帐号密码“admin / admin”,点击“add”添加之后点击“Test & Save” 提示“Success”说明成功了
PS:2019-09-05更新内Grafana的版本更新后,部分内容更新了 如下图
【注意】URL的端口是8086,而刚才配置的8083是UI的端口。
- 8083端口是InfluxDB的UI界面展示的端口
- 8086端口是Grafana用来从数据库取数据的端口
- 2003端口则是刚刚设置的,Jmeter往数据库发数据的端口
6. 下面来配置JMeter
1. jmeter中,添加“监听器 -> Backend Listener”
顺便添加个http请求
能正常跑通之后,即可在Grafana中查看到数据,下面来配置Grafana从数据库中读取数据来展示
7. 配置Grafana
添加一个展示项目
点击“Home -> New”
添加一个图表
点击旁边的绿点“Add Panel -> Graph”
配置图表
配置好了,就能看到图了。如果看不到图,请用Jmeter多发几次请求。下图中选择监控的选项,可以在Jmeter的官网上查看到对应的解释。
点击Edit设置需要展示的数据 比如 tps 线程数 rt cpu ......等等
名称 | 描述 |
jmeter.all.h.count | 所有请求的TPS |
jmeter.<请求名称>.h.count | 对应<请求名称>的TPS |
jmeter.all.ok.pct99 | 99%的请求响应时间 |
jmeter.<请求名称>.ok.pct99 | 对应<请求名称>99%的请求响应时间 |
jmeter.all.test.startedT | 线程数 |
【注意】如果要监控<请求名称>的话,Jmeter上的“Backend Listener”修改如下参数
1. 将“summanyOnly”修改成False,
2. 将“userRegexpForSamplersList”修改成True,
3. 并且要设置“samplersList”的值,“samplersList”是可以支持正则表达式的,“samplersList”的设置要与请求对应,否则找不到该请求。如图
设置好了,运行一下,在Grafana里面,就可以看到自己的请求了
Jmeter的官网地址去查看阅读“http://jmeter.apache.org/usermanual/realtime-results.html” 详细了解更多监控信息
Graph里面的选项有:
General(常规选择)、Metrics(指标)、Axes(坐标轴)、Legend(图例)、 Display(显示样式)、Time range(时间范围)
Genera(常规选择):添加图形标题,图形宽度高度等
Title:仪表板上的面板标题
Span:列在面板中的宽度
Height:面板内容高度(以像素为单位)
钻取/详细信息链接(Drilldown / detail link)
钻取部分允许添加动态面板的链接,可以链接到其他仪表板或URL。
每个链接都有一个标题,一个类型和参数。链接可以是 dashboard或 absolute链接。如果它是一个仪表板链接, dashboard值必须是一个仪表板的名字。如果这是一个 absolute链接,是URL链接的URL。
params允许添加额外的URL参数的链接。格式是 name=value与多个参数分开,当链接到另一个仪表板使用模板变量,你可以使用 var-myvar=value填充模板变量的期望值链接。
Metrics(指标)
定义了来源数据的呈现,每个数据源都提供不同的选择。面板的来源数据通过group,host,application,item从zabbix中获得。
Axes(坐标轴)
用于坐标轴和网格的显示方式,包括单位,比例,标签等。
Left Y和 Right Y可以定制使用,因其中的可选参数太多,请在使用的时候参考官方文档
Legend(图例):图例展示
图例的参数:
Total:返回所有度量查询值的总和
Current:返回度量查询的最后一个值
Min:返回最小的度量查询值
Max:返回最大的度量查询值
Avg:返回所有度量查询的平均值
Decimals:控制Legend值的多少,以小数显示悬浮工具提示(图)
Grafana 中Legend值的计算取决于你使用的度量查询方式和什么样类型的聚合或合并点来实现的,所有上述所说的值在同一时间可能都是不正确的。例如,如果你是每秒请求一次,这可能是使用平均值来作为一个整合,然而这个Legend值不会代表请求的总数。这只是Grafana收到的所有数据点的总和。
Display(显示样式)
显示样式的控件属性图如下:
图表模式(Draw Modes)
Bar:一个条形图显示值
Lines:显示线图值
Points:显示点值
选择模式(Mode Options)
Fill:系列的颜色填充,0是没有。
Line Width:线的宽度。
Staircase:楼梯状显示。
如果有多个选择项,它们可以作为一个群体显示。
叠加和空值(Stacking & Null value)
Stack:每个系列是叠在另一个之上
Null value:空值
如果你启用了堆栈可以选择应该显示鼠标悬停功能。
Time range(时间范围)
更多Grafana功能请查阅官方文档....https://grafana.com/grafana
2019-09-06补充更新
最近 重新部署这套面板,发现更新了挺多内容
https://grafana.com/grafana/dashboards?search=jmeter
目前界内很多大佬都有上传自己研发的一套监控体系,看以从仪表盘下载对应的需求的仪表盘进行监控,同时可以从中优化 添加时候自己工作业务需要的监控
这里有一点需要注意的,如果需要执行的是NON-GUI模式的性能压测,命令执行之后,在Grafana无法获取压测结果数据
所以需要在jmeter下载一个插件 (下图中的也是依赖插件)
链接: https://pan.baidu.com/s/1U387s1d-BoMvfh1IjSK_2g 提取码: xsiw
直接到 Available Plugins去搜索下载,因为我这里下载了 所以高亮显示在 INstalled Plugins
如果下载比较慢的 也可以通过网盘下载
链接: https://pan.baidu.com/s/1QKpEbEbSai5lKriXPN8TBw 提取码: ts36
上面2个插件下载后,直接放到 jmeter路径下的\lib\ext 目录下即可 重启jmeter即可使用
装好之后,执行命令压测..后续问题还在调试中