最近公司在做一套物联系统,监测点数据写入和读取需求很大,并且要做到实时监控,本来用的是mysql,后来看到百度有一套收费的实序数据库TSDB,本着免费的原则,在网上找到了InfluxDB,开始了我的踩坑之路:
1:安装influxdb:
Ubuntu (64-bit) wget https://dl.influxdata.com/influxdb/releases/influxdb_0.13.0_amd64.deb sudo dpkg -i influxdb_0.13.0_amd64.deb RedHat & CentOS (64-bit) wget https://dl.influxdata.com/influxdb/releases/influxdb-0.13.0.x86_64.rpm sudo yum localinstall influxdb-0.13.0.x86_64.rpm
2:启动服务:
service influxdb start
出现错误:influxdb process was unable to start [FAILED],恭喜你,查看日志(vim /var/log/influxdb/influxdb.log)发现8088端口被占用,只要把占用该端口的进程kill掉就可以,什么?问我怎么查看该端口被谁占用了?请看下集预告:查看端口占用方法
3:运行influxdb:
influx 或者在 /usr/bin/目录下执行./influx 8083: Web admin管理服务的端口, http://localhost:8083 8086: HTTP API的端口 8088: 集群端口(目前还不是很清楚, 配置在全局的bind-address,默认不配置就是开启的)
运行成功之后,输入http://服务器IP:8083,即可进入管理页面,如下:
4:influxdb关键词介绍以及对比传统数据库中的关键词:
| 传统数据库中的关键词 |
| database数据库 |
| table表 |
| 表中的一行数据 |
Point由时间戳(time)、数据(field)和标签(tags)组成。
time:每条数据记录的时间,也是数据库自动生成的主索引;
fields:各种记录的值;
tags:各种有索引的属性
| 传统数据库中的概念 |
| 每个数据记录时间,是数据库中的主索引(会自动生成) |
| 各种记录值(没有索引的属性)也就是记录的值:温度, 湿度 |
| 各种有索引的属性:城市等 |
还有一个重要的名词:series
所有在数据库中的数据,都需要通过图表来表示,series表示这个表里面的所有的数据可以在图标上画成几条线(注:线条的个数由tags排列组合计算出来)
5:influxdb中的http API接口调用:
该数据库提供已http接口形式来操作数据库,而我们关心的接口url对于influxdb来说就是你自己看着办,管理页面中其实提供的url查看,如下图:
首先在Query Templates按钮中找到你要做的操作,然后点击Create Query URL,弹出框中的地址就是我们要的api接口url。简直简单粗暴。当然调用之后一会又返回数据,下面是调用SHOW DATABASES的返回结果:
InfluxDB 的HTTP API响应
在使用HTTP API时,InfluxDB的响应主要有以下几个:
1)2xx:204代表no content,200代表InfluxDB可以接收请求但是没有完成请求。一般会在body体中带有出错信息。
2)4xx:InfluxDB不能解析请求。
3)5xx:系统出现错误。