influxdb是一款开源的时序数据库,可以用作监控系统的数据存储或用来存储基于时序进行分析的业务系统的数据存储。
influxdb的部署及使用均比较简单,但是集群(官方版集群已闭源)及高可用方案较少,所以后续测试完几种方案后再推送给大家参考。
1、 安装
在官网选择对应版本的库进行安装,例如当前最新文档版本为1.8,部署在centos7上
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.0.x86_64.rpm sudo yum localinstall influxdb-1.8.0.x86_64.rpm
2、 配置修改
因为监控的数据量一般会比较大,所以相关数据的目录要调整至空间最大的目录。
安装后默认的配置文件在/etc/influxdb/influxdb.conf
... [meta] dir = "/data/influxdb/meta" ... ... [data] dir = "/data/influxdb/data" ... wal-dir = "/data/influxdb/wal" ... ... [hinted-handoff] ... dir = "/data/influxdbhh" ...
配置方面踩坑经验:
max-row-limit不为0,会导致influxdb OOM,配置时设置为0
查询限制参数不要修改,使用默认配置,否则会出现各种奇葩问题
写入超时时间默认是10s,需要按需调大
3、 主要的一些概念
Database
数据库是个逻辑容器,包含了measurement、retention policies、continuous queries、time series data,类似于mysql的database。
Measurement
描述了相关数据的存储结构,类似于mysql的table,但是不需要创建,写入数据的时候自动创建。关于schema的设计建议参考:设计建议。
Timestamp
格式是:RFC3339 UTC。默认精确到纳秒,可选。
Series
measurement, tag set, retention policy相同的数据集合算做一个 series。 这些数据存储在内存中,如果series太多,会导致OOM。
Retention Policy
保留策略包括设置数据保存的时间以及在集群中的副本个数。默认配置是:RP是autogen,保留时间是永久,副本为1。这些配置在创建数据库时可以修改。
Continuous Query
CQ是预先配置好的一些查询命令,定期自动执行这些命令并将查询结果写入指定的measurement中,这个功能主要用于数据聚合。
Shard
存储一定时间间隔的数据,每个目录对应一个shard,目录的名字就是shard id。每一个shard都有自己的cache、wal、tsm file以及compactor,目的就是通过时间来快速定位到要查询数据的相关资源,加速查询的过程,并且也让之后的批量删除数据的操作变得非常简单且高效。
(参考 饿了么Influxdb实践之路)
4、 结语
influxdb的部署是非常简单的,本文的主要目的是推出influxdb,让更多的小伙伴多一种可选的数据库;
之前我们也介绍过prometheus(prometheus监控)来做监控,小伙伴们也可以将底层修改为influxdb进行存储;
influxdb的时间精度更高(influxdbs精确到纳秒,prometheus精确到微秒);
熟悉SQL的同学也可以比较快的上手influxdb,因其有类SQL。
大家有什么问题欢迎多多交流。