docker运行InfluxDB流程及InfluxDB概念

  • InfluxDB(官网 维基百科 github

    go写成;时序数据库;用于存储系统的监控、IoT行业的实时数据等场景。

    Errplane公司在2013年开始开源项目的形式开发InfluxDB2015年公司更名为InfluxData

    InfluxDB存储的数据从逻辑上由 Measurement, tag组以及 field组以及一个时间戳组成的:

    • Measurement: 由一个字符串表示该条记录对应的含义。比如它可以是监控数据"cpu_load",也可以是测量数据"average_temperature"
    • tag组: 由一组键值对组成,表示的是该条记录的一系列属性信息。同样的measurement数据所拥有的tag组不一定相同,它是无模式的(Schema-free)。tag信息是默认被索引的。
    • field组:也是由一组键值对组成,表示的是该条记录具体的value信息(有名称)。field组中可定义的value类型包括:64位整型,64位浮点型,字符串以及布尔型Field信息是无法被索引的。
    • 时间戳:就是该条记录的时间属性。如果插入数据时没有明确指定时间戳,则默认存储在数据库中的时间戳则为该条记录的入库时间。
  • 使用教程

  • 在Ubuntu用docker运行InfluxDB

    1. 下载镜像
      > docker images # 查看本地是否有influxdb镜像,如果没有
      > docker search influxdb # 查看Docker Hub镜像列表,找到OFFICIAL的版本,一般就是第一个
      > docker pull influxdb # 下载镜像
      

      下载镜像可能出现如下错误:

      docker pull influxdb出错:Error response from daemon: pull access denied for indluxdb, repository does not exist or may require ‘docker login’

    2. 制作docker-compose
      version: '3'
      services:
          influxdb:
              image: influxdb
              container_name: influxdb1
              environment:
                  - INFLUXDB_ADMIN_ENABLED:"true"
              ports:
                  - "8083:8083"
                  - "8086:8086"
              volumes:
                  - /本地路径:/var/lib/influxdb
      
    3. 运行

      docker-compose up -d

    4. 进入docker

      docker exec -it <container_id> /bin/bash

    5. 启动InfluxDB

      influxd

      这个命令其实是influxd run init-influxdb.sh的缩写。

      这样就启动了,可以在localhost:8083看到。

    6. 命令行进入influxDB

      influxd这样是命令行进入操作influxDB,与localhost:8083等价。

  • 基础命令

    influxdb基础命令

  • InfluxDB概念

    时序数据库,主键永远是时间time(自动生成的)。

    • database

      数据库。

    • measurement

      数据库中的表。

    • points

      表里面的一行数据。根据timestamp+series保证唯一。

      points由:

      • measurement
      • 标签(tags):有索引的属性
      • 数据(field):没有索引的属性
      • timestamp

      组成。

      每个point就是时间轴上的一个点;tag用来检索;field用来记录信息,measurement用于将相同类型的数据归集。

    • series

      一个series就是一个测点,或者说一条曲线,retention policy, measurement, tagset就共同组成了一个定位测点序列的唯一标识,这三者有多少种组合就有多少个series。

      point就是某个series的同一个时刻的多个fieldvalue,也就是一般曲线上的一个点。

      InfluxDb不需要做schema定义,这意味着你可以随意的添加measurements, tags, fields

      单从tag角度思考,有几种tag组合就有几个series,tag有索引作为分类标准就清楚了。

    • continuous queries持续查询
    • retention policy存储策略
    • subscription订阅
  • InfluxDB存储数据的格式

    influxDB储存数据所采用的是Line Protocol格式。

    在这里插入图片描述
    在这里插入图片描述

  • Reference

  1. 开源influxdb操作手册
  2. Influx Sql系列教程四:series/point/tag/field
发布了871 篇原创文章 · 获赞 1322 · 访问量 97万+

猜你喜欢

转载自blog.csdn.net/The_Time_Runner/article/details/105610650
今日推荐