2023 IoTDB Summit:天谋科技产品负责人赵馨逸《利其器:如何用 IoTDB 可视化控制台实现高效管理与运维》
12 月 3 日,2023 IoTDB 用户大会在北京成功举行,收获强烈反响。本次峰会汇集了超 20 位大咖嘉宾带来工业互联网行业、技术、应用方向的精彩议题,多位学术泰斗、企业代表、开发者,深度分享了工业物联网时序数据库 IoTDB 的技术创新、应用效果,与各行业标杆用户的落地实践、解决方案,并共同探讨时序数据管理领域的行业趋势。
我们邀请到天谋科技产品负责人,Apache IoTDB PMC Member 赵馨逸参加此次大会,并做主题报告——《利其器:如何用 IoTDB 可视化控制台实现高效管理与运维》。以下为内容全文。
各位现场和线上的观众朋友大家好,我是赵馨逸,今天我带来的主题是《利其器:如何用 IoTDB 可视化控制台实现高效管理与运维》。我们前面的小伙伴,比如田原讲到了怎么样去做更好的、更丰富的查询,金瑞讲到了怎么样去做树型的建模,后面我们还会有小伙伴分享到怎么样去用我们的流处理的引擎。其实这些都会比较贴近于 IoTDB 内核的产品和技术能力,那今天我在这里分享的可能会更偏向上层的应用,会围绕大家更加关心的应用层面。我们在已经有了这种丰富的内核功能的情况下,怎么能够用更方便、更好用的东西,把 IoTDB 用好、运维好,在这个方面来展开。
我今天的分享主要包括两个方面。第一个是我们对于现有的 IoTDB 工具体系的一个完整介绍,第二个就是对于这个工具体系里面我们认为比较重要的一部分,叫可视化控制台,也就是我们的 Workbench,去进行整体的功能的一个介绍。也希望能够通过这次介绍,让大家对于 IoTDB 的使用和周边的工具能够有一个更进一步的认识。
01 IoTDB 工具体系介绍
首先我们来了解一下 IoTDB 现在的一个工具体系的情况。其实之前我们在很多的用户群,包括我们的开源用户群还有企业的用户群里面,经常听到大家有一些反馈,比如说我们的操作命令行太抽象了,元数据、包括数据的读写、集群状态的管理,使用起来都非常的不直观。或者是我们的 SQL 语法非常的多,大家在执行的时候总要去查用户手册,非常的复杂。以及我们系统的配置,包括我们的脚本分散在了各处,大家在操作的时候需要跳来跳去,没有一个 all-in-one 的工具,导致大家的操作不高效等等,这样一系列的问题。
其实这些问题我们也都有关注到,也明白目前在 IoTDB 的内核已经茁壮成长的当下,它迫切的需要一套工具体系来帮助大家更简单、更高效的去使用数据库。所以我们今天除了在不断地迭代我们现在的内核功能以外,还在我们上层的工具体系里面做了更进一步的大量精力的投入。我们希望我们的工具体系是能够适用于 IoTDB 从部署实施,到运维管理,到应用开发的各个阶段的这样一组官方的应用工具,能够让 IoTDB 的使用、运维和管理更加的简单高效,真正的去实现数据库的一个高效的、简单的管理和运维。
在这套体系里面,我们有三个比较重要的控件,或者说工具,想跟大家分享。第一个工具叫可视化控制台,它可能主要服务于我们的运维人员和业务人员,这也是我们今天介绍的一个重点。我们希望能够通过提供这种界面类的交互,完成数据库的一些基础操作,包括元数据的建模、数据的查看、系统相关的配置等等,让用户对数据库有一个更直观的认识。这样大家在使用的时候就可以通过简单点击的方式去用数据库,而不需要再去用繁琐的 SQL 语句的方式去跟数据库完成交互,这个后面我们会再做一个详细的介绍。
第二个比较关键的工具叫监控面板,目前 IoTDB 已经内置了上百个监控项去关注 IoTDB 运行的整个状态,也同时完成了和 Grafana 的集成。这样的方式能够让用户更加直观地看到现在数据库系统里面各个方面的状态,比如说我们写入的吞吐、查询的 QPS,整体系统的 CPU 的负载是怎么样的。用户看到这些之后,能够非常容易地感知到集群当前的运行状态是否健康,如果发生了一些问题,也更容易能够判断、定位到我们当前系统的瓶颈到底在哪里,从而比较快捷地找到优化的空间。
第三个比较重要的工具叫集群管理工具。这个工具其实是一个 all-in-one 的脚本工具。我们之前在跟很多用户交流的时候都会发现,尤其是对于分布式系统的部署和运维,如果运维人员要每一台机器去挨个地配置,每一台机器去挨个地下发命令,其实是一个非常繁琐的事情,所以我们开发了一个这样一键式的集群管理工具。我们可以让用户提前把集群所有的关键信息收集起来,然后配置到我们这个集群管理工具里面,然后我们可以用这个工具帮大家来完成一键式的操作,比如集群的启停、一键数据导出、一键日志导出等等一系列的操作,让大家对数据库,尤其是分布式数据库的运维变得更加的简单。
上面我们讲到的这三个重要的应用工具,目前都已经搭配企业版正式发布了,所以在座的小伙伴如果有需要的话,也可以联系我们去试用。对于开源的用户,我们也会尽快把这些内容尽可能地开源,让大家在使用 IoTDB 的过程中也能够体验到,也欢迎大家在用户群里面持续的跟我们一起讨论。
02 IoTDB 可视化控制台功能介绍
接下来,我们就带大家来一起重点看一看我们今天想讲的 IoTDB 可视化控制台,我们也叫它新一版的 IoTDB Workbench,它的一些相关功能情况。
对于 IoTDB 的可视化控制台,我们也给出了官方的一个定义,它最重要的就是能够提供数据库交互的界面,让我们整个的数据库使用流程变得更加简单,也提升大家使用数据库的一个整体的效率。
目前我们的可视化控制台主要有四个大的方面。第一个大的模块叫做实例管理,也就是围绕着 IoTDB 管理的这些实例的集群去进行创建、连接、删除等等一系列操作。第二个大的模块叫做元数据管理,就是围绕着刚才金瑞讲到的 IoTDB 的树形结构建出来的元数据,在我们的界面上进行可视化的呈现,包括创建、删除、查看,也包括了视图的一些相关的管理。第三个大的模块叫做数据管理,包括大家最常用到的怎么看这个时序数据库里面存的数据,我们对数据做基础的查询也好,做统计的查询也好,还是把它画在图上,用趋势的方式展示出来,都是在这个模块实现的。第四个模块就是系统管理,像常见的权限的管理,审计的日志,白名单等等一系列这种系统的配置,我们都放在这个模块里面去做。
对于我们现在的 Workbench,总结下来有这三个大的特性。第一个就是能够完成更加直观的跨实例的管理。我们都知道,现在很多 IoTDB 的用户,他其实在自己的环境里面会部署多套集群、多个实例。那么怎么样能够让用户更方便地在多个实例当中进行切换,这个是目前 IoTDB Workbench 可以完成的事情。第二个就是,对基础的每一个数据库实例的使用,我们提供了更加简单的数据库的操作方式,包括测点的管理、数据的查看以及系统配置等等一系列的功能,我们都在界面上做了可视化的呈现。第三个就是 Workbench 能够给大家带来更高效的运维的操作,包括查看数据库基本的运行状态,支持界面化的导入导出等等这样的操作。通过这样的三个特性,我们希望让我们的用户在用 IoTDB 的时候,对它的理解能够更加的简单、直观,使用上也会更加的方便。
好,接下来我们就来展开地给大家看一看,现在在可视化控制台里面一些比较有意思的功能。第一个大的功能叫实例管理,顾名思义,就是我们刚才提到了,对于很多的用户,尤其是运维了多个实例的用户来说,对所有的实例进行一体化管理是一件非常关键的事情。那目前我们的 Workbench 在界面上能够统一地支持对已经运行的 IoTDB 实例进行创建、编辑和删除的操作,这样的话我们的用户可以快速地对多个实例去进行整体的管理和切换。包括对于我们现在不同的实例类型,有单机、有集群、有双活等不同的实例类型,我们都支持了不同的配置方式,能够让大家更快速地把集群的信息配置进来,在下一次使用的时候可以直接去使用、操作。
而对于我们已经配置好的实例的话,在登录界面,包括在内部的控制台里面都可以直接完成实例的切换,而不需要大家再去重复地输入相同的信息。
还有一个在实例管理里面我们觉得比较有特点的功能,就是我们还提供了集群实例的拓扑形态的管理。对于我们现在的很多用户,比如说今天上午赵刚主任分享到的宝武集团,他们“端-边-云”的场景里面,可能会存在像工厂、区域、中心这样的多层实例的关系。而我们在 IoTDB Workbench 里面提供了一些可拖拽的、可编辑的实例拓扑图,可以让用户把这些实例拖拽到这个拓扑图里面,去维护好他的实例的层级,把这些关系能够非常清楚地展示在这。这样的话就让我们的实例不再是一个一个的散点,而是成为了更好管理、更好记忆的一整套 IoTDB 集群的组合。
接下来我们再来看一看目前我们的首页的功能。其实我们希望首页是最能够直观地展示目前 IoTDB 整个集群信息的一个页面,所以在这个页面里面,我们展示了系统的一些基本的信息,比如说它是否激活,是不是有在运行,各个节点的 IP 的信息,以及它的版本是什么等等。它可能综合了我们在 Client 命令行里面的像 show cluster、show ttl、以及查看、激活状态等等一系列的接口语句,把这些关键的信息融合起来展现在了现在的首页里面,让我们的 DBA 运维同学能够更直观的了解到当前集群的状态。
除了我们现在集群的一些基本的信息之外,我们还把用户最常会用到的这些监控的信息也展示在了首页里,当然这个可能没有我们 Grafana 监控面板的监控信息那么丰富,但是在首页里面我们展示了大家最关心的,比如说 CPU 现在的核数,以及磁盘已用的空间和总的空间,还有系统已用的内存和总的内存等等一系列的情况。而且我们会把它分成集群,我们的 ConfigNode 节点和 DataNode 节点能够分开查看。这样的方式就能够让运维在不打开很多监控项的情况下,就已经能对 IoTDB 整体的运行状态有一个直观的感知。
接下来的话就是我们的元数据管理模块。刚才有很多小伙伴都在问金瑞跟树形建模相关的问题,也侧面证明了大家对于我们现在的建模是非常关注的。那在我们这个元数据管理模块,我们对于 IoTDB 最常见的三个建模的概念,就是刚才我们讲到的数据库的概念、设备的概念和测点的概念分别进行了分级的展示。比如说在数据库,也就是我们的存储组这个层级,我们可以展示它的名称,展示在这个存储组下数据可以保存的时间,以及这个存储组下设备的数量、测点的数量和数据的总量。
同时,我们在下面这个列表当中还帮用户展示了诸多的信息。比如刚才有小伙伴问到,如果有一些其它的非属性类的信息,我们能不能对它的节点做一个描述,答案是可以的。我们可以用 IoTDB 底层的 tag 来描述,那在界面上我们也同样有“测点描述”这一列,大家可以把这些信息填到这里面。除此之外,我们基本的数据类型、测点类型、编码方式、压缩方式等,在这里面都有直观的展示。
除此之外,对于测点,之前很多小伙伴很关心,我们怎么样做这种批量的导入和导出?那我们在现在的界面上提供了一键式的导入导出的方式,并且有这种 step by step 的引导,让大家把我们的模板下载下来,把内容填进去再上传上来,就能够实现一键式的批量把测点进行导入。
同时刚才我们也讲到了,对于 IoTDB 来说,我们的测点毕竟是一棵树形的结构,如果我们只是用一行一行的表格的形态去展示的话,很难展示出我们想看到的这样一棵设备的“树”。所以我们在 Workbench 控制台里面也对这个数据模型进行了可视化的展示,支持用户一层一层的把这个树形结构点开,去看每一个层级的节点下面都有哪些设备。以及每一个层级我们还提供了不同的信息,比如说对于测点,我们会给用户展示最新值和最新值的时间;对于设备来说,我们会展示设备下测点的数量;对于存储组来说,我们会展示它下面设备的数量和测点的数量。
接下来我再给大家来讲一讲数据查询的模块,这个模块非常的简单,但是也非常的有用,其实本质就是我们希望用户能够脱离 SQL,直接去完成对于数据库里面基本数据的一些查询。比如说我们在大多数的查询场景里面,大家一定会用到的就是根据测点和时间去做数据的过滤,那我们在界面上就可以支持用户直接去选择他需要去查询的测点,并可以支持模糊搜索,直接通过点击把测点选上,然后再把时间的范围选上,甚至可以选采样的周期和采样的策略,然后一点查询,这个数据就查出来了。对于很多这种最基本的数据查询场景,就可以在这个数据查询页面来完成。
除了这种基础的数据查询之外,对于一些统计查询,比如说我们经常会需要去看一个测点的最大值、最小值、平均值等等这样的一些信息,我们现在也有专门的统计查询页面,让用户来自己选择相关的测点,选择要查询的时间范围,能够一键式的打包把这些信息给大家展示出来,这样的话大家在使用的时候会非常的方便。
当然对于非常多高阶的操作,我们还是要依赖于 SQL 语句,所以我们在 Workbench 里面还是保留了 SQL 这种传统的交互方式,但是我们在原有的命令行的基础上,也提供了更友好的用户交互。比如说我们支持多标签的用户的输入,比如说我们在下面会把执行的这个表格性的结果,以可视化的方式展示出来。如果你的 SQL 语句有多条的话,也就意味着你可能有多个运行结果,这个时候我们也会把多条运行结果在下面进行展示。
同时我们在侧边栏还会支持一些快捷的操作。比如说用户找测点会非常困难,那就可以在测点栏直接输入自己测点的关键词,把这个测点查出来以后,能够双击添加到 SQL 的输入框里面。再比如说刚才田原有讲到,我们内置了非常多的 UDF 算法,我们这些 UDF 函数都帮大家列在了侧面,用户可以直接点击,并且 hover 也可以看到这个函数大概的含义,这样能够让用户更快捷地去使用这个 SQL 的输入框。再有就是对于常见的、常用的 SQL,我们也支持保存,把它保存到模板里面,下一次用户就不需要再重新写这个 SQL,而是可以直接打开,用你上一次写过的 SQL 去执行就可以。
接下来再看一看很多用户都非常感兴趣的数据趋势的模块。我们都说时序数据是设备的心电图,那能够把这张心电图实时、直观的画出来就变得非常的重要。目前我们在可视化控制台里面提供了直接的趋势的模块,能够实时地观测到这个测点当前的运行状态。我们这个模块可以让用户自己去选择对应的测点,把它添加到这张画布里面,同时也支持用户去改变这个测点曲线的颜色和线宽,还有它的量程,这些都是用户可以自定义的。
对于历史的走势,我们也能够提供对应的趋势。用户也是一样,可以去选择他需要的时间的范围,包括它的采样的策略,把这些信息直接画在这个画布上。我们内部也做了很多的处理逻辑,在原始数据量过大的时候,我们会自动的做降采样,尽可能在保留数据原始趋势的同时,保证数据的绘制的速度。
除此之外,还有一些 IoTDB 新的亮点功能。比如说数据同步,我们把一个数据库里面的数据迁移到另一个数据库里面,这种同步任务的创建,我们也可以在界面上通过点击的方式直接完成。你只需要选择需要抽取的是哪些范围的数据,然后选择要发送到的接收端的 IP 地址和端口是什么,把对应的插件选上,就可以一键创建同步的任务。
同时也可以在这个列表里看到任务当前的运行状态,比如它是正常的运行还是运行中有报错,都可以直观的看到,也可以对这些任务去进行启停和删除。
除此之外,我们的 Workbench 还提供了很多系统管理层面的功能,比如说权限的管控、白名单的配置、审计日志,这些功能在这里就不展开讲了,也欢迎大家在使用的时候和我们一起探索、一起交流。
回到我们最开始的问题,对于大家之前提到的很多易用性的问题,我们非常希望 Workbench 的出现能够给大家带来一个新的使用方式和新的视角,让大家在用一个数据库的时候,能够用更加简单、更加直观、更加高效的方式去和 IoTDB 进行交互。还是那句话,让底层的数据库变得更加的简单好用,是我们最终的愿景。好,我今天的分享就到这,谢谢大家。
评论