influxdb时序数据库简单安装使用

23 篇文章 1 订阅
15 篇文章 0 订阅

时序数据库 百度百科

时序数据库全称为时间序列数据库。时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。
时间序列数据主要由电力行业、化工行业等各类型实时监测、检查与分析设备所采集、产生的数据,这些工业数据的典型特点是:产生频率快(每一个监测点一秒钟内可产生多条数据)、严重依赖于采集时间(每一条数据均要求对应唯一的时间)、测点多信息量大(常规的实时监测系统均有成千上万的监测点,监测点每秒钟都产生数据,每天产生几十GB的数据量)。

比较适合保存服务器等状态信息,根据时间绘制成图。查看状态波动情况。

安装

https://www.cnblogs.com/lixuebin/p/10813983.html
https://www.cnblogs.com/quchunhui/p/12067897.html

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.3.x86_64.rpm
yum -y localinstall influxdb-1.8.3.x86_64.rpm

设置配置文件

这个数据库一般记录的是主机的运行情况,如网络内存。数据量较大。要保证数据存放空间足够。

如果希望设置数据存放位置 如设置为 /data/influxdb

mkdir /data/influxdb

要保证安装influxdb时生成influxdb伪用户对这个文件夹有读权限。将目录所有者设置为influxdb

chown -R influxdb:influxdb /data/influxdb

修改influxdb配置文件

vim /etc/influxdb/influxdb.conf
[meta]
dir = "/data/influxdb/meta"

[data]
dir = "/data/influxdb/data"
wal-dir = "/data/influxdb/wal"
systemctl restart influxdb
设置 influx用户名 密码 启用认证

进入数据库

influx

创建账户admin 密码password 所有权限

CREATE USER "admin" WITH PASSWORD 'password' WITH ALL PRIVILEGES

退出 influx控制台

exit

未启用认证时 不用用户名密码即可操作数据库。启用认证后需要认证账户密码后才能操作数据库。

设置启用认证和开启http访问

vim /etc/influxdb/influxdb.conf
[http]
	enabled = true 
	bind-address = ":8086"
	auth-enabled = true
	log-enabled = true 
	write-tracing = false 
	pprof-enabled = false 
	https-enabled = false 
	https-certificate = "/etc/ssl/influxdb.pem"

重启 influxdb数据库。

systemctl restart influxdb

使用用户名密码认证

influx -username admin -password password

或者

influx
> auth
username: admin
password: 

可以使用网页访问。如查看 所有数据库

curl -G "http://localhost:8086/query?u=admin&p=password&q=SHOW+DATABASES"

基本操作命令

创建数据库 如test库

CREATE DATABASE test

删除数据库 如test

DROP DATABASE test

切换数据库 如test

USE test

查看数据库中 表(类似于mysql数据库中的表,这里称呼为表)

SHOW MEASUREMENTS

删除measurement 如test。要先选择库,才能删除该库下的measurement。

DROP MEASUREMENT test

直接加上库名

DROP MEASUREMENT test ON test

查询数据 表内容 test_table

SELECT * from test_table

时间戳转换为正常时间显示。

precision rfc3339

默认显示的是UTC 时间。可使用tz 设置时区

select * from test_table tz('Asia/Shanghai')

precision
Unknown precision “”. Please use rfc3339, h, m, s, ms, u or ns

precision 可以设置如上 参数。。。可将时间戳转换。


https://www.jianshu.com/p/68c471bf5533
https://blog.csdn.net/weixin_30825199/article/details/96832344
https://www.cnblogs.com/wzbk/p/10569683.html

influxDB中的名词传统数据库中的概念
database数据库
measurement数据库中的表
points表里面的一行数据

Point由时间戳(time)、数据(field)、标签(tags)组成。

Point相当于传统数据库里的一行数据,如下表所示:

Point属性传统数据库中的概念
time每个数据记录时间,是数据库中的主索引(会自动生成)
fields各种记录值(没有索引的属性)
tags各种有索引的属性

tag可看做有索引的列,二filed是真正记录的值。

TAG使用示例
https://docs.influxdata.com/influxdb/v1.8/query_language/explore-schema/
查看数据库中tag key为host的value值。

show tag values with key=host

会返回不同measurement 下tag values的值。

SHOW TAG VALUES [ON <database_name>][FROM_clause] WITH KEY [ [<operator> "<tag_key>" | <regular_expression>] | [IN ("<tag_key1>","<tag_key2")]] [WHERE <tag_key> <operator> ['<tag_value>' | <regular_expression>]] [LIMIT_clause] [OFFSET_clause]

查看某一measurements中所有tag key

SHOW tag keys [ON database] [FROM  measurement][WHERE tag_key  operator  tag_value)] [limit  offset]

查看fields的key,不仅会显示fields名称结果集,还显示field的数据类型

SHOW tag keys [ON database] [FROM  measurement][WHERE tag_key operator tag_value)] [limit  offset]

如果查询 某一时间段内,tag的key或value值时,使用show tag 明明无用,查询的结果和查询的时间范围无关,需要使用select 语句查询,如
查询 tag key为host 时间范围为 2h内 时的value 值。

SELECT host FROM (SELECT host,value FROM virt_rx,virt_tx,virt_read,virt_write,virt_value WHERE time > now() -2h)

NON_NEGATIVE_DERIVATIVE(field_key, unit) 计算字段的变化值

NON_NEGATIVE_DERIVATIVE计算字段值的变化比。unit默认为1s,即计算的是1秒内的变化比。

这一个对于统计网卡流量很有帮助。

通过ifconfig简易计算CentOS7下流量使用

[root@server ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.199.80  netmask 255.255.255.0  broadcast 192.168.199.255
        inet6 fe80::e7b:126c:b87e:bd32  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:97:49:5f  txqueuelen 1000  (Ethernet)
        RX packets 126567  bytes 150641732 (143.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 116985  bytes 50161283 (47.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
RX packets 126567  bytes 150641732 (143.6 MiB)
TX packets 116985  bytes 50161283 (47.8 MiB)

过一段时间再次查看

[root@server ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.199.80  netmask 255.255.255.0  broadcast 192.168.199.255
        inet6 fe80::e7b:126c:b87e:bd32  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:97:49:5f  txqueuelen 1000  (Ethernet)
        RX packets 126653  bytes 150679397 (143.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 116998  bytes 50163361 (47.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
RX packets 126653  bytes 150679397 (143.6 MiB)
TX packets 116998  bytes 50163361 (47.8 MiB)

可以知道该段时间内共
发送数据
116998 -116985 =13 packages
50163361-50161283=2079 bytes

接收数据
126653- 126567 = 86 packages
150679397-150641732=37665 bytes

除以时间间隔大致可以算出该段时间的网络流量。NON_NEGATIVE_DERIVATIVE实现了这样的计算,unit默认是1s
non_negative_derivative配合group by time使用时,需要指定时间大于等于某一值,表示从此处开始计算。

select non_negative_derivative(mean("value"), 1s) from "cpu_value" where ("host"='server' AND "type_instance" = 'user') AND time>= now()-1h group by time(30s) fill(null) limit 10

AND time>= now()-1h 如果不设置,会没有查询结果。

influxdb中使用模糊查询时。后面的 值需要使用正则

show tag values from memory_value with key=host where host=~/client.?/

以时间分组查询group by时查询的是单个或多个field的聚合,不能是具体的field

select mean(value) from memory_value group by time(10s);

不可写

select value from memory_value group by time(10s);

https://www.cnblogs.com/yihuihui/p/11386694.html
https://blog.csdn.net/weixin_30825199/article/details/96832344

curl 操作influxdb
https://archive.docs.influxdata.com/influxdb/v1.2

创建数据库

curl -i -XPOST http://localhost:8086/query --data-urlencode "q=create database testdb"

写入数据
  1、不带时间戳

curl -i -XPOST 'http://localhost:8086/write?db=testdb' --data-binary 'students,stuid=s123 score=89'

2、带时间戳

curl -i -XPOST 'http://localhost:8086/write?db=testdb' --data-binary 'students,stuid=s123 score=89 1434055562000000000'

查询数据
  1、使用时间字符串(会进行时区转换)

curl -G 'http://localhost:8086/query' --data-urlencode "db=testdb" --data-urlencode "q=select * from students limit 1"

2、使用时间戳(不会进行时区转换)

curl -G 'http://localhost:8086/query' --data-urlencode "epoch=ms" --data-urlencode "db=testdb" --data-urlencode "q=select * from students limit 1"

查询语句备注

1.influxdb 查询时 条件语句后面的值 需要使用 单引号 。使用双引号或不添加引号都无法获取正确结果

select * from virt_rx where type='if_packets' limit 10
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值