文章目录
  1. 1. 前言
  2. 2. 更新历史
  3. 3. InfluxDB 简介
  4. 4. InfluxDB 安装
  5. 5. InfluxDB 配置优化

前言

InfluxDB 是专为时序数据设计的数据库,能支撑大量的读写负载,是一个高性能的时序数据 datastore。

InfluxDB is the Time Series Database in the TICK Stack

更新历史

2019 年 04 月 05 日 - 初稿

阅读原文 - https://wsgzao.github.io/post/influxdb/

扩展阅读

InfluxDB - https://www.influxdata.com/time-series-platform/influxdb/


InfluxDB 简介

InfluxDB is the Time Series Database in the TICK Stack

InfluxData’s TICK Stack is built around InfluxDB to handle massive amounts of time-stamped information. This time series database provides support for your metrics analysis needs, from DevOps Monitoring, IoT Sensor data, and Real-Time Analytics. Users can adapt their SQL skills with InfluxQL, so they can get up to speed on this time series database.

默认预留端口:

8086,HTTP API
8088,RPC 端口,用于备份和恢复

NTP 服务:
InfluxDB 使用机器本地时间作为 timestamp,需要机器之间使用 NTP 进行同步;如果没有同步的话,写入的时间序列数据可能会不准确

InfluxDB 安装

InfluxDB 里存储的数据被称为时间序列数据, InfluxDB 存储方式跟传统关系型数据库不同的是:传统关系型数据库通过数据库 + 表 + 字段组织数据,InfluxDB 通过指标、标签、字段组织数据,时间戳是默认的索引列,标签跟字段其实就相当于关系型数据库中的字段,只不过标签会被索引,而字段不会。

Grafana 默认支持的数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch
Grafana 支持同时绑定多套数据源,根据自己需求管理即可,这里以 InfluxDB 为例。

https://portal.influxdata.com/downloads

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# install influxdb
cat > /etc/yum.repos.d/influxdb.repo << 'EOF'
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF

# yum install influxdb
yum install -y influxdb

# start and enable influxdb
sudo systemctl start influxdb
sudo systemctl enable influxdb
sudo systemctl status influxdb

# 通过 influx 命令进入 cli 命令行
influx
Connected to http://localhost:8086 version 1.4.2
InfluxDB shell version: 1.4.2
>

# 查看用户
SHOW USERS

# 创建用户
CREATE USER influx WITH PASSWORD 'influx' WITH ALL PRIVILEGES

# 查看用户
SHOW USERS

# 创建数据库
CREATE DATABASE test

# 查看数据库
SHOW DATABASES

# Using 数据库
USE test

# 插入数据
INSERT cpu,host=192.168.1.1 load=0.1,usage=0.2

# 查询所有数据
SELECT * FROM "cpu"
SELECT "host","load","usage" FROM "cpu"

# 根据条件查询
SELECT "host","load","usage" FROM "cpu" WHERE "host" = '192.168.1.1'
SELECT "host","load","usage" FROM "cpu" WHERE "usage" > 0.1

# 创建数据库
CREATE DATABASE "db_name"
# 显示所有数据库
SHOW DATABASES
# 删除数据库
DROP DATABASE "db_name"

# 使用数据库
USE mydb
# 显示该数据库中的表
SHOW MEASUREMENTS
# 删除表
DROP MEASUREMENT "t_name"

# 创建数据库 API
curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE test"

# 写入数据 API

# 写入单条
curl -i -XPOST http://localhost:8086/write?db=test --data-binary "cpu,host=192.168.1.3 load=0.1,usage=0.33"
curl -i -XPOST http://localhost:8086/write?db=test --data-binary "cpu,host=192.168.1.3 load=0.1,usage=0.33 6666666666666666666"

# 写入多条
curl -i -XPOST http://localhost:8086/write?db=test --data-binary "cpu,host=192.168.1.2 load=0.1,usage=0.22 1666666666666666661
cpu,host=192.168.1.3 load=0.1,usage=0.33 1666666666666666661
cpu,host=192.168.1.2 load=0.2,usage=0.22 1666666666666666662
cpu,host=192.168.1.3 load=0.2,usage=0.33 1666666666666666662"

# 查询数据 API
curl -G http://localhost:8086/query?db=test --data-urlencode "q=SELECT * FROM \"cpu\""

InfluxDB 配置优化

配置文件默认全部注释掉,使用默认的配置项,可以根据需要配置。每个配置项有对应的、相同功能的环境变量。

配置文件:/etc/influxdb/influxdb.conf

查看配置:influxd config

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[meta]                                # 元数据 
dir = /var/lib/influxdb/meta

[data] # 数据 / WAL
dir = /var/lib/influxdb/data
wal-dir = /var/lib/influxdb/wal
cache-max-memory-size = "1g" # Cache 最大可用内存

[coordinator] # 查询相关
query-timeout = "0s" # 查询最大执行时间
log-queries-after = "0s" # 打印慢查询

[http] # HTTP 服务
auth-enabled = false # 启用安全认证
max-connection-limit = 0 # 最大连接数

更多帮助信息请参考官网
InfluxDB documentation - https://docs.influxdata.com/platform/introduction

文章目录
  1. 1. 前言
  2. 2. 更新历史
  3. 3. InfluxDB 简介
  4. 4. InfluxDB 安装
  5. 5. InfluxDB 配置优化