上周机房突然收到告警,客户的5000台智能电表数据传输中断。排查后发现是自研的数据采集系统扛不住并发了。老板问:有没有成熟的开源方案?我说:有,而且还免费。
源码下载:
thingsboard-master.zip
(30.03 MB, 下载次数: 2)
这玩意儿是干什么的
ThingsBoard 是个开源的物联网平台,说白了就是帮你管理海量设备、收集数据、做可视化的工具。不管你是做智能工厂、环境监测还是车联网,它都能搞定。
最关键的是,它已经在 GitHub 上拿到了 19.9k 的 star,这意味着有一大堆人在用,踩过的坑基本都填平了。
架构设计很讲究
作为运维,我最关心的是系统能不能扛住压力。看了源码后发现,这个项目的架构设计挺有意思:
分层清晰:传输层、业务层、数据层完全解耦。MQTT、CoAP、HTTP 这些协议各走各的通道,互不干扰。
微服务化:规则引擎、设备管理、数据存储都是独立模块,可以单独扩容。比如数据写入压力大,就加几个 Transport 节点;查询慢,就扩 API 服务。
存储灵活:时序数据用 Cassandra 或 TimescaleDB,元数据用 PostgreSQL,缓存走 Redis。该快的快,该稳的稳。
十分钟跑起来
别看功能多,部署其实很简单。我在测试机上试了一遍:
# 创建数据目录
mkdir -p ~/.mytb-data ~/.mytb-logs
sudo chown -R 799:799 ~/.mytb-data ~/.mytb-logs
# 一条命令启动
docker run -d -p 8080:9090 -p 1883:1883 \
-v ~/.mytb-data:/data \
-v ~/.mytb-logs:/var/log/thingsboard \
--name mytb --restart always \
thingsboard/tb-postgres
等个两分钟,浏览器打开 http://localhost:8080
,用 tenant@thingsboard.org
/ tenant
登录,界面就出来了。
接下来模拟设备发数据。我用 mosquitto 发了条 MQTT 消息:
# 先在界面创建设备,拿到 ACCESS_TOKEN
mosquitto_pub -h localhost -p 1883 \
-t "v1/devices/me/telemetry" \
-u "你的设备TOKEN" \
-m '{"temperature":28.5,"humidity":65}'
刷新页面,数据立马出现在设备详情里。然后拖几个图表组件到仪表板,温度曲线、湿度柱状图,几分钟就搞定一个监控大屏。
规则引擎是亮点
最让我惊喜的是规则引擎。以前做告警都要写代码,现在直接拖拽节点就行。
比如温度超过 30 度发邮件:
- 添加一个"过滤器"节点,条件是
temperature > 30
- 连接一个"发送邮件"节点,配置收件人
- 保存规则链,实时生效
整个过程可视化操作,不用重启服务。数据流转路径也一目了然:设备 → 过滤 → 转换 → 动作 → 外部系统。
对接 Kafka、RabbitMQ 也是同样的逻辑,拖个节点配置一下就完事。
生产环境怎么部署
测试环境跑 Docker 没问题,但生产环境肯定要上 Kubernetes。官方提供了 Helm Chart,改几个参数就能用:
# values.yaml 关键配置
replicaCount: 3 # 三副本高可用
resources:
requests:
memory: 2Gi
cpu: 1000m
limits:
memory: 4Gi
cpu: 2000m
database:
type: postgres
host: postgres-cluster.default.svc
kafka:
enabled: true
replicaCount: 3
然后配置 Ingress、配置监控、对接日志系统。整套流程下来,一个能扛百万级设备的平台就起来了。
监控和排障
运维最怕的是系统出问题找不到原因。ThingsBoard 在这方面做得不错:
- Prometheus 指标:暴露了消息吞吐量、API 延迟、连接数等核心指标
- 审计日志:每个操作都有记录,谁改了什么配置一查便知
- 健康检查:K8s 的 liveness 和 readiness 探针都支持
我一般会配合 Grafana 做个监控面板,重点关注:
- MQTT 连接数突增(可能有设备异常)
- 消息堆积(Kafka 消费跟不上)
- API 响应时间 P99(用户体验指标)
适合哪些场景
从实际使用来看,这几类需求特别合适:
智能工厂:几千台设备实时上报数据,SCADA 界面监控生产线状态。
环境监测:分布式传感器采集温湿度、PM2.5,超标自动告警。
能源管理:电表、水表数据采集,生成用能分析报表。
车队管理:GPS 定位、油耗监控、车辆轨迹回放。
如果你的业务涉及大量设备接入、实时数据处理、可视化展示,那 ThingsBoard 基本能覆盖 80% 的需求。剩下 20% 可以通过插件或二次开发解决。
几个坑要注意
没有完美的系统,用下来也发现一些问题:
- 内存占用:默认配置比较吃内存,生产环境建议 4G 起步
- 升级谨慎:大版本升级可能涉及数据库迁移,一定要先备份
- 文档分散:社区版和专业版文档混在一起,有时候要仔细分辨
不过这些都是可以接受的,毕竟是开源项目,遇到问题社区响应也挺快。
写在最后
作为运维,我们的目标是让系统稳定运行,让部署简单高效。ThingsBoard 提供了一个不错的起点,省去了从零搭建的时间。
当然,工具只是工具,真正的稳定性还是要靠对架构的理解、对监控的重视、对故障的快速响应。
如果你也在做物联网相关的项目,不妨试试这个平台。反正是开源的,跑起来看看效果,不合适再换也不亏。
关注《云栈运维云原生》,我们一起让系统永不宕机 🚀
项目地址
GitHub: https://github.com/thingsboard/thingsboard
官方资源
文档: https://thingsboard.io/docs/
在线演示: https://demo.thingsboard.io/
标签:#ThingsBoard #GitHub #物联网平台 #微服务架构 #开源项目 #云原生 #DevOps