InfluxDB(时序数据库)(influx,[ˈɪnflʌks],流入,涌入),常用的一种使用场景:监控数据统计。每毫秒记录一下电脑内存的使用情况,然后就可以根据统计的数据,利用图形化界面(InfluxDB V1一般配合Grafana)制作内存使用情况的折线图;可以理解为按时间记录一些数据(常用的监控数据、埋点统计数据等),然后制作图表做统计;

InfluxDB自带的各种特殊函数如求标准差,随机取样数据,统计数据变化比等,使数据统计和实时分析变得十分方便,适合用于包括DevOps监控应用程序指标物联网传感器数据和实时分析的后端存储。类似的数据库有Elasticsearch、Graphite等。

1、什么是InfluxDB

InfluxDB是一个由InfluxData开发的开源时序型数据。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。

InfluxDB有三大特性:

  1. Time Series (时间序列):你可以使用与时间有关的相关函数(如最大,最小,求和等)
  2. Metrics(度量):你可以实时对大量数据进行计算
  3. Eevents(事件):它支持任意的事件数据

特点

  • 为时间序列数据专门编写的自定义高性能数据存储。 TSM引擎具有高性能的写入和数据压缩
  • Golang编写,没有其它的依赖
  • 提供简单、高性能的写入、查询 http api,Native HTTP API, 内置http支持,使用http读写
  • 插件支持其它数据写入协议,例如 graphite、collectd、OpenTSDB
  • 支持类sql查询语句
  • tags可以索引序列化,提供快速有效的查询
  • Retention policies自动处理过期数据
  • Continuous queries自动聚合,提高查询效率
  • schemaless(无结构),可以是任意数量的列
  • Scalable可拓展
  • min, max, sum, count, mean,median 一系列函数,方便统计
  • Built-in Explorer 自带管理工具

2、对常见关系型数据库(MySQL)的基础概念对比

概念 MySQL InfluxDB
数据库(同) database database
表(不同) table measurement(测量; 度量)
列(不同) column tag(带索引的,非必须)、field(不带索引)、timestemp(唯一主键)

2.Influxdb相关名词

database:数据库;
measurement:数据库中的表;
points:表里面的一行数据。
influxDB中独有的一些概念:Point由时间戳(time)、数据(field)和标签(tags)组成。

Point相当于传统数据库里的一行数据,如下表所示:

Point属性 传统数据库中的概念
time(时间戳) 每个数据记录时间,是数据库中的主索引(会自动生成)
fields(字段、数据) 各种记录值(没有索引的属性)也就是记录的值:温度, 湿度
tags(标签) 各种有索引的属性:地区,海拔

注意

在influxdb中,字段必须存在。因为字段是没有索引的。如果使用字段作为查询条件,会扫描符合查询条件的所有字段值,性能不及tag。类比一下,fields相当于SQL的没有索引的列。
tags是可选的,但是强烈建议你用上它,因为tag是有索引的,tags相当于SQL中的有索引的列。tag value只能是string类型

还有一个重要的名词:series
所有在数据库中的数据,都需要通过图表来表示,series(系列)表示这个表里面的所有的数据可以在图标上画成几条线(注:线条的个数由tags排列组合计算出来)

  • 示例数据如下: 其中census是measurement,butterflies和honeybees是field key,location和scientist是tag key

name: census
————————————
time                 butterflies     honeybees     location     scientist
2015-08-18T00:00:00Z      12             23           1         langstroth
2015-08-18T00:00:00Z      1              30           1         perpetua
2015-08-18T00:06:00Z      11             28           1         langstroth
2015-08-18T00:06:00Z      11             28           2         langstroth

示例中有三个tag set

3、注意点

  • tag 只能为字符串类型
  • field 类型无限制
  • 不支持join
  • 支持连续查询操作(汇总统计数据):CONTINUOUS QUERY
  • 配合Telegraf服务(Telegraf可以监控系统CPU、内存、网络等数据)
  • 配合Grafana服务(数据展现的图像界面,将influxdb中的数据可视化)

4、常用InfluxQL

-- 查看所有的数据库
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;

5、InfluxDB Java Demo

GitHub Demo

InfluxDB 安装

  1. 下载地址,

    64bit:https://dl.influxdata.com/influxdb/releases/influxdb-1.7.4_windows_amd64.zip

    chronograf:https://dl.influxdata.com/chronograf/releases/chronograf-1.7.8_windows_amd64.zip

2.解压安装包

修改配置文件

InfluxDB 的数据存储主要有三个目录。默认情况下是 meta, wal 以及 data 三个目录,服务器运行后会自动生成。

  • meta 用于存储数据库的一些元数据,meta 目录下有一个 meta.db 文件。
  • wal 目录存放预写日志文件,以 .wal 结尾。
  • data 目录存放实际存储的数据文件,以 .tsm 结尾。

如果不使用influxdb.conf配置的话,那么直接双击打开influxd.exe就可以使用influx,此时上面三个文件夹的目录则存放在Windows系统的C盘User目录下的.Influx目录下,默认端口为8086,以下为修改文件夹地址,以及端口号方法。

1.修改以下部分的路径

2. 如果需要更改端口号,则修改以下部分配置

3. 修改配置后启动方式

InfluxDB 使用时需要首先打开Influxd.exe,直接打开会使用默认配置,需要使用已配置的配置文件的话,需要指定conf文件进行启动,启动命令如下:

influxd.exe -config influxdb.conf(cmd目录为influxDB目录)

启动可写成bat文件,内容如下:

打开成功画面:

Influxd成功启动后,即可打开influx.exe,若使用默认配置,则直接打开即可,使用配置文件的情况下,在cmd中输入influx命令(cmd目录为influxDB目录),启动可写成bat文件,文件内容如下:

-port是使用特定port号启动

启动成功画面显示如下:

备注:运行influx.exe 时,influxd.exe不可关闭。(influxd.exe是守护进程)

配置文件具体内容详解:

官方介绍:https://docs.influxdata.com/influxdb/v1.2/administration/config/

转自:https://www.cnblogs.com/guyeshanrenshiwoshifu/p/9188368.html

全局配置

1

2

reporting-disabled = false  # 该选项用于上报influxdb的使用信息给InfluxData公司,默认值为false

bind-address = ":8088"  # 备份恢复时使用,默认值为8088

1、meta相关配置

1

2

3

4

[meta]

dir = "/var/lib/influxdb/meta"  # meta数据存放目录

retention-autocreate = true  # 用于控制默认存储策略,数据库创建时,会自动生成autogen的存储策略,默认值:true

logging-enabled = true  # 是否开启meta日志,默认值:true

2、data相关配置

1

2

3

4

5

6

7

8

9

10

[data]

dir = "/var/lib/influxdb/data"  # 最终数据(TSM文件)存储目录

wal-dir = "/var/lib/influxdb/wal"  # 预写日志存储目录

query-log-enabled = true  # 是否开启tsm引擎查询日志,默认值: true

cache-max-memory-size = 1048576000  # 用于限定shard最大值,大于该值时会拒绝写入,默认值:1000MB,单位:byte

cache-snapshot-memory-size = 26214400  # 用于设置快照大小,大于该值时数据会刷新到tsm文件,默认值:25MB,单位:byte

cache-snapshot-write-cold-duration = "10m"  # tsm引擎 snapshot写盘延迟,默认值:10Minute

compact-full-write-cold-duration = "4h"  # tsm文件在压缩前可以存储的最大时间,默认值:4Hour

max-series-per-database = 1000000  # 限制数据库的级数,该值为0时取消限制,默认值:1000000

max-values-per-tag = 100000  # 一个tag最大的value数,0取消限制,默认值:100000

3、coordinator查询管理的配置选项

1

2

3

4

5

6

7

8

[coordinator]

write-timeout = "10s"  # 写操作超时时间,默认值: 10s

max-concurrent-queries = 0  # 最大并发查询数,0无限制,默认值: 0

query-timeout = "0s  # 查询操作超时时间,0无限制,默认值:0s

log-queries-after = "0s"  # 慢查询超时时间,0无限制,默认值:0s

max-select-point = 0  # SELECT语句可以处理的最大点数(points),0无限制,默认值:0

max-select-series = 0  # SELECT语句可以处理的最大级数(series),0无限制,默认值:0

max-select-buckets = 0  # SELECT语句可以处理的最大"GROUP BY time()"的时间周期,0无限制,默认值:0

4、retention旧数据的保留策略

1

2

3

[retention]

enabled = true  # 是否启用该模块,默认值 : true

check-interval = "30m"  # 检查时间间隔,默认值 :"30m"

5、shard-precreation分区预创建

1

2

3

4

[shard-precreation]

enabled = true  # 是否启用该模块,默认值 : true

check-interval = "10m"  # 检查时间间隔,默认值 :"10m"

advance-period = "30m"  # 预创建分区的最大提前时间,默认值 :"30m"

6、monitor 控制InfluxDB自有的监控系统。 默认情况下,InfluxDB把这些数据写入_internal 数据库,如果这个库不存在则自动创建。 _internal 库默认的retention策略是7天,如果你想使用一个自己的retention策略,需要自己创建。

1

2

3

4

[monitor]

store-enabled = true  # 是否启用该模块,默认值 :true

store-database = "_internal"  # 默认数据库:"_internal"

store-interval = "10s  # 统计间隔,默认值:"10s"

7、admin web管理页面

1

2

3

4

5

[admin]

enabled = true  # 是否启用该模块,默认值 : false

bind-address = ":8083"  # 绑定地址,默认值 :":8083"

https-enabled = false  # 是否开启https ,默认值 :false

https-certificate = "/etc/ssl/influxdb.pem"  # https证书路径,默认值:"/etc/ssl/influxdb.pem"

8、http API

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

[http]

enabled = true  # 是否启用该模块,默认值 :true

bind-address = ":8086"  # 绑定地址,默认值:":8086"

auth-enabled = false  # 是否开启认证,默认值:false

realm = "InfluxDB"  # 配置JWT realm,默认值: "InfluxDB"

log-enabled = true  # 是否开启日志,默认值:true

write-tracing = false  # 是否开启写操作日志,如果置成true,每一次写操作都会打日志,默认值:false

pprof-enabled = true  # 是否开启pprof,默认值:true

https-enabled = false  # 是否开启https,默认值:false

https-certificate = "/etc/ssl/influxdb.pem"  # 设置https证书路径,默认值:"/etc/ssl/influxdb.pem"

https-private-key = ""  # 设置https私钥,无默认值

shared-secret = ""  # 用于JWT签名的共享密钥,无默认值

max-row-limit = 0  # 配置查询返回最大行数,0无限制,默认值:0

max-connection-limit = 0  # 配置最大连接数,0无限制,默认值:0

unix-socket-enabled = false  # 是否使用unix-socket,默认值:false

bind-socket = "/var/run/influxdb.sock"  # unix-socket路径,默认值:"/var/run/influxdb.sock"

9、subscriber 控制Kapacitor接受数据的配置

1

2

3

4

5

6

7

[subscriber]

enabled = true  # 是否启用该模块,默认值 :true

http-timeout = "30s"  # http超时时间,默认值:"30s"

insecure-skip-verify = false  # 是否允许不安全的证书

ca-certs = ""  # 设置CA证书

write-concurrency = 40  # 设置并发数目,默认值:40

write-buffer-size = 1000  # 设置buffer大小,默认值:1000

10、graphite 相关配置

1

2

3

4

5

6

7

8

9

10

11

12

[[graphite]]

enabled = false  # 是否启用该模块,默认值 :false

database = "graphite"  # 数据库名称,默认值:"graphite"

retention-policy = ""  # 存储策略,无默认值

bind-address = ":2003"  # 绑定地址,默认值:":2003"

protocol = "tcp"  # 协议,默认值:"tcp"

consistency-level = "one"  # 一致性级别,默认值:"one

batch-size = 5000  # 批量size,默认值:5000

batch-pending = 10  # 配置在内存中等待的batch数,默认值:10

batch-timeout = "1s"  # 超时时间,默认值:"1s"

udp-read-buffer = 0  # udp读取buffer的大小,0表示使用操作系统提供的值,如果超过操作系统的默认配置则会出错。 该配置的默认值:0

separator = "."  # 多个measurement间的连接符,默认值: "."

11、collectd

1

2

3

4

5

6

7

8

9

10

11

[[collectd]]

enabled = false  # 是否启用该模块,默认值 :false

bind-address = ":25826"  # 绑定地址,默认值: ":25826"

database = "collectd"  # 数据库名称,默认值:"collectd"

retention-policy = ""  # 存储策略,无默认值

typesdb = "/usr/local/share/collectd"  # 路径,默认值:"/usr/share/collectd/types.db"

auth-file = "/etc/collectd/auth_file"

batch-size = 5000

batch-pending = 10

batch-timeout = "10s"

read-buffer = 0  # udp读取buffer的大小,0表示使用操作系统提供的值,如果超过操作系统的默认配置则会出错。默认值:0

12、opentsdb

1

2

3

4

5

6

7

8

9

10

11

12

[[opentsdb]]

enabled = false  # 是否启用该模块,默认值:false

bind-address = ":4242"  # 绑定地址,默认值:":4242"

database = "opentsdb"  # 默认数据库:"opentsdb"

retention-policy = ""  # 存储策略,无默认值

consistency-level = "one"  # 一致性级别,默认值:"one"

tls-enabled = false  # 是否开启tls,默认值:false

certificate= "/etc/ssl/influxdb.pem"  # 证书路径,默认值:"/etc/ssl/influxdb.pem"

log-point-errors = true  # 出错时是否记录日志,默认值:true

batch-size = 1000

batch-pending = 5

batch-timeout = "1s"

13、udp

1

2

3

4

5

6

7

8

9

[[udp]]

enabled = false  # 是否启用该模块,默认值:false

bind-address = ":8089"  # 绑定地址,默认值:":8089"

database = "udp"  # 数据库名称,默认值:"udp"

retention-policy = ""  # 存储策略,无默认值

batch-size = 5000

batch-pending = 10

batch-timeout = "1s"

read-buffer = 0  # udp读取buffer的大小,0表示使用操作系统提供的值,如果超过操作系统的默认配置则会出错。 该配置的默认值:0 

14、continuous_queries

1

2

3

4

[continuous_queries]

enabled = true  # enabled 是否开启CQs,默认值:true

log-enabled = true  # 是否开启日志,默认值:true

run-interval = "1s"  # 时间间隔,默认值:"1s"

InfluxDB数据库常用命令

1、显示所有数据库

show databases

2、 创建数据库

create database test

3、 使用某个数据库

use test

4、 显示所有表

show measurements

没有表则无返回。

5、新建表和插入数据

新建表没有具体的语法,只是增加第一条数据时,会自动建立表

insert results,hostname=index1 value=1

这里的时间看不懂,可以设置一下时间显示格式

precision rfc3339

6、 查询数据

表名有点号时,输入双引号

和sql语法相同,区别:

measurement 数据库中的表

points 表里面的一行数据,Point由时间戳(time)、数据(field)、标签(tags)组成。

7、 用户显示

a. 显示所有用户

show users

b.新增用户

--普通用户

create user "user" with password 'user'

--管理员用户

create user "admin" with password 'admin' with all privileges

c.删除用户

drop user "user"

很多InfluxDB的文章都说InfluxDB是时序数据库,不支持删除。但实际测试是可以删除的。

连接InfluxDB

一张叫uv的表

执行删除后

Chronograf 使用

1、解压文件后,直接进入安装目录,执行chronograf.exe后;

2、输入:http://localhost:8888(chronograf默认是8888端口)

3、influxDB数据源连接

InfluxDB详解相关推荐

  1. grpc通信原理_容器原理架构详解(全)

    目录 1 容器原理架构 1.1 容器与虚拟化 1.2 容器应用架构 1.3 容器引擎架构 1.4 Namespace与Cgroups 1.5 容器镜像原理 2 K8S原理架构 2.1 K8S主要功能 ...

  2. compose配置文件参数详解

    本文介绍compose配置文件参数的使用,熟练编写compose文件 [root@docker lnmp]# cat lnmp.yaml version: '3' services:nginx:bui ...

  3. 附005.Docker Compose文件详解

    一 Docker Compose文件简介 compose文件使用yml格式,主要分为了四个区域: version:用于指定当前docker-compose.yml语法遵循哪个版本 services:服 ...

  4. docker-compose.yml配置文件详解

    docker-compose.yml配置文件详解 Docker Compose 配置文件详解,转载自博客https://www.jianshu.com/p/2217cfed29d7 先来看一份 doc ...

  5. 阿里云容器服务飞天敏捷版详解

    阿里云容器服务飞天敏捷版详解 libinjingshan 2017-04-24 23953浏览量 简介: 阿里云容器服务提供了公共云.专有云以及飞天敏捷版三种部署形态,全方位地满足企业客户利用CaaS ...

  6. Zabbix+MatrixDB大规模监控与分析解决方案详解(含PPT)

    首先,谢谢原作者:(此文为转载的文章,现将原地址贴出如下:以下文章来源于yMatrix,作者MatrixDB团队Zabbix+MatrixDB大规模监控与分析解决方案详解(含PPT)) 更多精彩Zab ...

  7. 一篇运维老司机的大数据平台监控宝典(1)-联通大数据集群平台监控体系进程详解

    一篇运维老司机的大数据平台监控宝典(1)-联通大数据集群平台监控体系进程详解 "如果你是一个经验丰富的运维开发人员,那么你一定知道ganglia.nagios.zabbix.elastics ...

  8. 【图文详解】一文全面彻底搞懂HBase、LevelDB、RocksDB等NoSQL背后的存储原理:LSM-tree日志结构合并树...

    LSM 树广泛用于数据存储,例如 RocksDB.Apache AsterixDB.Bigtable.HBase.LevelDB.Apache Accumulo.SQLite4.Tarantool.W ...

  9. Jmeter - JMeter监听器 -上篇(详解教程)

    目录 1.简介 2.预览监听器 3.常用监听器详解 3.1 察看结果树 3.2 汇总报告 3.3聚合报告 3.4后端监听器 3.5汇总图 3.6 断言结果 3.7比较断言可视化器 3.8 生成概要结果 ...

最新文章

  1. vant 1.6.6 发布,轻量级移动端 Vue 组件库
  2. pythontcp服务器教程_tcp服务端无线为多个客户端服务|python基础教程|python入门|python教程...
  3. 利用usb远程控制linux,Linux编程控制硬件(5) ---- 操作USB手柄
  4. flink的web ui中五颜六色的方块是什么意思?
  5. php 动态加载JavaScript文件或者css文件
  6. 拉格朗日乘子法几何意义
  7. 移动端瀑布流/信息流布局以及交互
  8. 云计算360度:微软专家纵论产业变革
  9. 红外平行光管ZEMAX光学设计/SOLIDWORKS
  10. 将自动化测试推向极限
  11. Pytorch图像预处理——归一化、标准化
  12. 如何采集QQ群中所有成员QQ号码
  13. char* p 和 char p[]区别及应用
  14. Java在线租车系统
  15. AG9311MAQ设计100W USB TYPEC拓展坞资料|AG9311MAQ用于100W USB TYPEC转HDMI带PD快充+U3+SD/CF拓展坞方案说明
  16. 数字化助力社区抗疫———物资管理系统
  17. html导出excel换行,javascript导出excel或者csv如何让单元格内容换行?
  18. XGBoost与GBDT比较
  19. 你一直在找的 Mac 系统优化工具,可能就是这一款!
  20. 接口 使用 Excel

热门文章

  1. PS又双叒崩,溃,了,改稿人累觉不爱
  2. 未来人类电脑U盘重新安装系统的操作方法分享
  3. Java 获取当前日期并且实现日期的格式化
  4. 不透明度 16进制值
  5. 关于label标签的使用
  6. 太极熊猫3服务器维护中,太极熊猫3猎龙6月20日维护更新公告 公会传承次数提高...
  7. 猫12分类比赛心得(1)
  8. 按键精灵执行sql语句,获取返回值
  9. 为什么会有这么多Python
  10. latex 图片_LaTeX初级教程:插入图片