StatusOk+InfluxDb+Grafana(二)InfluxDB - 时序数据库的简要介绍

AI 摘要: InfluxDB是一个开源时序型数据库,具有跨OSS,云和企业产品的通用API的可编程性和高性能。它由Go语言编写,着力于高性能地查询和存储时序型数据,在存储系统的监控数据和IoT行业的实时数据等场景被广泛应用。文章内容简要介绍了InfluxDB的特点和关键概念,包括测量读、标签集、字段集、保存策略和series系列等;还介绍了数据授权和认证管控、SQL查询和管理操作、配置等方面的内容。希望能给读者初步了解InfluxDB提供帮助。

InfluxDB 是一个由 InfluxData 开发的开源时序型数据库,具有跨 OSS,云和企业产品的通用 API 的可编程性和高性能,可为您提供高粒度,高规模和高可用性。

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

1. 安装

1.1. 通过 go 自行 make 安装

如果自己构建,需要 Go 1.11 和 Go 模块支持,influxd 是 InfluxDB 服务。 influx 是 CLI 管理工具。

1
2
3
4
$ make
...
env GO111MODULE=on go build -tags 'assets ' -o bin/darwin/influx ./cmd/influx
env GO111MODULE=on go build -tags 'assets ' -o bin/darwin/influxd ./cmd/influxd

启动服务。默认情况下记录到 stdout:

1
$ bin/darwin/influxd

1.2. 通过 docker 安装

类似 mysql、mongo,本地开发环境,将 influxdb 数据存储在/var/lib/influxdb 中

1
2
3
$ docker run -p 8086:8086 \
      -v /var/lib/influxdb:/var/lib/influxdb \
      influxdb

由 InfluxDB 使用的相关端口:

  • 8086 HTTP API 端口
  • 8083 管理员界面端口,如果可用 (管理员界面自 1.1.0 起不推荐使用,将在 1.3.0 中删除,同时要使用管理员界面,必须将HTTP API管理员界面 API转发到同一端口。)
  • 2003 Graphite 支持,如果可用

与 InfluxDB 环境相关变量配置,通过环境变量指定配置(INFLUXDB_$SECTION_$NAME):

  • INFLUXDB_REPORTING_DISABLED=true
  • INFLUXDB_META_DIR=/path/to/metadir
  • INFLUXDB_DATA_QUERY_LOG_ENABLED=false
  • INFLUXDB_ADMIN_ENABLED=true
  • INFLUXDB_GRAPHITE_ENABLED=true
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// docker 生成配置
$ docker run --rm influxdb influxd config > influxdb.conf

// 指定配置文件启动镜像
$ docker run -p 8086:8086 \
      -v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro \
      influxdb -config /etc/influxdb/influxdb.conf

// Graphite,InfluxDB支持Graphite线路协议,但默认情况下不会公开服务和端口,需要映射开启:
docker run -p 8086:8086 -p 2003:2003 \
    -e INFLUXDB_GRAPHITE_ENABLED=true \
    influxdb

2. influxdb 初始化和简单操作

2.1. InfluxDB 权限初始化

InfluxDB 映像包含一些用于初始化数据库的额外功能。这些选项不建议用于生产,但在运行独立实例进行测试时非常有用。

  • INFLUXDB_DB : 自动初始化指定名称的数据库
  • INFLUXDB_HTTP_AUTH_ENABLED : 身份验证相关,必须设置
  • INFLUXDB_ADMIN_USER : 要创建的 admin 用户的名称。如果未设置,则不会创建管理员用户。
  • INFLUXDB_ADMIN_PASSWORD : 如果未设置,则生成随机密码并打印到标准输出。
  • INFLUXDB_USER : 要创建的没有权限的用户的名称,如果 INFLUXDB_DB 设置,则将授予此用户对该数据库的读写权限。
  • INFLUXDB_USER_PASSWORD: 没有设置,则随机生成
  • INFLUXDB_READ_USER : 只读用户
  • INFLUXDB_READ_USER_PASSWORD : 没有设置,则随机生成
  • INFLUXDB_WRITE_USER : 写用户
  • INFLUXDB_WRITE_USER_PASSWORD : 没有设置,则随机生成

创建 InfluxDB - db0,同时开启管理员面板:INFLUXDB_ADMIN_ENABLED,设置管理员账号和密码,以及数据库访问的用户,指定数据库文件共享目录,以及通过一个.sh 脚本手动初始化数据库:

1
2
3
4
5
6
7
8
$ docker run --rm \
      -p 8086:8086 -p 8083:8083 -p 2003:2003 \
      -v /var/lib/influxdb:/var/lib/influxdb \
      -e INFLUXDB_HTTP_AUTH_ENABLED=true \
      -e INFLUXDB_ADMIN_ENABLED=true \
      -e INFLUXDB_ADMIN_USER=admin -e INFLUXDB_ADMIN_PASSWORD=secretpassword \
      -e INFLUXDB_USER=clark -e INFLUXDB_USER_PASSWORD=secretpassword \
      influxdb /init-influxdb.sh

2.2. 操作 InfluxDB 数据库

2.2.1. 基于 HTTP API REST 操作

创建名为 mydb 的数据库:

1
$ curl -G http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb"

插入数据库:

1
$ curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000'

2.2.2. 基于 influx CLI 管理工具

1
2
3
4
5
6
// 启动容器,执行命令
$ docker run --name=influxdb -d -p 8086:8086 influxdb
$ docker exec -it influxdb influx

// 在其他容器中,需要保证网络互通,
$ docker run --rm --link=influxdb -it influxdb influx -host influxdb

influx 客户端命令说明:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
Usage of influx:
  -version  指定版本
  -host     连接主机
  -port     连接端口
  -socket   连接套接字
  -database 连接库名称
  -password 连接密码
  -username 连接用户名
  -ssl      基于https
  -unsafeSsl 使用https但不做检测
  -execute  执行命令
  -type     指定查询语言,'influxql|flux'
  -format   指定输出输出格式,json|csv|column
  -precision 'rfc3339|h|m|s|ms|u|ns'
  -consistency 设置写入一致性级别,'any|one|quorum|all'
  -pretty   美化json格式输出
  -import   导入数据库
  -pps      导入每秒允许多少个点。默认情况下,它是零,不会限制导入。
  -path     导入的路径
  -compressed 是否是压缩导入的文件

3. InfluxDB 的关键概念

在深入了解 InfluxDB 之前,熟悉数据库的一些关键概念是很好的,文档简要介绍了这些概念和通用的 InfluxDB 术语

3.1. measurement - 样本度量

  • database: 样本数据库
  • point: 指代样本集中的点
  • measurement: 指代样本度量
  • series: 样本系列
  • tag-set、tag-key、tag-val:样本集,样本标签 key,样本标签 val
  • field-set、field-key、field-val:选项领域集、领域 key,定于 val
  • timestamp: 时间
  • retention: 保留政策

思考一个样本统计的问题:在 2015 年某个时间段,科学家 A、B,针对区域 1、2 两个位置,进行蝴蝶和蜜蜂的数量统计汇总

time(timestamp)butterflies(field-key)honeybees(field-key)location(tag-key)scientist(tag-key)
2015-08-18T00:00:00Z12231langstroth
2015-08-18T00:00:00Z1301perpetua
2015-08-18T00:06:00Z11281langstroth
2015-08-18T00:06:00Z3281perpetua
2015-08-18T05:54:00Z2112langstroth
2015-08-18T06:00:00Z1102langstroth
2015-08-18T06:06:00Z8232perpetua
2015-08-18T06:12:00Z7222perpetua

以上数据中:

  • point: 基于单条时间记录,作为样本集的一个点
  • time: 样本记录时间,所有的 InfluxDB 都有该字段
  • fields: butterflies、honeybees
    • field 值可以为:strings, floats, integers, or Booleans,
    • field 总是与字段值相关关联,field 字段键和字段值对的集合构成字段集(field set)
    • Field 是 InfluxDB 数据结构的必需部分,如果没有字段,则不能在 InfluxDB 中拥有数据。
    • Field 字段是未编入索引的,使用字段值作为过滤器的查询必须扫描与查询中的其他条件匹配的所有值,因此,这些查询相对于标记上的查询不具有高性能,通常,字段不应包含常用查询元数据。
  • tags: location、scientist
    • 样本数据中的最后两列(称为位置和科学家)是标记。
    • 标签由标签键和标签值组成,标记键和标记值都存储为字符串和记录元数据。
  • field set:
    • butterflies = 12 honeybees = 23
    • butterflies = 1 honeybees = 30
    • butterflies = 11 honeybees = 28
    • butterflies = 3 honeybees = 28
    • butterflies = 2 honeybees = 11
    • butterflies = 1 honeybees = 10
    • butterflies = 8 honeybees = 23
    • butterflies = 7 honeybees = 22
  • tag set:
    • location = 1, scientist = langstroth
    • location = 2, scientist = langstroth
    • location = 1, scientist = perpetua
    • location = 2, scientist = perpetua
  • measurement:比如我们定为census(统计调查),测量名称是字符串,对于任何 SQL 用户,测量在概念上类似于表
    • 用作标记 tags,字段 fields 和时间 time 的容器,度量名称是存储在关联字段中的数据的描述。

标签是可选的,虽然不需要在数据结构中包含标记,但通常最好使用它们,因为与字段不同,标记是索引的,这意味着标签上的查询更快,并且该标签非常适合存储常用查询元数据。考虑查询:

  • SELECT * FROM “census” WHERE “butterflies” = 1
  • SELECT * FROM “census” WHERE “honeybees” = 23

由于 butterflies、honeybees 之前都是 field,则查询需要扫表,若重新调整 tag 与 field,将 butterflies、honeybees 设置为 tag,location、scientist 设置为 field,则 influx 查询会更快(无需扫表)

3.2. retention policy- 数据保留策略

一份测量数据,measurement 我们可以以不同的保留策略,保留策略描述了如何保存(数据持久化)以及多少备份存在在集群中(数据复制)

3.3. series - 样本测量、数据保存策略、tag set 的集合

在 InfluxDB 中,系列是保留策略(retention policy),度量(measurement)和标记集(tag set)的数据集合。在设计模式和在 InfluxDB 中处理数据时,理解系列的概念至关重要。

Arbitrary series numberRetention policyMeasurementTag set
series 1autogencensuslocation = 1,scientist = langstroth
series 2autogencensuslocation = 2,scientist = langstroth
series 3autogencensuslocation = 1,scientist = perpetua
series 4autogencensuslocation = 2,scientist = perpetua

3.4. 数据库存储格式说明

格式参考:

1
2
// 注意field-key前面的空格!
<measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]

InfluxDB 是一个无模式数据库,您可以随时添加新的测量,标签和字段。请注意,如果尝试使用与以前使用的类型不同的类型编写数据(例如,将字符串写入先前接受整数的字段),InfluxDB 将拒绝这些数据。

相关内容查看,注意需要先进入到指定 DB(use test_db):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
show databases        show database names
show series           show series information
show measurements     show measurement information
show tag keys         show tag key information
show field keys       show field key information

// 插入数据(census:代表measurement;scientist=langstroth,location=1:代表tags键值对;空格:分割tags和fields;
  butterflies=12,honeybees=23:代表fields)
> create database_db
> insert census,scientist=langstroth,location=1 butterflies=12,honeybees=23
> show tag keys
name: census
tagKey
------
location
scientist
> show field keys
name: census
fieldKey    fieldType
--------    ---------
butterflies float
honeybees   float

3.5. InfluxDB 和 SQL 数据库的一些区别

相关区别点InfluxDBSQL 数据库
数据库特点InfluxDB 旨在处理时间序列数据,InfluxDB 可以存储大量的时间序列数据,并快速对这些数据进行实时分析SQL 数据库通常不单为此而实现
数据库 DDLInfluxDB 不必预先定义模式(DDL)SQL 数据库需要提前做 DDL 定义数据存储结构信息
基本 SQL支持类似 SQL 的操作简单语法,诸如 SHOW、CREATE DATABASE、SELECT、DELETE、GRANT、GROUP BY、LIIMIT 等SQL 语法支持
JOIN 支持不支持 JOINSQL 语法支持
性能提升continuous queriesretention policies存储过程
用户权限管控支持数据库、用户创建、授权SQL 语法支持
聚合、数学函数支持支持:https://docs.influxdata.com/influxdb/v1.7/query_language/functions/SQL 语法支持
CRUD 说明更像 CR-ud,弱化更新和删除强 CRUD

3.6. InfluxDB 设计见解和权衡

  1. 针对重复数据,简化的冲突解决方案可提高写入性能。
  2. 限制 point 删除,提高查询和写入性能。
  3. 限制 point 更新,提高查询和写入性能。
  4. 按时间升序添加数据的性能要高得多
  5. 能够处理大容量的读取和写入。
  6. 如果数据库负载很重,查询返回可能不包括最近的点
  7. 擅长管理不连续数据,没有表 JOIN 连接。
  8. point 没有传统意义上的 ID,们按时间戳和系列区分。

3.7. InfluxDB 存储引擎

InfluxDB 存储引擎这块涉及较多的数据结构和概念,诸如 LSM Tree、B+Tree、TSM Tree(Time Structured Merge Tree)、Write Ahead Log (WAL)(日志预写)等概念,这块需要深入了解参见1

4. influx 客户端命令操作示例

4.1. 客户端连接

1
2
3
4
5
// 数据库连接
influx -database 'metrics' -host 'localhost' -port '8086'

// 数据库查询
influx -database 'metrics' -execute 'select * from cpu' -format 'json' -pretty

4.2. 帮助文档

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
// 版本
influx -version
InfluxDB shell version: 1.7.6
Enter an InfluxQL query

// 指定时间精度,以RFC3339格式(YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ)返回时间戳。
influx -precision rfc3339
Connected to http://localhost:8086 version 1.7.6
InfluxDB shell version: 1.7.6
Enter an InfluxQL query
> help
> SHOW DATABASES // 显示库
> show tag keys  // 显示标签键
> show series    // 显示系列信息
> ...
> exit/quit/ctrl+d 退出

4.3. 数据库创建和删除

1
2
3
4
5
6
//创建库
> CREATE DATABASE statusok
//使用库
> USE statusok
// 数据库删除
> DROP DATABASE statusok

4.4. 数据库插入

1
2
// measurement为cpu,host为tag-key,region为field-key被写入到数据库中!
> INSERT cpu,host=serverA,region=us_west value=0.64

4.5. 数据库查询、分组和排序,以及正则查询

InfluxQL 是一种类似 SQL 的查询语言,用于与 InfluxDB 中的数据进行交互。

InfluxQL 的 SELECT 查询语法:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
// 查询语法
SELECT_clause [INTO_clause] FROM_clause [WHERE_clause] [GROUP_BY_clause] ORDER BY time DESC

【简单查询】
> SELECT "host", "region", "value" FROM "cpu"
// 没有LIMIT的查询,带来性能开销问题(插入关键字不区分大小写,允许自动缺失)
> select * from temperature where internal=1
// 查多个measurement,以及条件查询
> SELECT * FROM /.*/ LIMIT 1
// WEHERE 条件查询
> SELECT * FROM temperature WHERE internal = 33
> SELECT * FROM temperature WHERE internal > 33 AND internal < 38
// 排序
> SELECT "water_level" FROM "h2o_feet" WHERE "location" = 'santa_monica' ORDER BY time DESC

【使用正则表达式】
SELECT /<regular_expression_field_key>/ FROM /<regular_expression_measurement>/ WHERE [<tag_key> <operator> /<regular_expression_tag_value>/ | <field_key> <operator> /<regular_expression_field_value>/] GROUP BY /<regular_expression_tag_key>/

> SELECT MEAN(water_level) FROM "h2o_feet" WHERE "location" =~ /[m]/ AND "water_level" > 3

4.6. 数据库子查询

1
> SELECT "all_the_means" FROM (SELECT MEAN("water_level") AS "all_the_means" FROM "h2o_feet" WHERE time >= '2015-08-18T00:00:00Z' AND time <= '2015-08-18T00:30:00Z' GROUP BY time(12m) ) WHERE "all_the_means" > 5

4.7. 数据库函数操作

1
2
3
> SELECT MEAN("water_level") AS "all_the_means" FROM "h2o_feet" WHERE time >= '2015-08-18T00:00:00Z' AND time <= '2015-08-18T00:30:00Z' GROUP BY time(12m)

> SELECT SUM("water_level_derivative") AS "sum_derivative" FROM (SELECT DERIVATIVE(MEAN("water_level")) AS "water_level_derivative" FROM "h2o_feet" WHERE time >= '2015-08-18T00:00:00Z' AND time <= '2015-08-18T00:30:00Z' GROUP BY time(12m),"location") GROUP BY "location"

5. 通过 http 操作 InfluxDB 数据库示例

5.1. 支持基于 HTTP 的数据传输协议

现代 Web API 已经确定了 REST,因为它解决了常见的需求。随着端点数量的增加,对组织系统的需求变得迫切。REST 是用于组织大量端点的行业认可的样式。这种一致性对于开发和使用 API​​ 的人来说是好的:所涉及的每个人都知道会发生什么。

然而,REST 是一种惯例。InfluxDB 使用三个 API 端点。这个简单易懂的系统使用 HTTP 作为 InfluxQL 的传输方法。InfluxDB API 不会尝试 RESTful。

5.2. HTTP 响应部分说明

  • 2xx:如果收到您的写请求HTTP 204 No Content,则表示成功!
  • 4xx:InfluxDB 无法理解请求。(比如往一个 bool 中插入了浮点,则会响应 400;往不存在的数据库中插入数据,则会引起 404 错误!)
  • 5xx:系统过载或严重受损。

涉及相关参数:

  • GET:SELECT、SHOW 操作
  • POST:ALTER、CREATE、DELETE、DROP、GRANT、KILL、REVOKE 等操作

5.3. 数据库创建

1
curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb"

5.4. 数据库插入

1
2
3
4
5
6
7
// 单条插入
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000'

// 批量插入,通过新行分割插入内容
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server02 value=0.67
cpu_load_short,host=server02,region=us-west value=0.55 1422568543702900257
cpu_load_short,direction=in,host=server01,region=us-west value=2.0 1422568543702900257'

5.5. 从文件导入数据到数据库

1
2
3
4
5
6
7
[文件cpu_data.txt]
cpu_load_short,host=server02 value=0.67
cpu_load_short,host=server02,region=us-west value=0.55 1422568543702900257
cpu_load_short,direction=in,host=server01,region=us-west value=2.0 1422568543702900257

// 基于文件导入
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary @cpu_data.txt

5.6. 数据库查询

1
2
3
4
5
// 单条查询
curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=SELECT \"value\" FROM \"cpu_load_short\" WHERE \"region\"='us-west'"

// 多条查询
curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=SELECT \"value\" FROM \"cpu_load_short\" WHERE \"region\"='us-west';SELECT count(\"value\") FROM \"cpu_load_short\" WHERE \"region\"='us-west'"

6. 认证和授权

不应依赖身份验证和授权来阻止访问并保护数据免受恶意攻击者的攻击。如果需要其他安全性或合规性功能,InfluxDB 应该在第三方服务后面运行。

6.1. 认证

InfluxDB 的 HTTP API 和命令行界面(CLI)使用 API​​ 连接到数据库,包括基于用户凭据的简单内置身份验证。

6.1.1. 设置身份验证

  1. 创建至少一个管理员用户
  2. 开启配置认证,默认情况下,配置文件中禁用身份验证:auth-enabled = true
  3. 重启服务
  4. 验证请求

6.1.2. http 验证(两种选择)

1
2
3
4
5
6
// 首选方式,-u指定 user:pass
curl -G http://localhost:8086/query -u todd:influxdb4ever --data-urlencode "q=SHOW DATABASES"

// 通过get或post参数传递
curl -G "http://localhost:8086/query?u=todd&p=influxdb4ever" --data-urlencode "q=SHOW DATABASES"
curl -G http://localhost:8086/query --data-urlencode "u=todd" --data-urlencode "p=influxdb4ever" --data-urlencode "q=SHOW DATABASES"

HTTP 认证错误:

  • 401:无账号或密码错误,没有身份验证凭据或凭据不正确的请求会产生HTTP 401 Unauthorized响应。
  • 403:未经授权,未经授权用户的请求会产生HTTP 403 Forbidden响应。

6.1.3. cli 验证(三种选择)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// 使用`INFLUX_USERNAME``INFLUX_PASSWORD`环境变量进行身份验证
export INFLUX_USERNAME todd
export INFLUX_PASSWORD influxdb4ever
influx

// 在启动CLI时设置username和password标记进行身份验证
influx -username todd -password influxdb4ever

// 启动CLI后进行身份验证
auth <username> <password>

6.2. 授权2

只有在启用身份验证(auth-enabled = true)后才会强制执行授权,默认情况下,禁用身份验证,静默忽略所有凭据,并且所有用户都具有所有权限。

6.2.1. 用户类型和权限

管理员用户,拥有所有库的读写权限:

  • CREATE DATABASE, DROP DATABASE
  • DROP SERIES,DROP MEASUREMENT
  • CREATE RETENTION POLICY, ALTER RETENTION POLICY, DROP RETENTION POLICY
  • CREATE CONTINUOUS QUERY, DROP CONTINUOUS QUERY
  • 用户管理权限
    • 管理员管理:CREATE USER, GRANT ALL PRIVILEGES, REVOKE ALL PRIVILEGES, and SHOW USERS
    • 非管理员管理:CREATE USER, GRANT [READ,WRITE,ALL], REVOKE [READ,WRITE,ALL], and SHOW GRANTS
    • 普通用户管理:SET PASSWORD and DROP USER

非管理员用户,针对每个库有 3 类权限,可以通过 SHOW 命令查看:

  • 读权限
  • 写权限
  • 读写权限

6.2.2. 用户管理命令

创建用户以及认证的一些限制:

  • 用户名,如果已数字或者包含特殊字符,需要以双引号包裹!
  • 密码,必须以单引号包裹!
  • 认证的时候,不需要单引号;
  • 重复的用户名创建,是幂等的,不然直接报错;
 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
【创建用户】
// 开启HTTP认证,需要至少一个管理员用户,创建账号是幂等的!
CREATE USER todd WITH PASSWORD 'passwd' WITH ALL PRIVILEGES
// 创建普通用户
CREATE USER developer WITH PASSWORD 'passwd'
// 显示所有用户
SHOW USERS

【授权用户】
// 授权给指定用户
GRANT ALL PRIVILEGES TO "todd"
// 收回权限
REVOKE ALL PRIVILEGES FROM "todd"
// 授权指定权限给到用户
GRANT [READ,WRITE,ALL] ON <database_name> TO <username>
> grant write on mydb to developer
> grant read on mydb to developer
> grant all on mydb to developer
> show grants for developer

【密码更改】
> set password for developer = '123456'

【删除用户】
DROP USER TODD

7. 配置文件

7.1. 存储位置

  • Linux: /etc/influxdb/influxdb.conf
  • macOS: /usr/local/etc/influxdb.conf
1
influxd -config /etc/influxdb/influxdb.conf

7.2. 基本单位

  • ns       nanoseconds
  • us or µs microseconds
  • ms       milliseconds
  • s      seconds
  • m      minutes
  • h      hours
  • d      days
  • w      weeks

7.3. 配置环境变量

  • INFLUXDB_*开始的变量,比如INFLUXDB_CONFIG_PATH
  • GOMAXPROCS,go 语言中的处理器设定,与处理器核心绑定一致

7.4. 配置应用服务变量

比如数据存储位置、分片策略、监控策略、HTTP 端点、查询管理等,更多参见参考部分3

8. 小结

文章内容简单介绍了 InfluxDB 的特点以及其关键的概念,以科学家统计昆虫的样本测量,解释了什么是测量读、标签集、字段集,以及保存策略和 series 系列;

随后,类似于 Mysql 的操作,进行数据的基本用户的授权和认证管控,以及从 HTTP 和 CLI 两个方面,对 InfluxDB 进行简单的 SQL 查询和管理操作;

最后,针对 InfluxDB 的配置简要过了下,希望整体对 InfluxDB 有个初步的了解!

9. 参考

  • influxdb,身份认证和授权管理:https://docs.influxdata.com/influxdb/v1.7/administration/authentication_and_authorization/
  • influxdb,API 文档:https://docs.influxdata.com/influxdb/v1.7/tools/api/
  • influxdb,查询语言:https://docs.influxdata.com/influxdb/latest/query_language/spec/
  • influxdb,
  • influxdb,术语:https://docs.influxdata.com/influxdb/v1.7/concepts/glossary/#series

  1. InfluxDB 存储引擎:https://docs.influxdata.com/influxdb/v1.7/concepts/storage_engine/ ↩︎

  2. 数据库管理: https://docs.influxdata.com/influxdb/v1.7/query_language/database_management/ ↩︎

  3. 配置 inflduxdb: https://docs.influxdata.com/influxdb/v1.7/administration/config/ ↩︎