influxdb快速入门指南

致读者

史上最全InfluxDb教程地址:InfluxDb中文教程

InfluxDB安装完成之后,我们开始来做一些有意思的事。在这一章里面我们将会用到influx这个命令行工具,这个工具包含在InfluxDB的安装包里,是一个操作数据库的轻量级命令行工具。它直接通过InfluxDB的HTTP接口(如果没有修改,默认是8086)来和InfluxDB通信。

说明:也可以直接发送裸的HTTP请求来操作数据库,例如curl,我们后面在介绍rest这种接口,但是会稍微复杂一些。

1、InfluxDB创建数据库

如果你已经在本地安装运行了InfluxDB,你就可以直接使用influx命令行,执行influx连接到本地的InfluxDB实例上。输出就像下面这样:


image.png

说明:

  • InfluxDB的HTTP接口默认起在8086上,所以influx默认也是连的本地的8086端口,你可以通过influx --help来看怎么修改默认值。
  • -precision参数表明了任何返回的时间戳的格式和精度,在上面的例子里,rfc3339是让InfluxDB返回RFC339格式(YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ)的时间戳。

这样这个命令行已经准备好接收influx的查询语句了,用exit可以退出命令行。

第一次安装好InfluxDB之后是没有数据库的(除了系统自带的_internal),因此创建一个数据库是我们首先要做的事,通过CREATE DATABASE <db-name>这样的InfluxQL语句来创建,其中<db-name>就是数据库的名字。数据库的名字可以是被双引号引起来的任意Unicode字符。如果名称只包含ASCII字母,数字或下划线,并且不以数字开头,那么也可以不用引起来。

2、创建一个mydb数据库

我们来创建一个mydb数据库:

CREATE DATABASE mydb

说明:在输入上面的语句之后,并没有看到任何信息,这在CLI里,表示语句被执行并且没有错误,如果有错误信息展示,那一定是哪里出问题了,这就是所谓的没有消息就是好消息。这一点很多人都不习惯,因为在mysql中,会有反馈,influxdb没有反馈,让人觉得不知道发生了什么。

现在数据库mydb已经创建好了,我们可以用SHOW DATABASES语句来看看已存在的数据库,也可以用小写的show databases:

>> SHOW DATABASES
name: databases
---------------
name
_internal
mydb

说明:_internal数据库是用来存储InfluxDB内部的实时监控数据的。

不像SHOW DATABASES,大部分InfluxQL需要作用在一个特定的数据库上。你当然可以在每一个查询语句上带上你想查的数据库的名字,但是CLI提供了一个更为方便的方式USE <db-name>,这会为你后面的所以的请求设置到这个数据库上。例如:

| > USE mydb |
| Using database mydb |
| > |

以下的操作都作用于mydb这个数据库之上,在mysql上也是这么操作的。


3、Influxdb写数据

现在我们已经有了一个数据库,那么InfluxDB就可以开始接收读写了。

首先对数据存储的格式来个入门介绍。InfluxDB里存储的数据被称为时间序列数据,其包含一个数值,这个数字一般是时间,这个时间可以用数字来表示。

时序数据有零个或多个数据点,每一个都是一个指标值。数据点包括time(一个时间戳),measurement(度量),至少一个k-v格式的field(也就是键值对 “value=0.64”或者“temperature=21.2”),零个或多个标签tag,其一般是对于这个指标值的元数据(例如“host=server01”, “region=EMEA”, “dc=Frankfurt)。

在概念上,你可以将measurement类比于SQL里面的table,其主键索引总是时间戳。tagfield是在table里的其他列,tag是被索引起来的,field没有。不同之处在于,在InfluxDB里,你可以有几百万的measurements,你不用事先定义数据的scheme(模式),并且null值不会被存储。

将数据点写入InfluxDB,只需要遵守如下的插入协议:

| insert <measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp] |

中扩号中的内容,是可选的,可以有,有可以没有。

上面说了measurement类似表名,那么上面的语义就是: 向某个表插入一些数据。插入语句必要有如下特点:

  • 1个表名measurement
  • 0个或多个tag标签
  • 1个或多个field
  • 一个可选的时间戳unix-nano-timestamp

下面是数据写入InfluxDB的格式示例:

| insert cpu,host=serverA,region=us_west value=0.64 |
| payment,device=mobile,product=Notepad,method=credit billed=33,licenses=3i 1434067467100293230 |

cpu是表的意思,其他几个等号连接起来的是键值对,最后一个是时间戳。

举个例子:

使用命令行插入单条的时间序列数据到InfluxDB中,用INSERT后跟数据点:

INSERT cpu,host=serverA,region=us_west value=0.64

这样一个measurement为cpu,tag是hostregionvalue值为0.64的数据点被写入了InfluxDB中。注意没有写时间,表示默认是系统时间。

注意上面的空格是tag和field的分界点


4、Influxdb查询数据

现在我们查出写入的这笔数据:

| use mydb |
| SELECT "host", "region", "value" FROM "cpu" |

执行结果如下:

Influxdb查询数据

说明:我们在写入的时候没有包含时间戳,当没有带时间戳的时候,InfluxDB会自动添加本地的当前时间作为它的时间戳。

让我们来写入另一笔数据,它包含有两个字段:

| INSERT temperature,machine=unit42,type=assembly external=25,internal=37 |
  • temperature 是表名measurement
  • machine和type是标签tag
  • external和internal是field
  • tag和field之间用空格隔开

查询的时候想要返回所有的字段和tag,可以用*,和mysql的语法基本一致。

| > SELECT * FROM "temperature" |
| name: temperature |
| ----------------- |
| time external internal machine type |
| 2015-10-21T19:28:08.385013942Z 25 37 unit42 assembly |

InfluxQL还有很多特性和用法没有被提及,包括支持golang样式的正则,例如:

| SELECT * FROM /.*/ LIMIT 1 |

这表示查出所有表中的一条数据,如下:

influxdb-正则表达式查询

5、小结

本章只是开始,有更多的关于Influxdb的读写的操作,请继续关注后面的文章。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容