Jmeter Grafana InfluxDB 性能测试监控 - XiaoMeimei/Notes GitHub Wiki

一、InfluxDB的安装配置

  1. 下载InfluxDB
  2. windows版本解压后修改influxdb.conf
  3. 已修改过的config文件打开influxdb influxd -config influxdb.conf
  4. 运行influx.exe,打开influx的命令行界面

安装配置参考文章:性能工具之JMeter+InfluxDB+Grafana打造压测可视化实时监控

二、Grafana的安装配置

Grafana是一个开源软件,拥有丰富的指标仪表盘和图形编辑器,适用Graphite, Elasticsearch, OpenTSDB, Prometheus,InfluxDB。简单点说就是一套开源WEB可视化平台。

  1. 官网(地址:https://grafana.com/)下载,解压即可
  2. 进入conf目录,新建custom.ini,并复制sample.ini到custom.ini。你应该编辑custom.ini,不要用defaults.ini。 默认的Grafana端口是3000,此端口需要Windows上的额外权限。编辑custom.ini和去掉http_port配置选项的注释(;是ini文件中的注释字符)并将其更改为8080或类似的内容。该端口不需要额外的Windows权限。
  3. 通过执行位于bin目录中grafana-server.exe的程序启动Grafana
  4. 通过http://IP:8080/login访问主页,用户名密码默认是admin/admin

Jmeter在Grafana上展示压测数据有三种不同的配置方式:

1、使用Jmeter的GraphiteBackendListenerClient监听,graphite方式需要更改influxdb.conf中与graphite相关的配置文件。具体操作参考如何使用Grafana显示Jmeter数据(一)

2、使用Jmeter的org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient监听

3、使用现成的模板,Jmeter的rocks.nt.apm.jmeter.JMeterInfluxDBBackendListenerClient监听

后面两种要求Jmeter的版本在3.2及以上,具体步骤参考如何使用Grafana显示Jmeter数据(二)

三、InfluxDB的使用介绍

(一)存储原理

InfluxDB采用的是LSM Tree(Log Structured Merge Trees)存储结构,这种数据组织方式被应用于多种数据库,如Big Table、HBase、Cassandra、LevelDB等。它将随机写转换为顺序写,尽量保持日志型数据库的写性能优势,并提供相对较好的读性能。

具体实现如下:

1、当有写操作(含insert、update)时,先把数据写入内存,内存中通过某种数据结构(如skiplist)保持key有序,

2、同时将数据追写到磁盘Log文件中,以备必要时恢复;

3、内存数据定时(或按固定大小)排序后刷到磁盘,存储到磁盘的数据文件不可写且有序;

4、定时合并文件,将小树合并为大树,消除冗余数据,减少文件数量,优化查询速度;

LSM Tree存储结构 执行写操作时,只需更新内存,硬盘的那份数据只是简单的追加操作,所以能处理大量随机更新操作

LSM Tree存储结构 执行读操作时,先从内存数据开始访问,如果在内存中访问不到, 再顺序从一个个磁盘文件中查找 ,由于文件本身有序,并且定期的合并减少了磁盘文件个数,因而查找过程相对较快速。

由于时序数据库对写入的速度要求比较高,而读取一般是一段时间范围内的数据,使用LSM Tree算法非常合适。

(二)常用语法

显示数据库

show databases;

新建数据库

create database cpu_info;

使用制定数据库

use cpu_info;

删除数据库

drop database cpu_info;

在InfluxDB当中,并没有表(table)这个概念,取而代之的是MEASUREMENTS,MEASUREMENTS的功能与传统数据库中的表一致,因此我们也可以将MEASUREMENTS称为InfluxDB中的表

显示所有表

show measurements

新建表,InfluxDB中没有显式的新建表的语句,只能通过insert数据的方式来建立新表。

insert disk_free,hostname=server01 value=442221834240i

其中 disk_free 就是表名,hostname是索引(tag),value=xx是记录值(field),记录值可以有多个,系统自带追加时间戳。或者添加数据时,自己写入时间戳

insert disk_free,hostname=server01 value=442221834240i 1435362189575692182

删除表

drop measurement disk_free

数据保存策略(Retention Policies)

influxDB是没有提供直接删除数据记录的方法,但是提供数据保存策略,主要用于指定数据保留时间,超过指定时间,就删除这部分数据。

查看当前数据库Retention Policies

show retention policies on cpu_info;

name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true

创建新的Retention Policies

create retention policy "rp_name" on "db_name" duration 3w replication 1 default

rp_name:策略名;
db_name:具体的数据库名;
3w:保存3周,3周之前的数据将被删除,influxdb具有各种事件参数,比如:h(小时),d(天),w(星期);
replication 1:副本个数,一般为1就可以了;
default:设置为默认策略

修改Retention Policies

alter retention policy "rp_name" on "db_name" duration 30d default

删除Retention Policies

drop retention policy "rp_name" on "db_name"

其他参考文章:

Jmeter + Grafana + InfluxDB 性能测试监控