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页面监控

也可以通过检查端口查看是否启动成功

1
# netstat -tlnpu |grep influxd

InfluxDB配置

修改influxDB的配置,主要配置jmeter存储的数据库与端口号,找到[http][[graphite]](可选)节点,enabled改为true,bind-address修改绑定的IP和端口:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[[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往数据库发数据的端口

重启生效

1
/usr/local/influxdb/usr/bin/influxd -config /usr/local/influxdb/etc/influxdb/influxdb.conf &

Grafana

安装并启动Grafana,并在influxdb添加数据库jmeter

1
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

1
2
3
4
5
6
7
8
9
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 RequestHTTP 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修改如下参数

  1. summanyOnly修改成false
  2. userRegexpForSamplersList修改成true
  3. 并且要设置samplersList的值,如:.*appblog.*samplersList是可以支持正则表达式的,samplersList的设置要与请求对应,否则找不到该请求

Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2020 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :