当前位置:网站首页>InfluxDB语法

InfluxDB语法

2022-08-09 17:12:00 _小笼包_

influxDB 时序数据库

时序数据库:
opentsdb 基于HBASE
TimeScaleDB 基于postgreSQL
KairosDB 基于Cassandra

通用数据库
kudu
CreateDB 基于ElasticSearch

InfluxDB是一个由InfluxData开发的开源时序型数据库,它由
Go语言写成,着力于高性能地查询与存储时序型数据。InfkuxDB被广
泛应用与存储系统的监控数据,loT行业的实时数据等场景。

InfluxDB有如下三大特性:
* 基于时间序列
* 可度量性
* 基于事件

InfluxDB数据模型

Measurement(表)

Tags(维度列)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-APXDkWkX-1659933382527)(influxDB_files/1.jpg)]
device = dev1 building = b1
device = dev2 building = b1
device = dev2 building = b2
device = dev1 building = b2

类似于主键,不唯一

Field 数值列

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BmmsK6um-1659933382528)(influxDB_files/2.jpg)]

point

相当于数据库中的一条记录

InfluxDB时间线(Series)

Series = Measurement + Tags

时间线:一个数据源采集的一个指标随着时间的流逝而源源不断吐出数据,这样形成的一条数据线
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lgIYYNp8-1659933382528)(influxDB_files/3.jpg)]

InfluxDB系统架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m4O3eDce-1659933382529)(influxDB_files/4.jpg)]

DataBase

create database test;

RP (数据保留策略)

RP是数据库级别的,不是表级别的属性

每个数据库有多个保留策略,但是只能有一个默认策略

– 查看库数据的过期策略
show retention policies on telegraf

ShardGroup

每个ShardGroup只存储指定时间段的数据。
不同的ShardGroup对应的时间段不会重合

为什么这样划分?
* InfluxDB中数据过期删除的执行力度就是ShardGroup
* 可以有效根据时间维度选择目标分区,淘汰部分数据

Shard

shard才是真正存储数据的部分

influxdb命令行命令

systemctl status influxdb #查看influxdb状态
systemctl start influxdb #启动influxdb
systemctl status influxdb #查看状态
systemctl enable influxdb #开启开机启动

cd /usr/bin
influxd #influxdb服务器
influx #influxdb命令行客户端
influx_inspect #查看工具
influx_stress #压力测试工具
influx_tsm #数据库转换工具(将数据库从b1或bz1格式转换为tsm1格式)

cd /var/lib/influxdb
data #存放最终存储的数据,文件以.tsm结尾
meta #存放数据库元数据
wal #存放预写日志文件

cd /var/log/influxdb 日志存储位置

cd /etc/influxdb 配置文件位置
vim influxdb.conf

systemctl start telegraf *
service grafana-server start *

systemctl status telegraf --查看telegraf状态

systemctl stop telegraf --停止telegraf

– 重启 telegraf 服务,使配置文件生效
service telegraf restart
– Linux 不同系统服务的启动方式不同
systemctl start telegraf

– 查看telegraf状态
systemctl status telegraf

wget https://dl.influxdata.com/chronograf/releases/chronograf-1.8.6.x86_64.rpm

influxdb语法

– 插入
measurement:表名
tag:维度列
field:数值列
insert [,=…] =[,=…] [unix-nano-timestamp]
insert test,host=127.0.0.1,monitor_name=test1,app=ios count=2,num=3

– 查看所有维度列
show tag keys from 表名

– distinct的字段只能是数值列,不能是维度列
select distinct(数值列) from 表名

– group by 只能对维度列使用,不能对数值列使用
select * from test group by 维度列

– 查看某个维度列的value值
show tag values from 表名 with key=“维度列”

– 模糊查询

-- =~/字符串/ 包含指定字符串的

select * from 表名 where 维度列|数值列 = ~/aaa/

-- =~/^字符串/ 以指定字符串开始

select * from 表名 where 维度列|数值列 = ~/^aaa/

-- =~/aaa$/ 以指定字符串结尾

select * from 表名 where 维度列|数值列 = ~/aaa$/

– 分页
– 从第2条记录开始,显示2条
limit 2 offset 2

– 没有IN操作,有OR操作
select * from cpu where cpu =‘aa’ or cpu=‘bb’

influxdb函数

– count()函数 数值列
返回一个字段中的非空值的数量
语法:
SELECT COUNT(<field_key>) FROM <measurement_name> [WHERE ] [GROUP BY ]
示例:
select count(usage_idle) from cpu where time > xxx and time < xxx

注意:influxdb中的函数如果没有指定时间的话,
	 会默认以1970年1月1日00时00分00秒作为时间

– MEAN()函数 数值列
返回一个字段(数值列)中的值的算术平均值,字段类型必须是长整型或float64
语法:
SELECT MEAN(<field_key>) FROM <measurement_name> [WHERE ] [GROUP BY ]
示例:
select MEAN(usage_idle) from cpu

– MEDIAN()函数 数值列
从单个字段(数值列)中的排序值返回中间值(中位数)。
字段值的类型必须是长整型或float64
语法:
SELECT MEDIAN(<field_key>) FROM <measurement_name> [WHERE ] [GROUP BY ]
示例:
select MEDIAN(usage_idle) from cpu

– SPREAD()函数 数值列
返回字段的最小值和最大值之间的差值
数据的类型必须是长整型或float64
语法:
SELECT SPREAD(<field_key>) FROM <measurement_name> [WHERE ] [GROUP BY ]
示例:
select SPREAD(usage_idle) from cpu

– SUM()函数 数值列
返回一个字段中的所有值的和
字段的类型必须是长整型或float64
语法:
SELECT SUM(<field_key>) FROM <measurement_name> [WHERE ] [GROUP BY ]
示例:
select SUM(usage_idle) from cpu

– 给文件权限才能下载
chmod 777 log_info.log

原网站

版权声明
本文为[_小笼包_]所创,转载请带上原文链接,感谢
https://blog.csdn.net/guanqingqing_/article/details/126225354