InfluxDB 2 介绍与使用 flux查询 数据可视化

这篇具有很好参考价值的文章主要介绍了InfluxDB 2 介绍与使用 flux查询 数据可视化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、关键概念

相比V1 移除了database 和 RP,增加了bucket。

V2具有以下几个概念:

timestamp、field key、field value、field set、tag key、tag value、tag set、measurement、series、point、bucket、bucket schema、organization

新增的概念:

bucket:所有 InfluxDB 数据都存储在一个存储桶中。一个桶结合了数据库的概念和存储周期(时间每个数据点仍然存在持续时间)。一个桶属于一个组织

bucket schema:具有明确的schema-type的存储桶需要为每个度量指定显式架构。测量包含标签、字段和时间戳。显式模式限制了可以写入该度量的数据的形状。

organization:InfluxDB组织是一组用户的工作区。所有仪表板、任务、存储桶和用户都属于一个组织。

二、系统结构

数据模式:InfluxDB数据元素存储在时间结构合并树 (TSM)和时间序列索引 (TSI)文件中,以有效压缩存储的数据。

默认路径:

Engine path ~/.influxdbv2/engine/ InfluxDB 存储时序数据的位置
Bolt path ~/.influxdbv2/influxd.bolt 非时间序列数据的基于文件的键值存储
Configs path ~/.influxdbv2/configs 配置文件(configs) 的文件路径

文件目录结构:

~/.influxdbv2/

  • engine/
    • data/
      • TSM directories and files
    • wal/
      • WAL directories and files
  • configs
  • influxd.bolt

Influxdb分片和分片组

InfluxDB在将数据存储到磁盘时将时间序列数据组织成分片。分片被分组到分片组中

表示具有4d 保留期 和1d 分片组持续时间的存储桶:

InfluxDB 2 介绍与使用 flux查询 数据可视化

分片删除:InfluxDB保留强制执行服务会例行检查早于其存储桶保留期的分片组。一旦分片组的开始时间超过存储桶的保留期,InfluxDB 将删除该分片组以及关联的分片和 TSM 文件(在具有无限保留期的存储桶中,分片无限期地保留在磁盘上)。

系统存储桶

_monitoring system bucket : 该_monitoring系统桶存储InfluxDB数据用于 监控数据并发送警报。数据保留:7天

_tasks system bucket: 该_tasks系统桶存储与数据InfluxDB任务的执行。数据保留:1天

标签和字段描述详见:https://docs.influxdata.com/influxdb/v2.0/reference/internals/system-buckets/

三、配置文件

当influxd启动时,它会在当前工作目录检查一个名为config.*的文件。

支持以下语法:

  • YAML (.yaml, .yml)
  • TOML (.toml)
  • JSON (.json)

配置选项(日志、并发压缩…):https://docs.influxdata.com/influxdb/v2.0/reference/config-options/

四、Flux查询语句

Flux 是 InfluxData 的功能性数据脚本语言,设计用于查询、分析和处理数据,它是InfluxQL 和其他类似 SQL 的查询语言的替代品。

设计原则:受Javascript 启发,旨在设计出可用、可读、灵活、可组合、可测试、可贡献和可共享的语言。

示例查询:近一小时存储的数据,按cpu度量和cpu=cpu-total标签过滤,以 1 分钟为间隔对数据进行窗口化,并计算每个窗口的平均值

from(bucket:"example-bucket")
|> range(start:-1h)
|> filter(fn:(r) =>
    r._measurement == "cpu" and
    r.cpu == "cpu-total"
)
|> aggregateWindow(every: 1m, fn: mean)

1>关键概念

Pipe-forward operator (管道转发操作符" |> "):Flux广泛使用管道转发运算符 “|>” 将操作链接在一起。在每个函数或操作之后,Flux 返回一个包含数据的表或表的集合。管道转发运算符将这些表通过管道输送到下一个函数或操作中,在那里它们将被进一步处理或操作。

Tables :Flux 构造表格中的所有数据。当数据从数据源流式传输时,Flux 将其格式化为带注释的逗号分隔值 (CSV),表示表格。然后函数操作或处理它们并输出新表。

Group keys :每个表都有一个组键(Group keys),用于描述表的内容。它是一个列列表,表中的每一行都具有相同的值。每行中具有唯一值的列不是组键的一部分。

示例 group key

Group key: [_start, _stop, _field]
             _start:time                      _stop:time           _field:string                      _time:time                  _value:float
------------------------------  ------------------------------  ----------------------  ------------------------------  ----------------------------
2019-04-25T17:33:55.196959000Z  2019-04-25T17:34:55.196959000Z            used_percent  2019-04-25T17:33:56.000000000Z             65.55318832397461
2019-04-25T17:33:55.196959000Z  2019-04-25T17:34:55.196959000Z            used_percent  2019-04-25T17:34:06.000000000Z             65.52391052246094
2019-04-25T17:33:55.196959000Z  2019-04-25T17:34:55.196959000Z            used_percent  2019-04-25T17:34:36.000000000Z              65.536737442016

注意:_time和_value被排除在示例组键之外,它们对于每一行都是唯一的。

2>查询语法

https://docs.influxdata.com/influxdb/v2.0/query-data/get-started/query-influxdb/

指定数据源:from(bucket:"example-bucket")

指定时间范围:

使用管道转发运算符 ( |>) 将数据从数据源通过管道传输到range() 函数,该函数指定查询的时间范围。它接受两个参数:start和stop。范围可以是使用相对负持续时间 或使用绝对时间

// Relative time range with start only. Stop defaults to now.
from(bucket:"example-bucket")
|> range(start: -1h)

// Relative time range with start and stop
from(bucket:"example-bucket")
|> range(start: -1h, stop: -10m)

//使用绝对时间
from(bucket:"example-bucket")
|> range(start: 2018-11-05T23:30:00Z, stop: 2018-11-06T00:00:00Z)

//过去十五分钟的数据
from(bucket:"example-bucket")
|> range(start: -15m)

3>数据过滤:

将范围数据传递到filter()函数中,以根据数据属性或列缩小结果范围。该filter()函数有一个参数 ,fn它需要一个匿名函数,该函数具有基于列或属性过滤数据的逻

// Pattern
(r) => (r.recordProperty comparisonOperator comparisonExpression)

// Example with single filter
(r) => (r._measurement == "cpu")

// Example with multiple filters
(r) => (r._measurement == "cpu") and (r._field != "usage_system" )

//按cpu度量、usage_system字段和cpu-total标记值过滤
from(bucket:"example-bucket")
|> range(start: -15m)
|> filter(fn: (r) =>
    r._measurement == "cpu" and
    r._field == "usage_system" and
    r.cpu == "cpu-total"
)

4>生成指定查询数据

Flux 的yield()函数将过滤后的表作为查询结果输出。

Flux 会yield()在每个脚本的末尾自动假设一个函数,以便输出和可视化数据。yield()只有在同一个 Flux 查询中包含多个查询时,才需要显式调用。每组返回的数据都需要使用该yield()函数命

from(bucket:"example-bucket")
|> range(start: -15m)
|> filter(fn: (r) =>
    r._measurement == "cpu" and
    r._field == "usage_system" and
    r.cpu == "cpu-total"
)
|> yield()

5>数据转换

使用函数,将数据聚合为平均值、下采样数据等

//更新范围从最后一小时拉取数据
from(bucket:"example-bucket")
|> range(start: -1h)
|> filter(fn: (r) =>
    r._measurement == "cpu" and
    r._field == "usage_system" and
    r.cpu == "cpu-total"
)

//以五分钟为间隔的窗口化数据
from(bucket:"example-bucket")
|> range(start: -1h)
|> filter(fn: (r) =>
    r._measurement == "cpu" and
    r._field == "usage_system" and
    r.cpu == "cpu-total"
)
|> window(every: 5m)

//聚合窗口数据
from(bucket:"example-bucket")
|> range(start: -1h)
|> filter(fn: (r) =>
    r._measurement == "cpu" and
    r._field == "usage_system" and
    r.cpu == "cpu-total"
)
|> window(every: 5m)
|> mean()

//添加时间列到聚合函数
from(bucket:"example-bucket")
|> range(start: -1h)
|> filter(fn: (r) =>
    r._measurement == "cpu" and
    r._field == "usage_system" and
    r.cpu == "cpu-total"
)
|> window(every: 5m)
|> mean()
|> duplicate(column: "_stop", as: "_time")

//取消窗口聚合表,将所有点收集到一个无限的窗口中
from(bucket:"example-bucket")
|> range(start: -1h)
|> filter(fn: (r) =>
    r._measurement == "cpu" and
    r._field == "usage_system" and
    r.cpu == "cpu-total"
)
|> window(every: 5m)
|> mean()
|> duplicate(column: "_stop", as: "_time")
|> window(every: inf)

//辅助函数(将聚合或选择器函数应用于固定的时间窗口,通过every指定窗口的持续时间)
from(bucket:"example-bucket")
|> range(start: -1h)
|> filter(fn: (r) =>
    r._measurement == "cpu" and
    r._field == "usage_system" and
    r.cpu == "cpu-total"
)
|> aggregateWindow(every: 5m, fn: mean)

6>语法基础与通量函数

语法基础:https://docs.influxdata.com/influxdb/v2.0/query-data/get-started/syntax-basics/

通量函数包:https://docs.influxdata.com/influxdb/v2.0/reference/flux/stdlib/

比如:mean()函数对每个时间窗口内的值求平均值(https://docs.influxdata.com/influxdb/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/mean/)

五、可视化数据

https://docs.influxdata.com/influxdb/v2.0/visualize-data/visualization-types/

支持的可视化类型:

Band (乐队):显示随时间变化的数据组的上限和下限

InfluxDB 2 介绍与使用 flux查询 数据可视化

guage(仪表盘):仪表视图中显示时间序列的单个值最新值

InfluxDB 2 介绍与使用 flux查询 数据可视化

graph(图形):折线图

InfluxDB 2 介绍与使用 flux查询 数据可视化

Graph + Single Stat(图表+单一统计):以折线图显示指定的时间序列,并将最近的单个值叠加为一个大数值

InfluxDB 2 介绍与使用 flux查询 数据可视化

heatmap(热图):显示 x 和 y 轴上的数据分布,其中颜色代表不同的数据点浓度

InfluxDB 2 介绍与使用 flux查询 数据可视化

histogram(直方图):一种查看数据分布的方法。y 轴专用于计数,x 轴分为 bin

InfluxDB 2 介绍与使用 flux查询 数据可视化

mosaic(马赛克):化显示时间序列数据中的状态变化

InfluxDB 2 介绍与使用 flux查询 数据可视化

scatter(散点图):视图使用散点图来显示时间序列数据

InfluxDB 2 介绍与使用 flux查询 数据可视化

single stat(单项统计): 将指定时间序列的最新值显示为数值

InfluxDB 2 介绍与使用 flux查询 数据可视化

table(表格视图):表格视图中显示查询结果
InfluxDB 2 介绍与使用 flux查询 数据可视化

本地制造数据,通过图表数据展示案例:

InfluxDB 2 介绍与使用 flux查询 数据可视化

grafana集成数据展示:

InfluxDB 2 介绍与使用 flux查询 数据可视化

结论:

  • influxdb控制台提供接入sdk源码,可直接在代码中使用,其他模块可直接在界面操作influxdb,使用体验较好
  • influxdb可视化图表数量有限,如果图表无法满足需求,可以选择使用grafana展示数据,总体感觉grafana使用起来更舒适,数据显示更清晰
  • flux刚开始不会写,通过控制台操作图表选择属性或函数,可以生成简单的flux语句

附录

官网地址:https://docs.influxdata.com/influxdb/v2.0/文章来源地址https://www.toymoban.com/news/detail-433906.html

到了这里,关于InfluxDB 2 介绍与使用 flux查询 数据可视化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 空气质量查询API促使空气数据可视化

    引言 在当今的现代化社会中,关注和改善空气质量已成为人们共同的关切。随着科技的不断发展,空气质量查询API为我们提供了一种前所未有的方式来实时监测、分析和改善我们所处的环境。这一工具不仅让我们更深入地了解空气质量,还鼓励了空气数据的可视化,使其更易

    2024年02月08日
    浏览(36)
  • Python数据可视化工具介绍

    Python数据可视化是利用Python语言和相关工具包对数据进行可视化展示的技术,其能够通过图表、图形等方式直观地展示数据的特征和规律,让我们更好地理解数据。 在数据挖掘和分析过程中,数据可视化是非常重要的一环,能够使数据更具可读性和易于理解性。通过Python数据

    2024年02月04日
    浏览(38)
  • Docker进阶:Docker轻量级可视化工具Portainer与容器监控3剑客CAdvisor+InfluxDB+Granfana

    💖The Begin💖点点关注,收藏不迷路💖 在开始之前,确保已经安装了Docker。 Portainer是一个开源的Docker轻量级可视化工具,它提供了一个直观的Web界面,让你轻松管理和监控Docker容器、镜像和网络等。本文将为你介绍如何安装和使用Portainer,并提供详细的步骤指导,帮助你快

    2024年02月08日
    浏览(28)
  • 《PySpark大数据分析实战》-26.数据可视化图表Seaborn介绍

    📋 博主简介 💖 作者简介:大家好,我是wux_labs。😜 热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP)、TiDB数据库认证SQL开发专家(PCSD)认证。 通过了微软Azure开发人员、Azure数据工程师、Azure解决

    2024年01月21日
    浏览(33)
  • 《PySpark大数据分析实战》-27.数据可视化图表Pyecharts介绍

    📋 博主简介 💖 作者简介:大家好,我是wux_labs。😜 热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP)、TiDB数据库认证SQL开发专家(PCSD)认证。 通过了微软Azure开发人员、Azure数据工程师、Azure解决

    2024年01月24日
    浏览(40)
  • 小程序数据可视化:使用图表和可视化工具展示数据

    在当今信息爆炸的时代,数据无疑是最珍贵的资源之一。然而,海量的数据如果不加以整理和展示,很难从中获取有价值的信息。这时候,数据可视化就发挥了重要作用,它能够通过图表和可视化工具将复杂的数据转化为直观的视觉形式,帮助人们更好地理解和分析数据。本

    2024年02月11日
    浏览(40)
  • 【数据可视化】通过使用网络爬虫对数据爬取并进行可视化分析

      本次项目所爬取的网页为柳州职业技术学院电子信息工程学院的超星学习通课程中心。在该网页中可以查看到电子信息工程学院历年的超星课程创建情况,还可以进入到课程界面查看相应的教学资源。   在该网页中,详细记录了课程序号、课程名称、课程链接、所属院

    2024年02月04日
    浏览(42)
  • 大数据系列 | 阿里云datav数据可视化(使用json文件生成可视化动态图标)

    简介 DataV 数据可视化是搭建每年天猫双十一作战大屏的幕后功臣,ECharts 是广受数据可视化从业者推崇的开源图表库。从今天开始,DataV 企业版接入了 ECharts 图表组件,当你使用 DataV 搭建可视化项目时,可以轻松地插入 ECharts,这意味着更丰富多样的图表效果,也让编程小白

    2024年02月12日
    浏览(45)
  • Unity UGUI的Outl算法能力可视化ine(描边)组件的介绍及使用

    最近工作中需要用到MongoDB的事务操作,因此参考了一些资料封装了一个小的组件,提供基础的CRUD Repository基类 和 UnitOfWork工作单元模式。今天,就来简单介绍一下这个小组件。 MongoDB在4.2版本开始全面支持了多文档事务,至今已过了四年了,虽然我们可能没有在项目中用Mon

    2024年01月22日
    浏览(50)
  • 【python可视化大屏】使用python实现可拖拽数据可视化大屏

    我在前几期分享了关于爬取weibo评论的爬虫,同时也分享了如何去进行数据可视化的操作。但是之前的可视化都是单独的,没有办法在一个界面上展示的。这样一来呢,大家在看的时候其实是很不方便的,就是没有办法一目了然的看到数据的规律。为了解决这个问题我使用p

    2024年02月03日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包