常用时序数据库(详解时序数据库InfluxDB)
认识influxdb是之前在做docker展示的时候接触的,那时候是跟grafana一起配套用,图形还是挺好看的,趁周六分享给大家。
一、什么是InfluxDB?
InfluxDB是一款用Go语言编写的开源分布式时序、事件和指标数据库,无需外部依赖。该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, loT传感器数据和实时分析数据。
InfluxDB特征:
– 无结构(无模式):可以是任意数量的列(tags)。
– 可以设置metric的保存时间。
– 支持与时间有关的相关函数(如min、max、sum、count、mean、median等),方便统计。
– 支持存储策略:可以用于数据的删改(influxDB没有提供数据的删除与修改方法)。
– 支持连续查询:是数据库中自动定时启动的一组语句,和存储策略搭配可以降低InfluxDB的系统占用量。
– 原生的HTTP支持,内置HTTP API。
– 支持类似SQL语法。
– 支持设置数据在集群中的副本数。
– 支持定期采样数据,写入另外的measurement,方便分粒度存储数据。
– 自带web管理界面,方便使用(登入方式:http://< InfluxDB-IP >:8083)。
InfluxDB是时序数据库,所以怎么都绕不开时间,第一纵列time存储着时间戳,而时间戳是与数据进行关联,这样才能将时间和数据进行展示。
InfluxDB名词
database:数据库,根关系型数据库一个概念。 measurement:数据库中的表,就是关系型数据库中的表。 points:表里面的一行数据,就是关系型数据库中的记录。 InfluxDB中独有的一些概念 Point由时间戳(time)、标签(tags)和值(field)组成。 time:每条数据记录的时间,也是数据库自动生成的主索引。 tags:各种有索引的属性。 fields:各种记录的值。 tag set:tag在InfluxDB中会按照字典序排序,不管是tag-key还是tag-value,只要不一致就分别属于两个tag set,例如hostname=server01,device=/data和hostname=server02,device=/data就是两个不同的tag set。
还有三个重要的名词:Series、Retention policy和Shard
Series:相当于是InfluxDB中一些数据的集合,在同一个database中,retention policy、measurement、tag sets完全相同的数据同属于一个series,同一个series的数据在物理上会按照时间顺序排列存储在一起。 Retention policy:存储策略,用于设置数据保留的时间,每个数据库刚开始会自动创建一个默认的存储策略autogen,数据保留时间为永久,之后用户可以自己设置,例如保留最近2小时的数据。插入和查询数据时如果不指定存储策略,则使用默认存储策略,且默认存储策略可以修改。InfluxDB会定期清除过期的数据。 Shard:在InfluxDB中是一个比较重要的概念,它和Retention policy相关联。每一个存储策略下会存在许多shard,每一个shard存储一个指定时间段内的数据,并且不重复,例如7点-8点的数据落入shard0中,8点-9点的数据则落入shard1中。每一个shard都对应一个底层的tsm存储引擎,有独立的 cache、wal、tsm file。
TSM存储引擎主要由几个部分组成:cache、wal、tsm file、compactor。
三、InfluxDB安装配置
1)安装配置
# 安装influxdb; $ yum install influxdb # 启动influxdb; $ systemctl start influxdb # 连接influxdb; $ influx -database 'test' -host 'localhost' -port '8086'
2)相关文件
$ rpm -ql influxdb # 配置文件; /etc/influxdb/influxdb.conf # 日志轮转; /etc/logrotate.d/influxdb # 命令行客户端; /usr/bin/influx # 查看工具; /usr/bin/influx_inspect # 压力测试工具; /usr/bin/influx_stress # 数据库转换工具(将数据库从b1或bz1格式转换为tsm1格式); /usr/bin/influx_tsm # 服务端; /usr/bin/influxd # Systemctl服务管理; /usr/lib/influxdb/scripts/influxdb.service /usr/lib/influxdb/scripts/init.sh ................ # 数据目录; /var/lib/influxdb # 日志目录; /var/log/influxdb
3)开启Web
influxdb提供的简单web管理页面,可以用来操作influxdb,默认没有开启,如果想开启需要修改配置文件中[admin]部分,如下:
[admin] # Determines whether the admin service is enabled. enabled = true # The default bind address used by the admin service. bind-address = ":8080"
篇幅有限,今天关于influxdb就介绍到这了,有时间大家可以测试下,一般infulxdb是要跟grafana一起使用的。在有了InfluxDB Grafana后,你就可以写一些简单的程序了,可以只负责写后端逻辑部分,数据都可以存入InfluxDB,然后通过Grafana展示出来。
后面会分享更多关于devops和DBA内容,感兴趣的朋友可以关注下~
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com