基础

登录: 直接在机器上使用influx
查看所有的数据库: show databases;
指定使用具体的数据库: use dbName;
查看库中所有的表名: show measurements

influxdb: 日志文件路径 /var/log/messages

influxdb中tag带有索引,field没有索引

show tag keys from [measurement]
show field keys from [measurement]

函数一般都是作用于field

删除measurement

drop measurement sentinel_block_1m

320亿条数据的表, 用drop命令删除 耗时约2.5h

InfluxDB连续查询

  1. 连续查询(Continuous Queries),主要用在将数据归档,例如原来数据是按照秒级别上传到influxdb,可以通过连续查询按照小时级别统计归档,原来的秒级别的数据保存一段时间后过期即可。可以将小时级别的数据保存稍长时间。同样也能降低influxdb对内存和磁盘的占用。
  2. 使用连续查询,数据会存放到指定的数据表中,这样就为以后统计提供了方便。
  3. 连续查询使用指定时间段的开始时间统计,例如如何设置按照每1h分组,则在每个小时的开始时间统计,前一小时的数据,如果想统计更早的数据请看Influxdb文档:RESAMPLE EVERY < interval > FOR < interval >

查看已创建的连续查询

show continuous queries;

删除连续查询

示例: 删除metric_info_db数据库中名为cq_block_qps_5m的连续查询
drop continuous query cq_block_qps_5m on metric_info_db

创建连续查询

create continuous query cq_block_qps_1m 
on metric_info_db 
begin 
  select count(blockQps) as blockCount,sum(blockQps) as blockQps 
  into sentinel_block_1m 
  from resource_metric 
  where blockQps > 0 
  group by time(5m),appId,clientIp,resource 
end

cq_block_qps_1m:连续查询的名字
metric_info_db:作用于那个数据库
sentinel_block_1m:查询后的结果放在该表中,有满足条件的数据过来之后会自动创建表
time(5m):按照5m级别统计

连续查询支持的函数

#count()函数 返回一个(field)字段中的非空值的数量
select count(*) from disk_free

#DISTINCT()函数 返回一个字段(field)的唯一值,函数里面是 field 值!
select distinct(value) from disk_free

#MEAN() 函数 返回一个字段(field)中的值的算术平均值(平均值)字段类型必须是长整型或float64
select mean(value) from disk_free

#MEDIAN()函数 从单个字段(field)中的排序值返回中间值(中位数)
#字段值的类型必须是长整型或float64格式
select median(value) from disk_free

#SPREAD()函数 返回字段的最小值和最大值之间的差值
select spread(value) from disk_free

#SUM()函数 返回一个字段中的所有值的和
select sum(value) from disk_free
 
#TOP()函数 返回一个字段中最大的N个值
select top("value", 1) from disk_free

#BOTTOM()函数 返回一个字段中最小的N个值
select bottom("value",2) from disk_free

#FIRST()函数 返回一个字段中存活时间最长的值
select first(value) from disk_free

#MAX()函数 返回一个字段中的最大值
#MIN()函数 返回一个字段中的最小值
select max(value) from disk_free
select min(value) from disk_free

#PERCENTILE()函数 返回排序值排位为N的百分值
#value 字段按照不同的 value求百分比,然后取第五位数据。
select percentile(value,99),value from disk_free