大数据修炼之influxdb


官网
下载

概述

influxdb2.0时间序列平台是专门为收集、存储、处理和可视化度量和事件而构建的。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。
在这里插入图片描述
在这里插入图片描述

概念

Point

由时间戳(time)、数据(field)、标签(tags)组成。
Point相当于传统数据库里的一行数据

Series

相当于是 InfluxDB 中一些数据的集合,在同一个 database 中,retention policy、measurement、tag sets 完全相同的数据同属于一个 series,同一个 series 的数据在物理上会按照时间顺序排列存储在一起。

Shard

Shard 在 InfluxDB 中是一个比较重要的概念,它和 retention policy 相关联。每一个存储策略下会存在许多 shard,每一个 shard 存储一个指定时间段内的数据,并且不重复,例如 7点-8点 的数据落入 shard0 中,8点-9点的数据则落入 shard1 中。每一个 shard 都对应一个底层的 tsm 存储引擎,有独立的 cache、wal、tsm file。

TICK技术栈
包括Telegraf, InfluxDB, Chronograf, Kapacitor
在这里插入图片描述
在这里插入图片描述

安装

docker-compose 安装

version: '3'
services:
  emqx:
    image: emqx/emqx
    container_name: emqx
    ports:
      - "1883:1883"
      - "8083:8083"
      - "8883:8883"
      - "8084:8084"
      - "18083:18083"

  influxdb:
    image: influxdb
    container_name: influxdb
    ports:
      - "8083:8083"
      - "8086:8086"
    restart: always

  chronograf:
    image: chronograf
    container_name: chronograf
    ports:
      - "8888:8888"
    restart: always

操作

创建库

> create database mmm
> use mmm;
Using database mmm
显示表
> show measurements;
创建表
> insert disk_free,hostname=server01 value=442221834240i
> drop measurement disk_free
> show retention policies on "db_name"
 
支持的类sql语句:
DELETE*
DROP MEASUREMENT*
EXPLAIN ANALYZE
SELECT (read-only)
SHOW DATABASES
SHOW MEASUREMENTS
SHOW TAG KEYS
SHOW TAG VALUES
SHOW FIELD KEYS

> insert disk_free,hostname=server01 value=442221834240i
>
> ;
> show measurements
name: measurements
name
----
disk_free
> select * from disk_free
name: disk_free
time                hostname value
----                -------- -----
1613728512535811588 server01 442221834240
> show users;
user admin
---- -----
> create user 'dmp' with password '123456'
ERR: error parsing query: found dmp, expected identifier at line 1, char 12
> create user "dmp" with password "123456"
ERR: error parsing query: found 123456, expected string at line 1, char 33
> create user "dmp" with password '123456'
> ;
> show users;
user admin
---- -----
dmp  false
> create user "dmp1" with password '123456' with all privileges;
> show users;
user admin
---- -----
dmp  false
dmp1 true

模式设计:

  • 写数据的位置: tags是有索引的,fields没有。
    经常查询的元数据存储在tags
    如果每个点含有不同的值,存储在fields
    数字类型存在fields
  • 避免太多的series
  • 使用推荐的命名方法
    避免关键字作为tag或field的名字
    避免一个tag或者field有相同的名字
    避免测量名是编码数据
    避免tag中含有多于一个的piece(原子)

disk_free 就是表名,hostname是索引(tag),value=xx是记录值(field),记录值可以有多个,系统自带追加时间戳

insert disk_free,hostname=server01 value=442221834240i 1435362189575692182

写数据

非代码:

  • telegraf(agent) Telegraf是Xdata的数据收集代理,用于收集和报告度量。它庞大的输入插件库和“即插即用”架构让您可以快速方便地从许多不同的来源收集度量。
  • Scrape data
    开发工具:
influx write \
  -b bucketName \
  -o orgName \
  -p s \
  'myMeasurement,host=myHost testField="testData" 1556896326'


influx write \
  -b bucketName \
  -o orgName \
  -p s \
  --format=lp
  -f /path/to/line-protocol.txt

influx write \
  -b bucketName \
  -o orgName \
  -p s \
  --format=csv
  -f /path/to/data.csv

查询

删除

retention policy:数据存储策略(默认策略为autogen)
InfluxDB没有删除数据操作,规定数据的保留时间达到清除数据的目的;

处理

在influxdb2.0中Task取代了1.x中的continuous queries。大部分的操作都是使用flux脚本语法

  • 定义Task
    定义数据源
    处理或转换数据
    定义目的地
// Task options
option task = {
    name: "cqinterval15m",
    every: 1h,
    offset: 0m,
    concurrency: 1,
}

// Data source
data = from(bucket: "example-bucket")
  |> range(start: -task.every)
  |> filter(fn: (r) =>
    r._measurement == "mem" and
    r.host == "myHost"
  )

data
  // Data transformation
  |> aggregateWindow(
    every: 5m,
    fn: mean
  )
  // Data destination
  |> to(bucket: "example-downsampled")

可视化

已安装chronograf,添加连接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击explore
在这里插入图片描述
导入数据:
在这里插入图片描述

监控与高考

备份与恢复

优化写入的方式:

  • 批量写入 :最合理5000行
  • 按key对tags排序
  • 是由粗粒度的时间精度: influxdb默认写入按照纳秒的精度
  • 使用gzip压缩
  • NTP同步主机
  • 一个请求写多个数据点:每一行使用\n 分隔;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值