介绍
InfluxDB(时序数据库),常用的一种使用场景:监控数据统计。
每毫秒记录一下电脑内存的使用情况,然后就可以根据统计的数据,利用图形化界面(InfluxDB 一般配合Grafana)制作内存使用情况的折线图;可以理解为按时间记录一些数据(常用的监控数据、埋点统计数据等),然后制作图表做统计;
维基百科 定义如下:
InfluxDB是一个由InfluxData开发的开源时序型数据。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。
环境信息
OS: CentOS 7.6
InfluxDB: 1.8.x
安装
(1)将InfluxDB加入yum源
vim /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL $releasever
baseurl = https://repos.influxdata.com/rhel/$releasever/$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
(2)安装和启动
#安装
sudo yum install influxdb
#启动
sudo systemctl start influxdb
#配置开机启动
sudo systemctl enable influxdb
(3) 对常见关系型数据库(MySQL)的基础概念对比
名次/概念 |
解释 |
---|---|
database |
数据库 |
measurement |
度量,相当于table;例如:cpu |
tags |
标签,相当于field,会被索引;例如:host |
field |
字段,不会被索引,例如:cpu_load |
(4)登录
$influx -h
$influx
Connected to http://localhost:8086 version 1.8.0
InfluxDB shell version: 1.8.0
>
(5)用户配置
netstat -ntlp|grep 8086 # influx的默认端口
(5.1)用户创建 相关
> CREATE USER knight WITH PASSWORD 'knight' WITH ALL PRIVILEGES
> show users
user admin
---- -----
knight true
>
(5.2)创建数据库
> create database test
> show databases
name: databases
name
----
_internal
test
>
(5.3)CURD操作
> select * from "cpu"
name: cpu
time host load usage
---- ---- ---- -----
1590650673865802321 me02 0.1 0.2
> select "host","load" from "cpu"
name: cpu
time host load
---- ---- ----
1590650673865802321 me02 0.1
> select * from "cpu" where "host"='me02'
name: cpu
time host load usage
---- ---- ---- -----
1590650673865802321 me02 0.1 0.2
(6)InfluxQL 语法
InfluxDB里存储的数据被称为时间序列数据,InfluxDB存储方式跟传统关系型数据库不同的是:
传统关系型数据库通过数据库+表+字段组织数据,InfluxDB通过指标、标签、字段组织数据,时间戳是默认的索引列,标签跟字段其实就相当于关系型数据库中的字段,只不过标签会被索引,而字段不会。
另外,InfluxDB中的表(measurement)、字段(tag、field)不用事先创建,并且不存储null值
# 查看所有的数据库
show databases;
# 使用特定的数据库
use database_name;
# 查看所有的measurement(表)
show measurements;
# 查询10条数据
select * from measurement_name limit 10;
# 数据中的时间字段默认显示的是一个纳秒时间戳,改成可读格式
precision rfc3339; -- 之后再查询,时间就是rfc3339标准格式
# 或可以在连接数据库的时候,直接带该参数
influx -precision rfc3339
# 查看一个measurement中所有的tag key
show tag keys
# 查看一个measurement中所有的field key
show field keys
# 查看一个measurement中所有的保存策略(可以有多个,一个标识为default)
show retention policies;
(7)HTTP API
# 创建数据库
curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE test01"
## 写入数据
### 写入单条数据
curl -i -XPOST http://localhost:8086/write?db=test01 --data-binary "cpu,host=me03 load=0.1,usage=0.33"
### 写入多条数据
curl -i -XPOST http://localhost:8086/write?db=test01 --data-binary "cpu,host=me03 load=0.1,usage=0.22 166"
## 查询数据
curl -G http://localhost:8086/query?db=test01 --data-urlencode "q=SELECT * FROM \"cpu\""