0. 简介
InfluxDB是一个由InfluxData开发的开源时序型数据。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。
本次用InfluxDB来存储监控数据。
具体安装教程见官网influxdb官网教程
influxdb中文教程
`
1. 基本概念
概念 | MYSQL | InfluxDB |
---|---|---|
数据库 | database | database |
表 | table | measurement |
列 | column | field |
主键 | 可以自增主键,不能重复 | timestemp(唯一主键) |
索引 | 一个或者多个列设置为索引 | tag(带索引的,非必须) |
- influx 启动
- measurement 操作的表,假如不存在则直接创建一个
- tag 仅仅支持字符类型
- field 类型没有限制
- points 表中的一行数据,由时间戳 time,数据field,索引tags组成
- Telegraf(数据收集)+InfluxDB(数据存储)+Grafana(数据展示的图形界面,将influxDB数据可视化)经常一起使用
- retention policy:数据存储策略 InfluxDB没有删除数据操作,规定数据的保留时间达到清除数据的目的,可以更改保留时间
- tag sets: tags 在 InfluxDB 中会按照字典序排序,不管是 tagk 还是 tagv,只要不一致就分别属于两个 key,例如 host=server01,region=us-west 和 host=server02,region=us-west 就是两个不同的 tag set。
- Series Series 相当于是 InfluxDB 中一些数据的集合,在同一个 database 中,retention policy、measurement、tag sets 完全相同的数据同属于一个 series,同一个 series 的数据在物理上会按照时间顺序排列存储在一起。
- Shard 在 InfluxDB 中是一个比较重要的概念,它和 retention policy 相关联。每一个存储策略下会存在许多 shard,每一个 shard 存储一个指定时间段内的数据,并且不重复,例如 7点-8点 的数据落入 shard0 中,8点-9点的数据则落入 shard1 中。每一个 shard 都对应一个底层的 tsm 存储引擎,有独立的 cache、wal、tsm file。
具体命令如下:
[eqs@eqx_test ~]$ influx
Connected to http://localhost:8086 version 1.2.4
InfluxDB shell version: 1.2.4
#查看所以数据库
> show databases;
name: databases
name
----
_internal
sentinel_log
#使用特定的数据库
> use sentinel_log;
Using database sentinel_log
#查看所以的表
> show measurements;
name: measurements
name
----
sentinelInfo
sentinel_app
#查询一个表的一条数据,time为主键,其中app和resource为tag,其他的字段为field
> select * from sentinelInfo limit 1
name: sentinelInfo
time app async blockQps count exceptionQps gmtCreate gmtModified passQps resource resourceCode rt successQps timestamp
---- --- ----- -------- ----- ------------ --------- ----------- ------- -------- ------------ -- ---------- ---------
1585555946175000000 com.alibaba.csp.sentinel.demo.spring.webmvc.WebMvcDemoApplication true 0 1 0 1585555946171 1585555946171 1 GET:/hello 519655111 97 1 1585555943000
#查看表中的tag(索引)字段
> show tag keys
name: sentinelInfo
tagKey
------
app
async
resource
name: sentinel_app
tagKey
------
async
#查看表中field 的key值
> show field keys
name: sentinelInfo
fieldKey fieldType
-------- ---------
blockQps integer
count integer
exceptionQps integer
gmtCreate integer
gmtModified integer
passQps integer
resourceCode integer
rt float
successQps integer
timestamp integer
name: sentinel_app
fieldKey fieldType
-------- ---------
app string
resource string
#查看所有的保存策略(可以有多个,一个标识为default)
> show retention policies
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 true
#查看指定数据库的保存策略
#name: 名称
#duration: 保留时间, 0表示永久保存
#shardGroupDuration: shardGroup的存储时间,shardGroup是InfluxDB的一个基本储存结构,应该大于这个时间的数据在查询效率上应该有所降低。
#replicaN: 全称是REPLICATION,副本个数 default: 是否是默认策略
> show retention policies on "sentinel_log"
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 true
#更改默认保存策略的时间
> alter retention policy "autogen" on "sentinel_log" duration 30d default
#已经是最新的保存策略时间了
> show retention policies on "sentinel_log"
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 720h0m0s 168h0m0s 1 true