(十四)InfluxDB仪表盘

news2024/11/19 17:47:50

以下内容来自 尚硅谷,写这一系列的文章,主要是为了方便后续自己的查看,不用带着个PDF找来找去的,太麻烦!

第 14 章 InfluxDB仪表盘

14.1 什么是InfluxDB仪表盘

1、前面已经给大家介绍过InfluxDB的仪表盘功能了。点击左侧的 按钮,可以进入 InfluxDB的仪表盘管理页面。可以看到仪表盘的管理页面,如下图所示:

在这里插入图片描述
2、我这里打开一个System仪表盘,注意,这个仪表盘中的内容依赖我们之前做的示例 2 。

在这里插入图片描述
3、这是一个监控主机硬件与网络资源的仪表盘。仪表盘中的每个 Cell其实都是一个FLUX查询语句,通过执行FLUX获取数据结果,再使用UI将它展示为各类图表。在你打开仪表盘的一瞬间,InfluxDB就会执行这些查询。

14.2 仪表盘控件

14.2.1 手动刷新

1、右上方的 按钮,点击一次可以重新执行一轮仪表盘中的查询。因为通常的FLUX 脚本都是查询距当前一段时间的数据,所以刷新的功能还是比较必要的。

14.2.2 开启自动刷新

1、 右上方的 按钮,可以开启仪表盘的自动刷新

在这里插入图片描述

14.2.3 切换显示时区

1、Local按钮,可以选择将当前的日期时间显示为当前时区还是UTC。

14.2.4 设定查询范围

1、指定查询过去多长一段时间的数据。

在这里插入图片描述

14.2.5 添加一个Cell

1、Cell就是仪表盘中多个的图形的一个图形。添加图形对应的是左上角ADD CELL按钮。

在这里插入图片描述

14.2.6 添加一个Note

1、一个Note也是仪表盘中的一个模块,支持Markdown语法。对应左上角ADD NOTE按钮。

在这里插入图片描述

14.2.7 显示变量

1、如果仪表盘中包含涉及到变量的查询,那么在仪表盘的顶部会出现一个下拉菜单,通过下拉菜单这一指定变量的值,从而操作仪表盘展示响应数据。对应左上角的 Show Variables。

在这里插入图片描述

14.2.8 开启注解

1、你可以按住shift和鼠标左键,在仪表盘的图示上添加参考线。打开个关闭注解会影响参考线的可见性。

在这里插入图片描述

14.2.9 全屏和黑夜模式

1、此功能在左上角的按钮,如图所示:

在这里插入图片描述

14.3 示例:制作可交互的动态仪表盘

1、本示例要对CPU使用情况的相关指标制作仪表盘,这依赖于示例 2 。请在完成示例 2的基础上完成改示例。

14.3.1 需求

1、用户希望我们的仪表盘上能加入一个下拉菜单以选择查看哪个CPU的使用情况。要监控的指标是useage_user,仪表盘上要显示每 1 分钟,CPU使用率的最大值、最小值和中位数。

14.3.2 创建变量

1、这里先不解释为什么创建变量。鼠标悬停在左侧的【扳手图案】按钮,在弹出栏上选择Variables。如图所示:

在这里插入图片描述
2、点击右上角CREATE VARIABLES按钮,选择New Variable,会弹出一个创建变量的对话框。在右上角的Type为Query的前提下,在脚本编辑区键入以下内容:

import "influxdata/influxdb/schema"

schema.tagValues(bucket: "example02",tag:"cpu")

3、解释:这个脚本可以查询出example02存储桶中的cpu标签有哪些标签值。左上角需要给变量指定一个名称,这里我输入的是CPU。

14.3.3 创建新的仪表盘

1、回到仪表盘管理页面,点击CREATE DASHBOARD按钮,创建一个新的仪表盘。
在这里插入图片描述

2、点击左上角的ADD CELL按钮。

在这里插入图片描述

14.3.4 创建新的cell

1、可以看到,又出现了我们熟悉的DataExplorer。进入后直接切换到SCRIPT EDITOR。键入以下内容。

basedata = from(bucket: "example02")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "cpu")
|> filter(fn: (r) => r["_field"] == "usage_user")
|> filter(fn: (r) => r["cpu"] == v.CPU)
basedata
|> aggregateWindow(every: 1m, fn: median, createEmpty: false)|> yield(name: "median")

basedata
|> aggregateWindow(every: 1m, fn: max, createEmpty: false)
|> yield(name: "max")
basedata
|> aggregateWindow(every: 1m, fn: min, createEmpty: false)
|> yield(name: "min")

2、点击SUBMIT查看效果。

在这里插入图片描述

14.3.5 优化展示效果

1、默认的可视化类型为Graph,我们现在将它切换为Band,表示带有边界的折线图。
在这里插入图片描述
2、切换图形后,点击CUSTOMIZE,进行自定义设置。有一栏是Aggregate Functions,在这里分别指定 Upper Column Name为max。MainColumn Name为median,Lower Column Name 为min。这就是有边界的折线图的效果。最后,点击右上角的对号保存。

在这里插入图片描述

14.3.6 查看效果

1、可以看到,在仪表盘的顶部出现了一个名为CPU的下拉菜单,通过这个下拉菜单,我们可以控制整个仪表盘,但前提是cell对应的FLUX查询语句引用了我们设置的变量 v.CPU。

在这里插入图片描述
2、使用下拉菜单选择不同的CPU,可以显示对应的数据。

在这里插入图片描述

14.4 示例:更加灵活的变量与仪表盘

14.4.1 需求

1、 在上一个示例中,我们可以通名为CPU的变量对仪表盘中展示的序列进行动态的调整。但是上一个示例中的仪表盘还有一个缺陷。如图所示,我们每次只能展示一个序列,但是如果我们想对比两个CPU的性能差别呢?这个时候上一个示例做出的仪表盘就不够用了。

2、现在,我们希望仪表盘中能够同时显示两个CPU到的工作状况,方便我们在视觉上进行对比。

14.4.2 创建变量

1、在左侧的工具栏点击Settings->Variables按钮。进入到变量的配置页面

在这里插入图片描述

2、点击页面右上角的CREATE VARIABLE按钮。Web UI上会弹出一个创建变量的 对话窗。

在这里插入图片描述

3、在右上角的Type下拉菜单中选择CSV。(上一个示例中我们创建的是Query类型,Query类型的变量可以根据数据的状况进行动态的变化。但是另外的Map类型和CSV类型不行,它们是静态的,如果想让其中的值发生改变,除非再次通过API或者Web UI
对其值进行手动的调整)

4、在左上角给变量起好名字,在演示中,我们将变量名设为cpuxxx。

在这里插入图片描述

5、中间的主要区域是用来设置变量的值的,这里可以使用CSV格式,但却没有必要非要按照行列的方式来组织这些值。这里的 CSV格式其实只是要求你用,(英文逗号)来分隔值。其实这个地方也能用换行的方式来分隔值,如图所示,我这里用的是换行分隔的方式。

6、此处,我们将值设为cpu0、cpu 1 、cpu2、cpu3和cpu1|cpu 2 。注意!此处的cpu1|cpu2是正则表达式写法,表示cpu1或者cpu2。

在这里插入图片描述

7、左下角会实时显示你当前给变量cpuxxx设了几种取值。

在这里插入图片描述

8、在右下角有一个Select A Default下拉菜单,它可以给我们的变量设置一个默认值。此处可以将默认值设为cpu0。至此,我们的cpuxxx就创建好了。

在这里插入图片描述

14.4.3 修改FLUX脚本(添加正则过滤)

1、首先,如图所示,先点击齿轮按钮,再在弹出的菜单中点击Configure按钮,就可以修改当前的Cell了。

在这里插入图片描述
2、现在,我们需要对上一个示例中的查询脚本作一些修改。在 filter中去添加一个蒸锅cpuxxx的取值进行正则过滤的方法。
下面是我们的最终脚本,此处我们就不展示数据的最大值和最小值了。红色的部分是我们需要额外注意的。

basedata = from(bucket: "example02")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "cpu")
|> filter(fn: (r) => r["_field"] == "usage_user")
|> filter(fn: (r) =>
regexp.matchRegexping(r:regexp.compile(v:v.cpuxxx),v:r["cpu"])

3、代码解释:

  • regexp.compile(v:v.cpuxxx):需要注意,我们在 InfluxDB中设置的变量的类型始终都是字符串类型,所以要进行正则匹配的话必须先把字符串转成正则表达式。regexp包下的compile函数就是专门用来将字符串转为正则表达式的。
  • regexp.matchRegexpString:用来判断字符串能否与正则表达式匹配。如果可以匹配上,那么该函数就会返回true,如果匹配不上,那么就会返回false。
  • 这样的话,当我们将变量cpuxxx的值置为cpu1|cpu2时,就可以同时展示出我们想要的两个序列了。

4、最终,点击右上角的√按钮保存修改后的cell。

14.4.4 查看最终效果

1、回到仪表盘后,可以看到,最上方的变量下拉菜单已经从cpu变成了cpuxxx,这说明仪表盘会自动判断内部的cell用到了哪些变量并做出相应的调整。如下图所示,这就是修改后的效果。

在这里插入图片描述
2、此时,选择cpu1|cpu2,就可以看到之前的cell里面会出现两条序列了。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/791029.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

免费数据恢复方法?这3个不要错过!

朋友们!本人是个超级马虎的职场新手,在处理工作的时候总是容易误删重要的报表!要知道我光是做一个报表就要花很长时间。大家有什么免费数据恢复的方法给我推荐推荐吗?感谢!” 在使用电脑时,我们会在电脑中保…

性能测试工具 Jmeter 引入 jar 包踩过的坑

目录 前言: Jmeter 中调用自己编写 jar 中的类出错 错误日志: 出现以上错误的原因: 解决方法: 前言: JMeter 是一种开源的性能测试工具,可以帮助我们快速地进行网站、应用程序等的性能测试和压力测试…

SSM企业固定资产智能管理系统的设计与实现【纯干货分享,M免费领取源码06298】

摘要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对企业固定资产智能管理系统等问题&#xff0c…

计算机系统结构-多处理机

概念,多处理机指的是,多台含cpu的机器共享一个存储器。 (可以通过网络宽带,也可以通过线直连这个存储器。当然他们也可以有自己的私有存储器或者高速缓存) 几个cpu公用一个总线,没问题。但是如果十几个cpu…

系统学习Linux-MySQL语句(二)

一、SQL语句类型 DDLDDL(Data Definition Language,数据定义语言):用于定义数据库中的各种对象,包括数据库、表、视图、触发器等,常见的 DDL 命令有 CREATE、ALTER、DROPDMLDML(Data Manipulat…

YOLOv1论文细节总结(confidence)

总结几个细节点: 1、置信度计算: 训练时: 测试时置信度,这里网络输出仍然是 以上是各大博文讲解时列出的也是论文中提到的公式,但其实最清楚的是下面这段文字讲出的: 说白了: 网络输出三个…

深圳国际新能源及智能网联汽车全产业博览会今年10月举办

7月25日,深圳市工业和信息化局与励展博览集团共同在深圳举办Automotive World China 2023深圳国际新能源及智能网联汽车全产业博览会(简称“AWC 2023”)全球推介启动大会,该博览会将于2023年10月11日-13日在深圳国际会展中心盛大举…

K8S初级入门系列之十-控制器(StatefulSet)

一、前言 在前面的系列K8S初级入门系列之六-控制器(RC/RS/Deployment),K8S初级入门系列之七-控制器(Job/CronJob/Daemonset)我们已经介绍了多种控制器,今天我们将介绍最后一种控制器--StatefulSet,顾名思义,即有状态Set&#xff0…

我的第一个flutter项目(Android Webview)

前言:flutter开发环境搭建Flutter的开发环境搭建-图解_☆七年的博客-CSDN博客 第一个flutter简单项目,内容是一个主界面,其中: 1.内容点击数字自增 2.跳转一个空页, 3.跳转一个WebView界面 其中涉及添加主键&#xf…

选择合适明星代言:确保品牌传播与销售成功的关键一步

在当今激烈的市场竞争中,企业需要不断探索新的营销策略来吸引消费者的关注和忠诚度。其中一种被广泛采用的方法是邀请明星代言产品或品牌。判断想请的明星与自己的产品是否相合适是十分重要的步骤,这关系到代言活动的成功与否。以下是一些方法可以帮助你…

DuckDB全面挑战SQLite

概要 当我们想要在具有嵌入式数据库的本地环境中工作时,我们倾向于默认使用 SQLite。虽然大多数情况下这都很好,但这就像骑自行车去 100 公里之外:可能不是最好的选择。 这篇文章中将讨论以下要点: • DuckDB 简介:它…

企业邮箱默认发信账户用途说明及设置方法

有的时候,企业有多个子公司,或者对内和对外需要用不同的邮箱地址,或者发给不同的人需要用不同的邮箱地址,这个时候企业或用户一般会设置别名邮箱用来区分。 那么问题来了,这么多邮箱账号,我发信的时候默认…

大模型的淘金时代,HPE给出了一份智能经济“奇点”攻略

进入2023年,ChatGPT引发了一个新的AI时代——大模型时代。陆奇说:“我已经跟不上大模型时代的狂飙速度了!”大模型引发了AI产业整体升级换代,各种大模型层出不穷,科技公司纷纷入局,AI创业公司再次雨后春笋般…

【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(持久化功能分析)

探究Redis服务启动的过程机制的技术原理和流程分析的指南(持久化功能分析) Redis提供的持久化机制Redis持久化如何工作Redis持久化的故障分析持久化频率操作分析数据库多久调用一次write,将数据写入内核缓冲区?内核多久将系统缓冲…

算法空间复杂度详解

如果您觉得文章不错,期待你的一键三连哦,你的鼓励是我创作的动力之源,让我们一起加油,一起奔跑,让我们顶峰相见!!! 前言 避免在处理大规模问题时出现效率低下,耗费较多…

STM32 Flash学习(一)

STM32 FLASH简介 不同型号的STM32,其Flash容量也不同。 MiniSTM32开发板选择的STM32F103RCT6的FLASH容量为256K字节,属于大容量产品。 STM32的闪存模块由:主存储器、信息块和闪存存储器接口寄存器等3部分组成。 主存储器,该部分…

服务器被爬虫恶意攻击怎么办?

在有预算的情况可以采购第三方服务防火墙,没钱就使用开源的WAF进行防护。 # WAF防火墙的基本防护原理 WAF(Web 应用防火墙)可以使用多种技术来防止恶意爬虫攻击,例如: 1. 黑名单:WAF 可以使用黑名单技术来…

会点C++还需要再学Python吗?

提到的C、数据结构与算法、操作系统、计算机网络和数据库技术等确实是计算机科学中非常重要的基础知识领域,对于软件开发和计算机工程师来说,它们是必备的核心知识。掌握这些知识对于开发高性能、可靠和安全的应用程序非常重要。Python作为一种脚本语言&…

Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台免费搭建

Java版知识付费-轻松拥有知识付费平台 多种直播形式,全面满足直播场景需求 公开课、小班课、独立直播间等类型,满足讲师个性化直播场景需求;低延迟、双向视频,亲密互动,无论是互动、答疑,还是打赏、带货、…

【C++初阶】介绍stack_queue及OJ题

介绍stack_queue及OJ题 前言一、简单了解1、stack2、queue 二、OJ题(前三个栈,第四、五个队列)1、最小栈(1)题目描述(2)解题思路(3)解题代码 2、栈的压入、弹出序列&…