时序数据库influxDB入门
Helm安装
1 | helm upgrade --install my-influxdb influxdata/influxdb --set image.tag=2.5.1-alpine |
访问:开放nodeport,访问ip:nodeport地址
基础概念
measurement:表
point::一行数据记录
time:时间戳,自带字段,单位纳秒
tags:有各种索引的属性,一般用于
fields:没有索引的属性,一般会实时变化,存经纬度、温度、等变化的数据
annotated CSV数据
csv数据格式
group | false | false | true | true | false | false | true | true | true | 组? |
---|---|---|---|---|---|---|---|---|---|---|
datatype | string | long | dateTime:RFC3339 | dateTime:RFC3339 | dateTime:RFC3339 | double | string | string | string | 数据类型 |
default | mean | 默认值? | ||||||||
result | table | _start | _stop | _time | _value | _field | _measurement | car | 数据表头 | |
0 | 2022-11-22T07:20:32.833674853Z | 2022-11-22T08:20:32.833674853Z | 2022-11-22T08:00:30Z | 39.90786 | lat | gps | 川A888888 | point一行数据 | ||
注释 | ? | 表? | 查询的开始时间 | 查询的结束时间 | 数据的时间 | field的值 | field的key | 表 | tag |
csv源数据
1 | #group,false,false,true,true,false,false,true,true,true |
line protocol
1 | measurementName,tagKey=tagValue fieldKey="fieldValue" 1465839830100400200 |
接入springboot
添加依赖
1 | <dependency> |
1 |
|
1 |
|
常见influxdb flux语句
行列转换语句-pivot
在influxdb当有多个field
时,每个field查询出来会单独成一行数据,这是就需要添加
1 | |> pivot(rowKey:["_time"],columnKey: ["_field"],valueColumn: "_value") |
添加之后,就会把多个field换成一行。
flux in查询
1 | |> filter(fn: (r) =>contains(value: r["carNum"], set: ["01","02","03"])) |
对应java代码
1 | String carNumsStr=carNums.stream().map(s->"\""+s+"\"").collect(Collectors.joining(",")); |
last查询最新数据
1 | |> last() |
flux官方文档阅读笔记
1 | |> group(columns: ["host"], mode: "by") #分组 |
常见实用案例查询
1 | # 先把数据值转化为1,然后统计数据的条数,可以按分钟,天、月等力度统计每个区间段的数据 |
常见集成架构
graph LR A[mqtt/物联网设备] -->B(emq/mqtt服务端) B --> c[telegraf/数据中转处理] c --> d[infludb/入库] d --> e[grafna/展示]
常见问题
时区问题,在界面上默认是0时区去查询,时间数据导入
2022-11-22T08:51:00Z
z代表0时区。解决:修改容器的时区,添加只读挂在卷
1
2
3
4
5
6
7
8
9
10
11spec:
volumes:
- name: localtime
hostPath:
path: /etc/localtime
type: ''
containers:
volumeMounts:
- name: localtime
readOnly: true
mountPath: /etc/localtime添加之后,导入数据也要注意,切换为中国(+8)时区,也就是在时间RFC3339上,就行加8,也就是
2022-11-22T08:51:00+08:00
进行导入,但是查询时,界面上还是以0时区显示,不方便观察,可以在data explorer->customize->time format
选择YYYY-MM-DD hh:mm:ss a ZZ