《InfluxDB原理与实战》读书笔记

概述

前言部分,作为第一印象(虽然很多人,包括我有时候不怎么看),写得很牛逼,总结的结论很中肯:

海量监控数据的真正挑战在于以下几点:
1.能否做到实时。实时是种质变的能力,可将一个离线监控平台提升为一个实时决策系统。难点在于能否设计实现高性能的架构,以及能否实现水平扩展等。
2.分集群后,单个业务的流量大小、标签集多少是关键。流量大,相对容易解决,主要涉及系统性能和水平扩展等。标签集多,海量标签,海量时间序列线,如何做查询优化是挑战,如笔者遇到的一些业务上报的监控数据,有几十个维度的标签,并将QQ号和URL作为标签值,有非常海量的时间序列线。
3.针对监控数据多写少读、成本敏感的特点,如何设计高效的存储引擎?既能充分发挥硬件性能,又能在高效压缩存储的同时保障查询效率。


技术理念定位:技术降成本,坚决反对开源软件堆砌。


要做的是借助强大的技术和工程能力,直面问题,在架构和源码层面解决它,而不是引入和堆砌更多的开源软件。

第一章 初识InfluxDB

时序数据

时序数据的定义,总结的若干个特点:

  1. 抵达的数据几乎总是作为新条目被记录,无更新操作。
  2. 数据通常按照时间顺序抵达。
  3. 时间是一个主坐标轴。

InfluxData与TICK

InfluxData公司的开源高性能时序中台TICK(Telegraf +InfluxDB + Chronograf +Kapacitor), InfluxDB是作为TICK的存储系统进行设计和开发的。TICK专注于DevOps监控、IoT监控、实时分析等应用场景,是一个集成了采集、存储、分析、可视化等能力的开源时序中台,由Telegraf、 InfluxDB、Chronograf、Kapacitor 4个组件以一种灵活松散但紧密配合、互为补充的方式构成,各个模块相互配合、互为补充,整体系统架构:
在这里插入图片描述
该公司开源InfluxDB-Relay的高可用套件后,宣布闭源其集群功能,作为商业付费版本(InfluxDB Enterprise和InfluxDB Cloud)分发。

使用场景

时序数据的存储、分析与监控

优势

特性与简介

第二章 InfluxDB入门

安装

命令行简介

配置文件

第三章 写入和查询

写入

InfluxDB写操作支持简明的行协议(Line Protocol,一种基于文本格式的协议),以及CollectD、Graphite、OpenTSDB、Prometheus、UDP等第三方协议。

行协议
单行文本,表示一条时序数据,由表、标签集、指标集和时间戳4部分组成

第四章 连续查询和保留策略

连续查询

保留策略

第五章 认证与授权

通过认证和授权,InfluxDB的不同账户拥有完全独立的数据空间和权限空间。

认证

授权

第六章 集群和高可用

第七章 备份管理和节点管理

备份管理

InfluxDB企业版提供两个工具集:

  1. 备份和还原备份工具集
    用于大多数场景,通用型工具;支持以数据库、保留策略、分片3个维度选定要操作的数据,进行备份或还原备份操作,

  2. 导出和导入数据工具集
    针对海量数据集(100G以上)场景补充设计的备份工具。

    • 导出:influx_inspect export,以行协议格式导出数据,参数选项:
      • -compress:使用gzip压缩数据,默认不压缩
      • -database <db_name>:要导出的数据对应的数据库名称
      • -datadir <data_dir>:DATA节点数据对应的存储目录,默认值$HOME/.influxdb/data
      • -end <timestamp>:时间范围结束的时间戳,rfc3339格式
      • -out <export_dir>:导出数据的存储目录,默认值$HOME/.influxdb/export
      • -retention <rp_name>:要导出的数据对应的保留策略名称
      • -start <timestamp>:时间范围开始的时间戳,rfc3339格式
      • -waldir <wal_dir>:DATA节点WAL文件对应的存储目录,默认值为$HOME/.influxdb/wal
    • 导入:influx-import,选项:
      • -path:要导入的数据文件的存储目录
      • -compressed:如果导入文件为压缩文件,则设置为true,支持.gz格式压缩
      • -pps:导入允许的速率。默认pps为0不限速。
      • -precision ‘h|m|s|ms|u|ns’:指定导入数据的时间戳精度,支持h小时、m分钟、s秒、ms毫秒、u微秒、ns纳秒,精度默认为ns。

节点管理

第八章 第三方协议

现今的开源世界太繁荣,闭门造车一家独大,大概率会玩死。所以,需要支持与其他系统原生集成或者以插件形式集成的可扩展能力。

UDP

CollectD

官网
架构图:
在这里插入图片描述
多指标插件(Multi-value Plugins)用于指定多指标数据的处理方式,有两种处理方式:split和join

Graphite

OpenTSDB

OpenTSDB是基于HBase的分布式、可伸缩的时序型数据库,由时间序列守护程序(Time Series Daemon,TSD)及命令行实用程序集组成。可以通过运行一个或多个TSD来提供OpenTSDB服务,每个TSD都是独立的,没有主设备和共享状态,因此用户可以根据需要运行任意数量的TSD,以支撑业务需求。每个TSD使用HBase或托管的Google Bigtable服务来存储和检索时间序列数据,数据模式针对类似时间序列的快速聚合进行高度优化,以最大程度节省存储空间。用户不需要直接访问底层存储,可通过telnet协议、HTTP API或内置GUI与TSD通信,来获取相关的数据或执行预设操作。所有通信都在同一指定端口上进行,TSD通过查看接收的前几个字节来确定客户端的协议。OpenTSDB架构:
在这里插入图片描述

Prometheus

Prometheus的灵感来源于Google的Borgmon监控系统,主要模块包括Prometheus Server、Exporters、Push Gateway、PromQL、Alertmanager以及图形界面,系统架构:
在这里插入图片描述

第九章 基于TICK的DevOps监控实战

TICK,即Telegraf、InfluxDB、Chronograf、Kapacitor4个组件,是一个集采集能力、运算和存储能力、告警能力、可视化能力为一体,支持数百种第三方系统和软件的监控系统,专注于DevOps监控、IoT监控、实时分析。

TICK架构图:
在这里插入图片描述
Telegraf采集配置文件指定的监控数据,并通过InfluxDB API接口上报到InfluxDB服务器,InfluxDB服务器接收到上报的时序数据后,执行预设的连续查询、聚合运算等操作并进行压缩存储。通过Chronograf可以查看Dashboard等可视化信息,通过Kapacitor可以对接收到的时序数据执行预设的告警策略。

Telegraf

InfluxDB

Chronograf

Kapacitor

第十章 基于InfluxDB、Prometheus、Grafana的DevOps监控实战

开源世界,开放和生态才是未来。InfluxDB支持集成Prometheus、Grafana。Prometheus缺乏数据持久存储能力的问题?

Prometheus

安装,略过。

Grafana

Grafana特点:

  • 可视化:从热图到直方图,从图表到地理地图,Grafana支持大量的可视化选项,通过一种精美呈现的方式帮助读者理解数据。
  • 告警:可以可视化地定义阈值、配置告警策略、处理指标数据和生成相应的告警信息,并支持Slack、PagerDuty、VictorOps、OpsGenie等通知系统。
  • 统一显示:将多种数据源的数据整合起来统一显示,支持30多个开源和商业数据源,也可以基于多种数据源构建统一仪表盘。
  • 开放:完全开源的,并由一个充满活力的社区开发和运营;安装方便,支持全部主流操作系统,提供Docker安装镜像;提供云托管的Grafana服务。
  • 可扩展性:当前Grafana官方库支持数百个仪表盘和插件,充满激情和活力的Grafana社区每周都会推出新的仪表盘或插件。
  • 协同:可在团队之间共享数据和仪表盘。

安装,略过。

集成

第十一章 InfluxDB源码架构剖析

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

johnny233

晚饭能不能加鸡腿就靠你了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值