从数据到仪表盘——DolphinDB + Grafana 搭建工业物联网实时监控

前几篇我们分别解决了三个问题:数据存储、批处理、实时流计算。但数据价值除了体现在计算结果本身,更需要被直观地看到,也就是今天要聊的主题------可视化。

先回顾一下我们前面几篇做了什么事:

实时计算的价值不仅在于快速产出结果,更在于将结果以直观、可交互的方式呈现,帮助运维人员实时掌握设备运行状态并快速定位异常。今天作为本系列收官篇,要解决的核心问题是:数据怎么变成可视化的监控面板?

本篇我们采用 Grafana。Grafana 是常用的开源可视化与监控平台,配合 DolphinDB Grafana 数据源插件,可以直接查询流表、实时计算结果表或物化视图中的数据,构建支持自动刷新、趋势分析和告警联动的监控仪表盘。

今天就结合两个我在实验中跑通的案例,带大家从零搭建一个物联网可视化监控面板。

前置准备

我的实验环境如下,供参考:

组件 版本
Grafana 13.2.0
DolphinDB Server 3.00.5
数据源插件 dolphindb-datasource-next

配置步骤简述:

  1. 从 Grafana 官网下载安装开源版本
  2. 将 dolphindb-datasource-next 文件解压到 Grafana 插件目录Windows: <grafana 安装目录>\data\plugins\Linux: /var/lib/grafana/plugins/
  3. 在 custom.ini 中配置 allow_loading_unsigned_plugins = dolphindb-datasource-next
  4. 重启 Grafana,在 Data sources 中添加 DolphinDB 数据源,填写地址和认证信息

完整配置教程可点击 https://github.com/dolphindb/grafana-datasource-next/blob/main/README.zh.md 参考 github 文档。。

DolphinDB配置界面

案例一:实现设备指标的采集监控和展示

第一个案例来自 DolphinDB 官方教程《实现设备指标的采集监控和展示》,用 Telegraf 采集系统磁盘和运行时间数据,存入 DolphinDB 后用 Grafana 展示。

流表订阅与数据写入设计

首先创建分布式数据库 dfs://telegraf,包含两张表:disk(磁盘使用情况)和 system(系统运行时间)。

在这个案例中,外部数据源通过 API 或 Telegraf 插件写入分布式表 disk 和 system。今天我们重点关注数据写入后如何可视化展示:

bash 复制代码
// 加载分布式表
dfs_disk = loadTable("dfs://telegraf", "disk")
dfs_system = loadTable("dfs://telegraf", "system")

Grafana 通过 DolphinDB 数据源直连查询这两张表,在 Panel 中执行 SQL 即可获取数据。

Grafana 查询配置

在 Grafana Dashboard 中新建 Panel,选择 DolphinDB 数据源,输入查询语句:

bash 复制代码
dfs_disk = loadTable("dfs://telegraf","disk")
select timestamp,avg(total),avg(used),avg(free),avg(used_percent) from dfs_disk group by timestamp 

这条 SQL 把三台主机的磁盘数据按时间戳聚合,得到整体的磁盘使用趋势。

磁盘总容量、已用容量、可用容量及使用率随时间变化的趋势图

鼠标点击想要具体查看的指标,滑动选取时间间隔,即可非常方便的查询磁盘具体情况。

磁盘已用容量随时间变化图

磁盘使用率随时间的变化趋势图

案例二:振动传感器 RMS 实时监控面板

第二个场景是旋转机械振动监测:16 台振动传感器,每台以 1ms 间隔采集加速度数据,系统实时计算 RMS(有效值)并判断是否超限。

这个案例在第三篇(流计算)中已经实现,当时我们创建了流计算链路:

  • vibration_raw 接收原始加速度数据
  • 时序聚合引擎每秒计算 RMS,输出到 vibration_rms

现在要做的是:把可视化表的数据搬到 Grafana 面板上。

查询配置

面板1:单设备 RMS 实时曲线

bash 复制代码
select * from vibration_rms where deviceID='deviceID_1'

选择 Time series 图表类型,X 轴用 timestamp,Y 轴用 rms。数据会随着流表持续写入而自动刷新。

查看设备1的RMS值随时间的变化

面板2:所有设备最新 RMS 状态

bash 复制代码
select * from vibration_rms 
context by deviceID 
csort timestamp desc 
limit 1

用 Bar gauge 或 Table 面板展示,可以快速看到每台设备当前的 RMS 值。

查看每台设备最新的RMS值

搭建完整 Dashboard

把以上 Panel 组合到一个 Dashboard 中:

小结

回顾这个系列的四篇文章,我们把物联网数据处理的全链路走了一遍:

篇目 主题 核心关注点
第一篇 数据建模与接入 1万传感器、日增3000万条数据,怎么存
第二篇 批计算 存下来之后,怎么算出业务指标
第三篇 流计算 数据一到就要发现,怎么实时告警
第四篇(本篇) 可视化 结果怎么呈现,怎么变成监控面板

可视化是数据价值的最终呈现环节。通过 Grafana + DolphinDB 的组合,我们可以快速搭建工业物联网监控面板:流表数据实时刷新、历史数据趋势回放、多设备对比分析------覆盖了从实时监控到历史分析的全场景。

下一步,你可以在自己的环境中动手尝试使用 Grafana 进行数据可视化,探索更多功能!数据有了、面板有了,接下来就看你怎么让这些数据真正服务于生产运维了。

相关推荐
艾络迅Acceleronix13 小时前
环境监测终端:STM32+EG800Z AT+ 艾络迅平台实战|多传感器采集联动全流程
c语言·stm32·单片机·嵌入式硬件·物联网·1024程序员节
武雄(小星Ai)15 小时前
智能家居云依赖排坑:从 Nest 温控器被远程“变砖“到 Home Assistant 自托管救赎
物联网·智能家居·架构设计·homeassistant
星恒讯工业路由器19 小时前
Modbus透传和Modbus网关有什么区别?从字节转发到协议翻译的选型思路
网络·物联网·modbus·工业物联网·工业网关·rs485·协议转换
李永奉19 小时前
杰理可视化SDK开发-音频录制功能使用教程
笔记·单片机·嵌入式硬件·mcu·物联网·音视频
钱工的门窗技术笔记20 小时前
铝木复合门窗中木材的角色分类与界面可分解性:结构判定、失效路径与维护设计
网络·物联网·数据分析
艾络迅Acceleronix20 小时前
气象监测:STM32+EG800Z AT + 艾络迅平台实战|气压/光照/雨量采集全流程
stm32·单片机·嵌入式硬件·mcu·物联网·1024程序员节
注塑机数据采集联网20 小时前
中科晟达注塑机 MES 系统:从车间到数字化的智能制造实践
大数据·数据仓库·人工智能·物联网·制造·数据库架构
李永奉21 小时前
杰理可视化SDK开发-【BUG】AC7006F8芯片开启一拖二和双麦DNS通话算法后,大概率通话时蓝牙自动断连,RAM空间爆了问题处理
单片机·嵌入式硬件·mcu·物联网·电脑·bug
vortex521 小时前
IoT 安全剖析:从消费级摄像头到车联网的攻击面全景
物联网·struts·安全
IT规划师1 天前
MQTT实战 - MQTT Broker选型,EMQX vs Mosquitto,我用过的真实对比(八)
物联网·mqtt·.net core·mqttnet