InfluxDB 初步了解及安装使用

简介

InfluxDB On GitHub | Influxdb Docs

InfluxDB, 一个开源的时序数据库(Time Series Database), 对记录指标、事件和性能分析非常有用,无外部依赖(Go Coding)

特点

  • 无结构(无模式),可以是任意数量的列
  • 内置 HTTP 接口: 因此无需编写任何服务端代码即可启动和运行
  • 可以标记数据:从而实现非常灵活的查询
  • 类 SQL 查询语句
  • 简单安装和管理(自带管理界面),并且读写数据很高效
  • InfluxDB 旨在实时响应查询:即当每个数据点进来的时候都被计入索引,并且立即可用于查询,响应时间在 100ms 内

特色功能

  • Time Series 时间序列:支持与时间有关的函数(如:min, max, sum, count, mean, median)
  • Metrics 可度量性:可实时对大量数据进行计算
  • Events 事件:支持任意的事件数据

安装

Install Doc

Docker

1
$ docker pull influxdb

Centos

1
2
$ wget https://dl.influxdata.com/influxdb/releases/influxdb-1.6.0.x86_64.rpm
$ sudo yum localinstall influxdb-1.6.0.x86_64.rpm

Ubuntu

1
2
$ wget https://dl.influxdata.com/influxdb/nightlies/influxdb_nightly_amd64.deb
$ sudo dpkg -i influxdb_nightly_amd64.deb

InfluxDB 安装完成后,会包含如下文件及工具, 以 ubunt 系统为例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# /usr/bin/ 目录下的可执行文件:
influx:             influxdb 的命令行客户端,直接通过 http 接口和 influxd 通信
influxd:            influxdb 的服务程序
influx_inspect:     查看工具
influx_stress:      压力测试工具
influx_tsm:         数据库转换工具(将数据库从 b1 or bz1 格式转换为 tsm1 格式)

# /etc/influxdb 下的配置文件:
/etc/influxdb/influxdb.conf

# /lib/systemd/system 下的服务管理脚本文件
/lib/systemd/system/influxdb.service

InfluxDB 工具使用说明

网络

InfluxDB 默认使用下面的网络接口: - TCP 8086 用作 InfluxDB 客户端和服务器的 HTTP API 通信 - TCP 8088 给备份和恢复数据的 RPC 服务使用

另外,InfluxDB 也提供了多个可能需要自定义端口的插件,所有的端口映射都可以通过配置文件进行修改, 对于默认安装的 InfluxDB, 默认配置文件位于:/etc/influxdb/influxdb.conf

配置

安装好后每个文件都有了默认的配置,你可以通过 influxd config 来查看这些默认配置

在配置文件中的绝大部分都已经被注释掉了,所有这些被注释掉的配置都是由内部默认值决定的。配置文件里任意没有注释的配置都可以用来覆盖内部默认值,需要注意的是,本地配置文件不需要包括每一项配置。

有两种方法可以用来自定义的配置文件来运行 InfluxDB:

  • 运行时通过可选参数 -config 来指定:

    1
    
    $ influxd -config /etc/influxdb/influxdb.conf
  • 设置环境变量 INFLUXDB_CONFIG_PATH 来指定, 例如:

    1
    2
    3
    
    $ echo $INFLUXDB_CONFIG_PATH
    $ /etc/influxdb/influxdb.conf
    $ influxd

其中,-config 的优先级高于环境变量

NTP

NTP (Network Time Protocol), NTP is a protocol designed to synchronize the clocks of computers over a network.

InfluxDB 使用服务器本地时间给数据加时间戳,而且是 UTC 时区的。并使用 NTP 来同步服务器之间的时间,如果服务器的时钟没有通过 NTP 同步,那么写入InfluxDB 的数据的时间戳就可能不准确。

See Also

Thanks to the authors 🙂