文章目录
  1. 1. influxdb
    1. 1.1. 基本概念
    2. 1.2. 使用docker部署
    3. 1.3. 查询数据
  2. 2. 弃坑

前两天看到influxdb这个数据库,觉得拿来存储日志太适合了。数据库带有压缩功能,可以减少存储空间,并且支持一些基本的查询,语法类似SQL(有很多限制,后面会讲到)。配合下列组件可以很方便的查看服务器性能和应用日志分析:

  1. fluentd: 用于日志收集,类似于logstash,使用ruby写的,内存占用比logstash小,不过有gil,多核利用需要用插件多进程。
  2. telegraf: 采集服务器cpu,内存等负载数据,类似于collectd,使用go编写,配合influxdb使用。
  3. grafana: 图形化显示性能分析数据,跟influxdb配合。

influxdb

基本概念

  1. 跟mysql数据一样有数据库,语法也是 create database [dbname],不过多了一个可以设置数据保留规则的东西可以让旧的数据自动清除
  2. 有MEASUREMENTS类似于table,但是没有模式,数据结构可动态增加
  3. 每一个point数据有tag,field, timestamp
  4. tag可以用于group by,field不可以
  5. field可以进行 function aggregate,tag不行
  6. timestamp插入数据的时候可以指定也可以不指定,默认为当前时间
  7. 存储的时间都为utc时区

使用docker部署

用docker来部署比较简单,直接使用 docker run -p 8083:8083 -p 8086:8086 -v influxdb:/var/lib/influxdb influxdb:0.13.0-alpine,我喜欢用alpine版本的镜像,容量比较小。
运行成功后就可以使用浏览器访问8083来控制了, 8083是admin控制台,8086是http api端口。

influxdb管理界面

查询数据

语法类似于 SQL ,不过像group by 之类的语句对 tag 和 field 是有区别的,所以设置 schema 的时候需要注意一下。

SELECT * FROM "bbs" WHERE time > now() - 2h

查询最近两小时的日志数据

弃坑

原本想把整套环境配置起来玩玩,正好碰上迁移服务器,迁移后的服务器内存大小是8G,然后发现个非常严重的问题,这货会把内存吃光光,进程在收集日志的时候就占用1.2G内存,查询的时候更是超过了2G,甚至有上过6G。直接把服务器卡的无法动弹。
目前看来这个方案无法在小内存的服务器上使用,独立到单独的日志处理服务器上也许可行。后来试过0.12.2, 0.13.0, 1.0.0-beta3 都是一样的情况,这样就没办法用了。

文章目录
  1. 1. influxdb
    1. 1.1. 基本概念
    2. 1.2. 使用docker部署
    3. 1.3. 查询数据
  2. 2. 弃坑