InfluxDB + Jmeter + Grafana
InfluxDB
influxDB是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。
它有三大特性:
- 时序性(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.7/introduction/installation/
官网:https://portal.influxdata.com/downloads
influxDB端口:8086
。即http连接influxdb client端口,一般使用该端口往本机的Influxdb读写数据
打开浏览器,访问虚拟机IP:http://192.168.18.128:8086/
提示404 page not found
即代表安装并启动成功,官方1.3及以上已经移除web页面监控
也可以通过检查端口查看是否启动成功
# netstat -tlnpu |grep influxd
InfluxDB配置
修改influxDB的配置,主要配置jmeter存储的数据库与端口号,找到[http]
、[[graphite]]
(可选)节点,enabled改为true,bind-address修改绑定的IP和端口:
[[graphite]]
# Determines whether the graphite endpoint is enabled.
enabled = true
database = "jmeter"
# retention-policy = ""
bind-address = ":2003"
protocol = "tcp"
consistency-level = "one"
[http]
# Determines whether HTTP endpoint is enabled.
enabled = true
# Determines whether the Flux query endpoint is enabled.
# flux-enabled = false
# Determines whether the Flux query logging is enabled.
# flux-log-enabled = false
# The bind address used by the HTTP service.
bind-address = ":8086"
8086
端口是Grafana用来从数据库取数据的端口2003
端口则是Jmeter往数据库发数据的端口
重启生效
/usr/local/influxdb/usr/bin/influxd -config /usr/local/influxdb/etc/influxdb/influxdb.conf &
Grafana
安装并启动Grafana,并在influxdb添加数据库jmeter
create database jmeter;
打开Grafana控制台:http://192.168.180.128:3000 ,添加需要展示数据的数据库(配置InfluxDB)
添加InfluxDB数据库配置。Database为jmeter
,帐号密码为admin/admin
,点击Test & Save
提示成功即可
JMeter
官方:https://jmeter.apache.org/download_jmeter.cgi
JMeter中,添加 Thread Group
,勾选Forever
,设置循环运行,并在线程组下:
(1)添加后台监听:Add
-> Listener
-> Backend Listener
Backend Listener implementation
选择org.apache.jmeter.visualizers.backend.influxdb.influxdbBackendListenerClient
influxdbMetricsSender: org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender
influxdbUrl: http://192.168.16.20:8086/write?db=jmeter
application: jmeter
measurement: jmeter
summaryOnly: true
samplersRegex: .*
percentiles: 90;95;99
testTitle: test
eventTags: test
(2)添加HTTP请求:Add
-> Sampler
-> HTTP Request
,HTTP Request Path
设置为http://www.baidu.com
能正常跑通之后,即可配置Grafana从数据库中读取数据来展示
配置Grafana Dashboard
Apache JMeter Dashboard using Core InfluxdbBackendListenerClient:https://grafana.com/grafana/dashboards/5496
JMeter Dashboard:https://grafana.com/grafana/dashboards/4026
自定义图表
添加Mixed数据源,再往其中添加一个Grafana数据源和2个Jmeter数据源
名称 | 描述 |
---|---|
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
修改如下参数
- 将
summanyOnly
修改成false
- 将
userRegexpForSamplersList
修改成true
- 并且要设置
samplersList
的值,如:.*appblog.*
,samplersList
是可以支持正则表达式的,samplersList
的设置要与请求对应,否则找不到该请求
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/25/influxdb-jmeter-grafana/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论