[时序数据库]:InfluxDB Notes

1 InfluxDB

1.1 InfluxDB 是啥?

InfluxDB是时序数据库,时序数据库通常用于监控场景,如:运维、IOT(物联网)领域。

1.2 InfluxDB 解释之使用场景

    我们可以写一个程序将服务器上CPU使用情况,每隔10s向InfluxDB中写入一条数据,然后,我们写一条
FLUX查询语句,查询过去30sCPU平均使用情况,紧接着让这个查询语句每隔10s执行一次,最终,我们配置
一条报警规则,若查询语句执行结果>xxx,就立刻触发报警。

1.3 时序数据库InfluxDB与关系型数据库对比

1.3.1 写入性能

时间戳数据结构
时序数据库时序数据库字如其名
关系型数据库支持时间戳,但是需要注意数据库的写入性能

1.3.2 数据价值

   由于时序数据库一般用于指标监控场景,这个场景数据特点是冷热差别明显,通常,指标监控只会
监控近期一段时间数据,例如:我们只查询最近10min的记录,10min前的数据不再用了,此时这个
10min前数据,就称为冷数据,需要压缩放到磁盘节省空间,热数据常使用,应被存在内存,等待查询,
市面上常用时序数据库大都有类似设置。

1.3.3 时间不可倒流,数据只写不改

时序数据库描述一个实体在不同时间所处的不同状态。

例如:当我们查看CPU使用情况,发现CCPU使用率过高,于是杀死了一个进程,但10秒前数据不会因
     为我们关闭进程而发生改变。

因而,时序数据库插入操作居多。

1.3.4 InflxDB的组成——TICK技术栈

技术栈解释
T:Telegref数据采集组件:收集和发送数据到InfluxDB。
I:InfluxDB存储数据:存储数据发送数据到 Chronograf。
C:Chronograf查询:总的用户界面,起到总的管理功能。
K:Kapacitor报警:后台处理报警信息。

image.png
注意:在2.x时,TICK进一步融合,ICK功能全部融入InfluxDB。

1.4 InfluDB使用介绍

1.4.1 Web UI 使用

1.4.1.1 创建用户和初始化存储桶

image.png

1.4.1.2 加载数据

image.png

1.4.1.3 上传数据文件

image.png

点开会有提示你上传格式image.png

1.4.1.4 写入InfluxDB的代码模块

相当于一个官方给你的API文档image.png

点开就会告诉你咋操作image.png

1.4.1.5 管理存储桶

image.png

1.4.1.6 创建Bucket3

过期策略,永不过期或者设置过期时间。
image.png

1.4.1.7 调整Bucket设置

image.png

1.4.1.8 设置Label,添加标签

image.png

1.4.1.9 向Bucket添加数据

如下我们选择的“Line Protocol”被称为行协议。
image.png

people,name=tony age=12
people,name=xiaohong age=13
people,name=xiaobai age=14
people,name=xiaohei age=15
people,name=xiaohua age=12

image.png

1.5 管理API Token

1.5.1 API Token是啥?

   简单来说,influxdb会对外暴露一套HTTP API,后边所使用的命令行啥的都是封装对influxdb的HTTP请求,
因此,对权限的管理主要就提现在Token上,在我们使用客户端发起http请求时token会被放到http请求头上,
influxdb服务器就会根据客户端发来的请求头进行解析,来判断此token拥有的权限,及可以进行的操作。

1.5.1 API token的相关管理

1.5.1.1 查看API Token

image.png

1.5.1.2 修改API Token名称

image.png

1.5.1.3 查看API Token可进行的操作

点击对应的token,便可查看token进行的相关操作
image.png

1.5.1.4 创建新的API Token

注意:Web UI 上提供只是生成Token的模板,准备了常用需求,不代表其全部功能
image.png

点击开仅能读和写的范围,会有如下选择界面image.png

1.6 查询工具

1.6.1 查询语言说明

   在influxDB的查询中,有两个查询实现方式分别为,**FLUX语言**与**InfluxQL语言,**其中InfluxQL语言在2.0版本后已被移除,被flux语言所替代,InfluxQL语言中与SQL语言高度类似。然而,flux语言更能适用于时序数据库。

1.6.1 Data Explorer

image.png

1.6.2 查询编辑区

1.6.2.1 查询构造器

image.png

1.6.2.2 FLUX脚本编辑器
image.png
1.6.2.3 数据预览区

image.png

1.6.3 示例:使用Data Explorer进行查询和可视化

1.6.3.1 打开 Data Explorer

image.png

1.6.3.2 可视化设置查询条件

image.png

1.6.3.3 窗口聚合选项

image.png

最后,再点击SUBMIT完成提交。
image.png

1.6.3.4 查看原始数据

image.png

1.6.4 可视化查询原理

当我们可视化选择条件进行查询时,实质是Web UI根据我们指定条件生成一套FLUX脚本语言
image.png
点击后便可查看到FLUX语句
image.png

1.7 Notebook

1.7.1 Notebook是啥 ?

   Notebook是influxDB 2.X后推出的功能,交互上模仿Jupyter NoteBook,器可以用来开发、文档编写、运行代码以及展示结果。

influxDB笔记本就是按照顺序处理数据的集合。其可以帮我们进行如下操作:

  • 执行flux代码、可视化数据和添加注释性片段。
  • 创建报警或计划任务。
  • 对数据进行将采样或清洗。
  • 生成要和团队分享的Runbooks。
  • 将数据写到存储桶。
   Notebook与Data Explorer相比,Notebook将数据拆分一个又一个具体步骤,并且Notebook可用来开发告警任务,Data Explorer不能。

1.7.2 Notebook的使用

1.7.2.1 进入Notebook
   在创建引导界面,influxDB通过3个模板,分别为Set an Alert(设置一个报警)、Schedule a Task (调度一个任务)、write a Flux Script(写一个 Flux 脚本)。![image.png](https://img-blog.csdnimg.cn/img_convert/19d46b9bb25dfedbef8430147f439828.png#averageHue=#0f1622&clientId=u4c90e686-1d69-4&from=paste&height=577&id=u35f8dc33&originHeight=793&originWidth=1578&originalType=binary&ratio=1.375&rotation=0&showTitle=false&size=215762&status=done&style=none&taskId=uf4ccfdb6-8d79-4978-9ab2-b69825c0ad2&title=&width=1147.6363636363637)
1.7.2.2 创建空白Notebook

image.png

1.7.3 Notebook 工作流——Cell

   在页面上看到的一个一个卡片,在Notebook中成Cell,一个Notebook工作流就是多个cell按照先后顺序组合起来的执行流程,这些Cell中间随时可插入其他Cell,且Cell和Cell可以调换顺序。

image.png

1.7.3.1 Cell的分类

image.png

数据源相关Cell可视化相关Cell行为Cell
查询构造器将数据展示为一个table进行报警
直接编写FLUX脚本将数据展示为一张图,
或者添加笔记定时任务设定
1.7.3.2 Notebook 工作流范式
    通常,Notebook 工作流以查询数据开始,后面的Cell把数据展示出来,当数据需要进一步修改时,再加一个flux脚本Cell,Notebook为我们留一个接口,后边的Flux cell可以将前面的数据作为数据源进行查询。最终,Notebook 工作流可以以任务设置或者报警操作作为整个工作流终点(**不是强制要求**)。

image.png

1.7.4 Notebook相关控件

1.7.4.1 时区转换

image.png

1.7.4.2 仅显示可视化

当开启此选型,查询构造器和FLUX脚本的Cell会被折叠。

image.png

1.7.4.3 删除按钮与运行按钮

image.png

1.7.5 示例:使用Notebook查询和可视化数据

1.7.5.1 使用查询构造器查询

默认,我们所创建的空白Notebook,自带3个Cell。

  • 第一个cell默认是一个查询构造器,相比DataExplorer,Notebook无开窗聚合操作(就是那个可视化图)

image.png

image.png
image.png

1.7.5.2 提交查询

image.png

1.7.5.3 添加说明cell

我们可以在Notebook中添加说明性cell。我们选择在最前面加一个说明性Cell
image.png
image.png
image.png

1.8 FlUX语法

1.8.1 啥是FLUX?

注意:说白了MySQL有SQL查询语言,InfluxDB有FLUX查询语言(2.0版本前还有InfluxQL语言,后边被移除了)
类比水处理,flux语言就是如下操作:

  • ① 从数据源中查询指定数量的数据。
  • ② 根据时间或字段筛选数据。
  • ③ 将数据进行处理或聚合得到预期结果。
  • ④ 返回最终结果。

Flux是一种函数式数据脚本语言,其旨在将查询、处理、分析和操作数据统一为一种语法。

    从概念上理解FLUX,可以联系在水处理的过程,首先,我们从源头把水抽取出来,然后,按照我
们用水需求,在管道上进行一系列的处理修改(去除沉积物,精华)等,最后,以消耗品的方式输送到
我们目的地。

image.png

1.8.2 示例:FLUX语句

函数说明
from( )指定数据源
| >管道转发符,将一个函数输入转发给下一个函数
range( ),fliter( )根据列的值对数据进行过滤
mean( )计算所剩数据平均值
yield( )将最终计算结果返回给用户
1.8.2.1 从influxDB中查询数据并聚合
//处理水类似,首先,从数据源中查询指定数量的数据,其次,根据时间或字段筛选数据,然后,
//将数据进行处理或聚合以得到预期结果,最后,返回最终结果。
//第一步:从数据库bucket中取数据。
//第二步:删选数据。
//第三步:对数据进行处理此处是求平均。
//第四步:返回最终结果。
from(bucket: "example-bucket")
|> range(start: -1d)
|> filter(fn: (r) => r._measurement == "example-measurement")
|> mean()
|> yield(name: "_results")
1.8.2.2 从CSV文件查询数据并聚合
//第一步:从数据源取出数据
//第二步:过滤数据
//第三步:处理数据,此处是求平均
//第四步:返回最终结果
import "csv"
csv.from(file: "path/to/example/data.csv")
|> range(start: -1d)
|> filter(fn: (r) => r._measurement == "example-measurement")
|> mean()
|> yield(name: "_results")
1.8.2.3 从PostgreSQL查询数据并聚合
//第一步:指定数据源,此处是PostgreSQL数据库,因此需要数据库连接要素
//第二步:过滤数据
//第四步:处理数据
//第五步:返回最终结果
import "sql"
sql.from(
driverName: "postgres",
dataSourceName: "postgresql://user:password@localhost",
query: "SELECT * FROM TestTable",
)
|> filter(fn: (r) => r.UserID == "123ABC456DEF")
|> mean(column: "purchase_total")
|> yield(name: "_results")

1.8.3 flux语法

1.8.3.1 注释

influx中无多行注释,只有单行注释,示例如下:

// 这是一行注释
1.8.3.2 变量与赋值

使用“=”将表达式的结果赋值变量,示例如下:

s = "foo" //string
i = 1 //Integer
f = 2.0 //float(floating point number)

s // Returns foo
i // Returns 1
f // Returns 2.0
1.8.3.3 基本表达式
表达式说明
+数字相加或字符串拼接
-数字减法
*数字相乘
/数字除法
%取模
1.8.3.4 比较运算符

谓词表达式的返回结果只能为true或false

"John" ==   "John" //Returns true
41 < 30 //Returns false
1.8.3.5 逻辑运算符

于逻辑:and;或逻辑:or

1.8.3.6 控制语句
if else
for while 循环
try catch 异常捕获
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值