一、前言
1. 环境信息介绍
- CentOS 7
- InfluxDB 1.7.1
二、部署
- 从官网下载InfluxDB的rpm安装包,上传至服务器。
官网地址:https://dl.influxdata.com/influxdb/releases/influxdb-1.7.1.x86_64.rpm
- 从官网下载InfluxDB的rpm安装包,上传至服务器。
- 使用yum本地安装InfluxDB
[root@promethusgrafana ~]# yum localinstall influxdb-1.7.1.x86_64.rpm -y
- 启动InfluxDB并设置为开机启动
[root@promethusgrafana ~]# systemctl start influxdb
[root@promethusgrafana ~]# systemctl enable influxdb
- 4、防火墙配置
# #开放端口
[root@promethusgrafana ~]# firewall-cmd --add-port=8086/tcp --permanent
# 重载防火墙配置
[root@promethusgrafana ~]# firewall-cmd --reload
- InfluxDB shell命令测试
- 启动cli命令
#通过influx命令进入cli命令行
influx
Connected to http://localhost:8086 version 1.4.2
InfluxDB shell version: 1.4.2
>
- 查看用户
> show users
user admin
3.退出influx的cli命令行
> quit
[root@promethusgrafana ~]#
三、InfluxDB的基本概念
| 概念 | 解释说明 |
|---|---|
| database | 数据库 |
| measurement | 度量 ,相当于table |
| tags | 标签,相当于field,会被索引 |
| field | 字段,不会被索引 |
- 创建用户并查看用户
> create user influx with password 'influx' with all privileges
> show users
user admin
---- -----
influx true
- database数据库
- 通过create database 命令来创建数据库
create database db_name - 通过drop database 命令来删除数据库
drop database db_name - 通过show databases 命令来删除数据库
show databases - 通过use database 命令来切换数据库
use database db_name
- measurements
measurements相当于传统数据库中的表,但是influxDB中没有创建表的语句,是直接通过insert语句来实现measurements的创建。
drop measurement measurementName
- insert语句
insert measurementName,tag1=value1[,<tag2=value2>] field=value1[,<field2=value2>] <时间戳>- tag和filed和时间戳之间是使用空格进行分割的。
- 时间戳可以不用输入,InfluxDB会自动写入时间
- 查询所有/指定的tag字段。【tag是一种索引】
show tag keys [from measurementName] - 查询measurementName中app这一个tag的值
show tag values from measurementName with key="app" - 查询所有/指定的field字段
show field keys [from measureName] - 如果要查询指定的field字段的值,则直接使用select语句即可。
四、InfluxDB操作演示
[root@promethusgrafana ~]# influx
Connected to http://localhost:8086 version 1.7.1
InfluxDB shell version: 1.7.1
Enter an InfluxQL query
> show databases
name: databases
name
----
_internal
> create database test1
> show databases
name: databases
name
----
_internal
test1
> drop database test1
> show databases
name: databases
name
----
_internal
> create database test1
> show databases
name: databases
name
----
_internal
test1
> use test1
Using database test1
> show measurements
> insert testingedu,app=jmeter,class=demo cpu=0.9,memory=900
> insert testingedu,app=jmeter,class=demo cpu=0.8,memory=800
> show measurements
name: measurements
name
----
testingedu
> select * from testingedu
name: testingedu
time app class cpu memory
---- --- ----- --- ------
1620537343712501249 jmeter demo 0.9 900
1620537356349503761 jmeter demo 0.8 800
> insert testingedu,app=jmeter,class=demo cpu=0.8,memory=800 15812345678
> insert testingedu,app=jmeter,class=demo cpu=0.8,memory=800 15812345678
> select * from testingedu
name: testingedu
time app class cpu memory
---- --- ----- --- ------
15812345678 jmeter demo 0.8 800
1620537343712501249 jmeter demo 0.9 900
1620537356349503761 jmeter demo 0.8 800
> show tag keys
name: testingedu
tagKey
------
app
class
> insert testingedu1,app=jmeter,class=demo cpu=0.9,memory=900
> show tag keys
name: testingedu
tagKey
------
app
class
name: testingedu1
tagKey
------
app
class
> show tag keys from testingedu
name: testingedu
tagKey
------
app
class
> show tag values from testingedu with key="app"
name: testingedu
key value
--- -----
app jmeter
> show field keys
name: testingedu
fieldKey fieldType
-------- ---------
cpu float
memory float
name: testingedu1
fieldKey fieldType
-------- ---------
cpu float
memory float
> show field keys from testingedu
name: testingedu
fieldKey fieldType
-------- ---------
cpu float
memory float
> select memory from testingedu
name: testingedu
time memory
---- ------
15812345678 800
1620537343712501249 900
1620537356349503761 800
> select app from testingedu # 不能使用
jmeter并行跑数据时,跑了10w条数据,部分不见了,原因是并发时时间是一样的。例如:以下手动设置,只有一条记录的原因是时间戳和tag是相同的,重复插入会把数据覆盖掉。
> insert testingedu,app=jmeter,class=demo cpu=0.8,memory=800 15812345678
> insert testingedu,app=jmeter,class=demo cpu=0.8,memory=800 15812345678
> select * from testingedu
name: testingedu
time app class cpu memory
---- --- ----- --- ------
15812345678 jmeter demo 0.8 800
1620537343712501249 jmeter demo 0.9 900
1620537356349503761 jmeter demo 0.8 800
通过http查询数据

通过http从数据库查询数据.png
通过http插入数据

通过http向数据库写入数据.png
jmeter后端监听器配置

后端监听器.png
| 名称 | 值 | 说明 |
|---|---|---|
| influxdbMetricsSender | org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender | |
| influxdbUrl | http://192.168.197.131:8086/write?db=jmeter | 这里的jmeter是数据库名 |
| application | shopxo | |
| measurement | jmeter | 表名 |
| summaryOnly | false | 改成false,否则会将许多数据过滤掉 |
| samplersRegex | .* | 一般来讲,选择所有 |
| percentiles | 90;95;99 | |
| testTitle | Test name | |
| eventTags |