InfluxDB 的安装及入门

一、前言

1. 环境信息介绍

  • CentOS 7
  • InfluxDB 1.7.1

二、部署

[root@promethusgrafana ~]# yum localinstall influxdb-1.7.1.x86_64.rpm -y 
    1. 启动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
    1. InfluxDB shell命令测试
  1. 启动cli命令
#通过influx命令进入cli命令行
influx
Connected to http://localhost:8086 version 1.4.2
InfluxDB shell version: 1.4.2
>
  1. 查看用户
> show users
user admin

3.退出influx的cli命令行

> quit
[root@promethusgrafana ~]#

三、InfluxDB的基本概念

概念 解释说明
database 数据库
measurement 度量 ,相当于table
tags 标签,相当于field,会被索引
field 字段,不会被索引
  1. 创建用户并查看用户
> create user influx with password 'influx' with all privileges
> show users
  user   admin
  ----   -----
  influx true
  1. database数据库
  • 通过create database 命令来创建数据库
    create database db_name
  • 通过drop database 命令来删除数据库
    drop database db_name
  • 通过show databases 命令来删除数据库
    show databases
  • 通过use database 命令来切换数据库
    use database db_name
  1. 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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容