最近公司在做一套物联系统,监测点数据写入和读取需求很大,并且要做到实时监控,本来用的是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,即可进入管理页面,如下:

blob.png

    4:influxdb关键词介绍以及对比传统数据库中的关键词:

        

  • influxdb关键词

传统数据库中的关键词
  • database

database数据库
  • measurement

table表
  • points

表中的一行数据


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

  • time:每条数据记录的时间,也是数据库自动生成的主索引;

  • fields:各种记录的值;

  • tags:各种有索引的属性

  • Point属性

传统数据库中的概念
  • time

每个数据记录时间,是数据库中的主索引(会自动生成)
  • fields

各种记录值(没有索引的属性)也就是记录的值:温度, 湿度
  • tags

各种有索引的属性:城市等


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


    5:influxdb中的http API接口调用:

    该数据库提供已http接口形式来操作数据库,而我们关心的接口url对于influxdb来说就是你自己看着办,管理页面中其实提供的url查看,如下图:

blob.png


    首先在Query Templates按钮中找到你要做的操作,然后点击Create Query URL,弹出框中的地址就是我们要的api接口url。简直简单粗暴。当然调用之后一会又返回数据,下面是调用SHOW DATABASES的返回结果


blob.png

    

InfluxDB 的HTTP API响应

在使用HTTP API时,InfluxDB的响应主要有以下几个:

1)2xx:204代表no content,200代表InfluxDB可以接收请求但是没有完成请求。一般会在body体中带有出错信息。

2)4xx:InfluxDB不能解析请求。

3)5xx:系统出现错误。