热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Grafana使用表格面板进行数据可视化

前面我们了解了如何使用基于时序数据的面板,接下来我们了解另外一个表格面板,

前面我们了解了如何使用基于时序数据的面板,接下来我们了解另外一个表格面板,表格面板可视化非常灵活,支持时间序列和表格和原始 JSON 数据的多种模式,此面板还提供日期格式、值格式和着色选项。

添加表格面板

接下来我们以统计服务器资源为例,对表格面板的使用进行说明。在 Dashboard 中添加添加一个空的 Panel 面板,进入面板编辑器后在右侧上方选择 Table
面板:

首先我们需要展示节点信息,我们可以使用 node_uname_info
指标来获取,在查询区域添加如下所示查询语句:

然后再添加一个查询来获取节点运行时间的相关信息,可以使用 node_boot_time_seconds
指标来进行计算,查询语句为 sum(time() - node_boot_time_seconds{job="node-exporter"})by(instance)

然后我们对于节点其他资源统计也非常关心,比如节点总内存、总 CPU 数、负载、带宽等等信息,接下来分别添加如下查询:

  • 总内存:node_memory_MemTotal_bytes{job="node-exporter"}
  • CPU 核数:count(node_cpu_seconds_total{job="node-exporter", mode='system'}) by (instance)
  • 5 分钟负载:node_load5{job="node-exporter"}
  • 连接数:node_netstat_Tcp_CurrEstab{job="node-exporter"}
  • 下载带宽:max(rate(node_network_receive_bytes_total{job="node-exporter"}[$interval])*8) by (instance)
  • 上传带宽:max(rate(node_network_transmit_bytes_total{job="node-exporter"}[$interval])*8) by (instance)

如还有其他需要展示的也可以直接添加新的查询即可:

表格转换

现在我们将所有需要展示的信息都通过 Table
形式展示出来了,但是现在有一个很大的问题,就是需要对每一个查询切换显示:

这显然是非常不友好的显示方式,我们需要将这些表格内容合并成一个表格进行展示,这个时候就需要用到 Grafana 的 Transform
转换功能了,在 Transform
选项卡中选择 Merge
选项:

Merge
转换器可以合并多个序列或者多个表格为一个表格,其中可合并的值将合并到同一行中,用于显示在表格中可视化的多个序列、表格或两者的组合。当我们选择了 Merge
转换器过后就会将上面的多个查询结果合并成一个表格。

但其实合并后的表格数据有一些地方没有显示,这是因为我们查询的结果实际上是包含 __name__
这个标签的,在合并的时候会造成数据丢失,我们可以将所有的查询语句后面添加上一个 - 0
来去掉这个标签,这样合并的时候就不会丢失数据了。比如查询主机信息的语句变成 node_uname_info{job="node-exporter"} - 0
,其他的语句也都加上 - 0
这个操作。

数据虽然正确了,但是表头却看不出来是表达的什么意义,有的列还是不需要的,这个时候同样也要用到 Transform
转换器了,这里我们需要用到的是 Organize fields
转换器,该转换器允许用户重新排序、隐藏或重命名字段或者列。

这里我们将不需要的一些列隐藏掉了,将表头进行了重命名。

属性覆盖

上面我们将查询的数据结果用一个表格展示出来了,但是现在我们的数据都是直接的一个结果,我们需要进行转换加上我们的单位。

比如对于运行时间这一列,我们需要添加覆盖,设置一个 seconds (s)
类型的单位,然后会根据我们的结果进行自动转换:

同样对总内存这一列的数据结果进行覆盖添加 bytes(IEC)
类型的单位:

此外在定制某列数据的显示效果的时候我们还可以为其配置背景颜色,只需要设置 Cell display mode
表格模式,该属性可以配置文本颜色、背景、按照 gauge 进行显示等方式:

比如我们可以为 CPU使用率
内存使用率
配置显示模式为 LCD gauge
,显示效果如下所示:

添加显示行

我们还可以定义一个 total
参数来表示监控的主机总数,不过需要注意的是这里的参数我们不需要展示,需要选择隐藏方式为 Variable

再单独定义一个显示主机名的变量,这里我们使用的查询语句为 node_uname_info{instance=~"$host"}
,需要注意的是这里关联的是前面定义的 $host
这个变量:

然后我们可以添加两个空的 Row
行:

把我们的面板放到不同的行中去,并为每一行定义显示标题,标题里面就可以使用前面定义的变量:

到这里我们的节点监控的完整效果如下所示:



推荐阅读
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 本文详细解析了Autofac在高级应用场景中的具体实现,特别是如何通过注册泛型接口的类来优化依赖注入。示例代码展示了如何使用 `builder.RegisterAssemblyTypes` 方法,结合 `typeof(IEventHandler).Assembly` 和 `Where` 过滤条件,动态注册所有符合条件的类,从而简化配置并提高代码的可维护性。此外,文章还探讨了这一方法在复杂系统中的实际应用及其优势。 ... [详细]
  • 类加载机制是Java虚拟机运行时的重要组成部分。本文深入解析了类加载过程的第二阶段,详细阐述了从类被加载到虚拟机内存开始,直至其从内存中卸载的整个生命周期。这一过程中,类经历了加载(Loading)、验证(Verification)等多个关键步骤。通过具体的实例和代码示例,本文探讨了每个阶段的具体操作和潜在问题,帮助读者全面理解类加载机制的内部运作。 ... [详细]
  • 在分析和解决 Keepalived VIP 漂移故障的过程中,我们发现主备节点配置如下:主节点 IP 为 172.16.30.31,备份节点 IP 为 172.16.30.32,虚拟 IP 为 172.16.30.10。故障表现为监控系统显示 Keepalived 主节点状态异常,导致 VIP 漂移到备份节点。通过详细检查配置文件和日志,我们发现主节点上的 Keepalived 进程未能正常运行,最终通过优化配置和重启服务解决了该问题。此外,我们还增加了健康检查机制,以提高系统的稳定性和可靠性。 ... [详细]
  • 本文深入解析了JDK 8中HashMap的源代码,重点探讨了put方法的工作机制及其内部参数的设定原理。HashMap允许键和值为null,但键为null的情况只能出现一次,因为null键在内部通过索引0进行存储。文章详细分析了capacity(容量)、size(大小)、loadFactor(加载因子)以及红黑树转换阈值的设定原则,帮助读者更好地理解HashMap的高效实现和性能优化策略。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 在处理多个玩家的相机控制时,我遇到了一个挑战,即无法在运行时动态添加播放器子对象以转换数组类型。为了解决这个问题,我在 `CameraControl.cs` 脚本中采取了临时措施。该脚本负责根据玩家的数量动态调整相机的缩放范围,确保所有玩家都能被相机捕捉到。 ... [详细]
  • 深入理解Spark框架:RDD核心概念与操作详解
    RDD是Spark框架的核心计算模型,全称为弹性分布式数据集(Resilient Distributed Dataset)。本文详细解析了RDD的基本概念、特性及其在Spark中的关键操作,包括创建、转换和行动操作等,帮助读者深入理解Spark的工作原理和优化策略。通过具体示例和代码片段,进一步阐述了如何高效利用RDD进行大数据处理。 ... [详细]
  • k8s(十一)helm安装premetheus
    1prometheus基础知识1.1prometheus简介Prometheus是一套开源的系统监控报警框架。和Kubernetes类似,它也发源于Google的Borg体系,其原 ... [详细]
  • 2017年的时候,我刚去上海,朋友内推我去美团面试,之前我也写过一个一篇文章,也是在美团面试中遇到的:关于慢SQL,我和面试官扯了很久,面试官也是很谦虚的,总是点头,自己以为回答的 ... [详细]
  • 开发笔记:Prometheus监控系列最佳实践
    Prometheus是继kubernetes第二个从CNCF中毕业的项目,个人也是非常的喜欢这款通过数据指标发现和预测告警的开源监控平台,官方的话就不多说了,根据官网的 ... [详细]
author-avatar
mobiledu2502927743
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有