zoukankan      html  css  js  c++  java
  • InfluxDB入门

    简介

    • InfluxDB是由InfluxData开发的开源时序型数据库。

    • 由Go语言所写, 运维部署比较方便。

    • 着力于高性能地查询与存储时序型数据。

    • 被广泛应用于存储系统的监控系统, IoT行业的实时数据等场景。

    对比关系型数据库(MySQL)

    概念 InfluxDB MySQL
    数据库(同) database database
    表(不同) table measurement
    列(不同) column tag(带索引的, 非必须)、field(不带索引)、timestamp(时间戳, 唯一主键)
    • tag set

      • 不同的人魅族tag key与tag value的集合
    • field set

      • 每组field key与field value的集合
    • measurement

      • 是fields,tags以及time列的容器
      • 用于描述存储在其中的字段数据,类似mysql的表名
    • retention policy(保留政策)

      • 数据存储策略(默认为autogenous), InfluxDB没有删除数据操作, 规定数据的保留时间达到清除数据的目的。(可以类比redis的expire time, Kafka的保留时间策略)
    • series

      • 共同retention policy, measuremnt 和 tag set的集合

    主要特点

    • 无结构

    • 可拓展

    • 支持min, max, sum, count, mean, median 等一些列函数, 方便统计

    • 原生的HTTP支持, 内置HTTP API

    • 易上手的类SQL语法

    三个端口

    • 8083: Web admin管理服务的端口(较新版本已移除)

    • 8086: HTTP API的端口

    • 8088: 集群端口

    需要注意的一些特点

    • tag 只能为字符串类型
    • field 类型无限制
    • 不支持join语法(不能联表)
    • 支持连续查询操作(汇总统计数据)[continuous query]
    • 配合Telegraf服务(Telegraf可以监控系统CPU、内存、网络等数据)
    • 配合Grafana服务(数据展示的UI, 将influxdb中的数据可视化)

    安装InfluxDB单机版(Docker)

    • 企业版是支持集群模式的, 开源版只有单击版。

    • 默认已经安装好了docker, 如果不是root用户, 请将使用的当前用户加入到docker用户组中。

    • 拉取influxdb镜像

      docker pull influxdb
      
    • 查看已有镜像

      ubuntu@ronnie:~$ docker images
      REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
      api-server               default             dbf1ddd3f665        25 hours ago        954MB
      influxdb                 latest              e1ab2d9add24        2 days ago          311MB
      python                   3.6                 e0384051b655        2 days ago          914MB
      grafana/grafana          latest              199e063bb422        8 days ago          233MB
      wurstmeister/kafka       latest              9a5842c217a8        6 weeks ago         432MB
      mongo                    latest              a0e2e64ac939        6 weeks ago         364MB
      redis                    latest              dcf9ec9265e0        2 months ago        98.2MB
      zjffdu/zeppelin-blink    latest              41d3d93a261c        12 months ago       5.07GB
      wurstmeister/zookeeper   latest              3f43f72cb283        12 months ago       510MB
      
      
    • 启动InfluxDB 容器并将本机的8083, 8086端口映射到启动InfluxDB的容器的对应端口上, 这样访问本机端口即可访问InfluxDB服务。

      docker run -d -p 8083:8083 -p 8086:8086 --name my_influxdb influxdb
      
      • --name为容器名
    • 查看容器信息

      ubuntu@ronnie:~$ docker ps
      CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                                            NAMES
      f26c6be56cc7        grafana/grafana      "/run.sh"                25 hours ago        Up 25 hours         0.0.0.0:3000->3000/tcp                           my_grafana
      9eeb58698e3b        influxdb             "/entrypoint.sh infl…"   25 hours ago        Up 25 hours         0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp   my_influxdb
      4eeacbd09d2c        api-server:default   "bash bootstrap"         25 hours ago        Up 25 hours         0.0.0.0:9000->9000/tcp                           api-server
      
    • 进入docker镜像

      docker exec -it my_influxdb bash
      
    • 进入/usr/bin目录, 查看InfluxDB相关可执行程序

      root@9eeb58698e3b:/# cd /usr/bin/
      root@9eeb58698e3b:/usr/bin# find | grep influx 
      ./influx
      ./influx_stress
      ./influx_tsm
      ./influx_inspect
      ./influxd
      
    • 查看InfluxDB版本

      root@9eeb58698e3b:/usr/bin# ./influx -version
      InfluxDB shell version: 1.7.9
      
    • 进入InfluxDB shell

      root@9eeb58698e3b:/usr/bin# ./influx
      Connected to http://localhost:8086 version 1.7.9
      InfluxDB shell version: 1.7.9
      

    常用shell操作

    • 查看数据库

      show databases
      
    • 使用指定数据库

      use 数据库名
      
    • 查看measurement

      show measurements
      
    • 查询N条数据

      select * from measurement名 limit 10
      
    • 按照rfc格式查询

      precision rfc3339
      或
      influx -precision rfc3339
      
    • 查看 tag key

      show tag keys
      
    • 查看 field key

      show field keys
      
    • 查看 measurement中的所有保存策略

      show retention policies
      

    写个操作Demo

    • 创建数据库并使用

      create database ronnie_test
      use ronnie_test
      
    • 插入数据

      insert disk_free,hostname=server01 value=442221834240i 1435362189575692182
      insert disk_free,hostname=server02 value=132221834240i 1435362189575692182
      insert disk_free,hostname=server03 value=242221834240i 1435362189575692182
      insert disk_free,hostname=server04 value=342221834240i 1435362189575692182
      insert disk_free,hostname=server05 value=542221834240i 1435362189575692182
      insert disk_free,hostname=server06 value=642221834240i 1435362189575692182
      insert disk_free,hostname=server07 value=742221834240i 1435362189575692182
      insert disk_free,hostname=server08 value=842221834240i 1435362189575692182
      insert disk_free,hostname=server09 value=942221834240i 1435362189575692182
      insert disk_free,hostname=server10 value=122221834240i 1435362189575692182
      insert disk_free,hostname=server11 value=432221834240i 1435362189575692182
      insert disk_free,hostname=server12 value=462221834240i 1435362189575692182
      insert disk_free,hostname=server13 value=482221834240i 1435362189575692182
      insert disk_free,hostname=server14 value=492221834240i 1435362189575692182
      insert disk_free,hostname=server15 value=272221834240i 1435362189575692182
      
    • 查看measurements数据

      > show measurements;
      name: measurements
      name
      ----
      disk_free
      
      > select * from disk_free;
      name: disk_free
      time                hostname value
      ----                -------- -----
      1435362189575692182 server01 442221834240
      1435362189575692182 server02 132221834240
      1435362189575692182 server03 242221834240
      1435362189575692182 server04 342221834240
      1435362189575692182 server05 542221834240
      1435362189575692182 server06 642221834240
      1435362189575692182 server07 742221834240
      1435362189575692182 server08 842221834240
      1435362189575692182 server09 942221834240
      1435362189575692182 server10 122221834240
      1435362189575692182 server11 432221834240
      1435362189575692182 server12 462221834240
      1435362189575692182 server13 482221834240
      1435362189575692182 server14 492221834240
      1435362189575692182 server15 272221834240
      
    • 将时间改为rfc格式

      > precision rfc3339
      > select * from disk_free;
      name: disk_free
      time                           hostname value
      ----                           -------- -----
      2015-06-26T23:43:09.575692182Z server01 442221834240
      2015-06-26T23:43:09.575692182Z server02 132221834240
      2015-06-26T23:43:09.575692182Z server03 242221834240
      2015-06-26T23:43:09.575692182Z server04 342221834240
      2015-06-26T23:43:09.575692182Z server05 542221834240
      2015-06-26T23:43:09.575692182Z server06 642221834240
      2015-06-26T23:43:09.575692182Z server07 742221834240
      2015-06-26T23:43:09.575692182Z server08 842221834240
      2015-06-26T23:43:09.575692182Z server09 942221834240
      2015-06-26T23:43:09.575692182Z server10 122221834240
      2015-06-26T23:43:09.575692182Z server11 432221834240
      2015-06-26T23:43:09.575692182Z server12 462221834240
      2015-06-26T23:43:09.575692182Z server13 482221834240
      2015-06-26T23:43:09.575692182Z server14 492221834240
      2015-06-26T23:43:09.575692182Z server15 272221834240
      
    • 带where的查询, 基本和SQL一样

      > select hostname, value from disk_free where value > 200000000000
      name: disk_free
      time                           hostname value
      ----                           -------- -----
      2015-06-26T23:43:09.575692182Z server01 442221834240
      2015-06-26T23:43:09.575692182Z server03 242221834240
      2015-06-26T23:43:09.575692182Z server04 342221834240
      2015-06-26T23:43:09.575692182Z server05 542221834240
      2015-06-26T23:43:09.575692182Z server06 642221834240
      2015-06-26T23:43:09.575692182Z server07 742221834240
      2015-06-26T23:43:09.575692182Z server08 842221834240
      2015-06-26T23:43:09.575692182Z server09 942221834240
      2015-06-26T23:43:09.575692182Z server11 432221834240
      2015-06-26T23:43:09.575692182Z server12 462221834240
      2015-06-26T23:43:09.575692182Z server13 482221834240
      2015-06-26T23:43:09.575692182Z server14 492221834240
      2015-06-26T23:43:09.575692182Z server15 272221834240
      
    • 查看tag key

      > show tag keys
      name: disk_free
      tagKey
      ------
      hostname
      
    • 查看field key

      > show field keys
      name: disk_free
      fieldKey fieldType
      -------- ---------
      value    integer
      

    顺带记录下Docker安装Grafana

    • 拉取Grafana镜像

      docker pull grafana/grafana
      
    • 运行Grafana(本质上还是端口映射, 不说了)

      docker run -d -p 3000:3000 --name my_grafana grafana/grafana
      
  • 相关阅读:
    运算符与优先级
    数据类型
    c++基础
    有关进制
    函数二——递归
    字符串与随机数
    C语言第一课
    Linux-Shell
    Linux入门
    文本处理三剑客命令初探
  • 原文地址:https://www.cnblogs.com/ronnieyuan/p/12263721.html
Copyright © 2011-2022 走看看