您的位置:首页 > 运维架构

influxd入门

2017-12-05 00:00 246 查看

influxdb介绍

influxdb是一个时间序列数据库。将数据组织成一个时间序列(measurements)。序列中包含一个测量值,例如,cpu_load,temperature。序列像一条线一样由一系列的点(points)组成。

point结构

time:每条数据记录的时间(插入数据时可以指定,如果没有指定influxdb会根据本机系统时间自动生成)

measurement :测量值 ,例如 “cpu_load”

field:测量值本身,例如“value= 0.64”或“temperature= 21.2”

tags: 0-many key-value 值,包含该测量值的元数据(例如:“host=server01”, “region=EMEA”, “dc=Frankfurt”)

你可以将measurement视为一个SQL表,主索引是时间。 tags和filed在表中是有效的列。 标签被索引,而字段不被索引。 与sql表不同的是,您可以拥有数百万的表和数据,而且不用事先定义表结构,而且不会存储空值。

还有一个重要的名词:series
series: 所有在数据库中的数据,都需要通过图表来表示,series表示这个表里面的所有的数据可以在图标上画成几条线(注:线条的个数由tags排列组合计算出来)

举个简单的小例子:
有以下数据:



它的series为:



influxdb基本操作

#登录数据库
influx -precision rfc3339
#The -precision argument specifies the format/precision of any returned timestamps.
#In the example above, rfc3339 tells InfluxDB to return timestamps in RFC3339 format (YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ).

#创建数据库
create database "db_name"

#显示所有的数据库
show databases

#删除数据库
drop database "db_name"

#使用数据库
use db_name  m

#显示该数据库中所有的表
show measurements

#创建表,直接在插入数据的时候指定表名
insert test,host=127.0.0.1,monitor_name=test count=1

#删除表
drop measurement "measurement_name"

插入数据

通过命令行

> use metrics
Using database metrics
> insert test,host=127.0.0.1,monitor_name=test count=1


通过http接口

curl -i -XPOST 'http://127.0.0.1:8086/write?db=metrics' --data-binary 'test,host=127.0.0.1,monitor_name=test count=1'

influxDB存储数据采用的是Line Protocol
Line Protocol格式:写入数据库的Point的固定格式。

在上面的两种插入数据的方法中都有这样的一部分:

test,host=127.0.0.1,monitor_name=test count=1

其中:

test:表名;

host=127.0.0.1,monitor_name=test:tag;

count=1:field
相对此格式有详细的了解参见官方文档

查询数据库中的数据

通过命令行

> use metrics
Using database metrics
> select * from test order by time desc


通过http接口

url -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=metrics" --data-urlencode "q=select * from test order by time desc"

** InfluxQL有许多功能和关键字,这里没有涉及,包括对Go风格的正则表达式的支持。例如:**

> SELECT * FROM /.*/ LIMIT 1
--

数据保存策略(Retention Policies)

influxDB是没有提供直接删除数据记录的方法,但是提供数据保存策略,主要用于指定数据保留时间,超过指定时间,就删除这部分数据

查看当前数据库Retention Policies

show retention policies on "db_name"




创建新的Retention Policies

create retention policy "rp_name" on "db_name" duration 3w replication 1 default


rp_name:策略名

db_name:具体的数据库名

3w:保存3周,3周之前的数据将被删除,influxdb具有各种事件参数,比如:h(小时),d(天),w(星期)

replication 1:副本个数,一般为1就可以了

default:设置为默认策略

修改Retention Policies

删除Retention Policies

drop retention policy "rp_name"

连续查询(Continous Queries)

当数据超过保存策略里指定的时间之后就会被删除,但是这时候可能并不想数据被完全删掉,怎么办?
influxdb提供了联系查询,可以做数据统计采样。

查看数据库的Continous Queries

show continuous queries




创建新的Continous Queries

create continous query cq_name on db_name begin select sum(count) into new_table_name from table_name group by time(30m) end


cq_name:连续查询名字

db_name:数据库名字

sum(count):计算总和

table_name:当前表名

new_table_name:存新的数据的表名

30m:时间间隔为30分钟

删除Continous Queries

删除Continous Queries

drop continous query cp_name on db_name

用户管理

可以直接在web管理页面做操作,也可以命令行。

#显示用户
show users

#创建用户
create user "username" with password 'password'

#创建管理员权限用户
create user "username" with password 'password' with all privileges

#删除用户
drop user "username"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  TSDB 监控