做工业监控看板、数据可视化、要接多种数据源并告警——Grafana 是开源可视化首选(8.5分),100+数据源、20+面板;日志全文分析为主,选 Kibana;要做复杂 BI 报表/自助分析,选 Superset。
01 软件定位与适用场景
Grafana是什么:Grafana Labs开发的全球最流行的开源数据可视化和监控平台,支持100+数据源(时序数据库/关系数据库/云服务/API等),拖拽式仪表盘搭建,20+面板类型,内置统一告警系统。从IT运维监控到工业监控大屏,从IoT数据展示到业务指标看板,Grafana几乎是"实时数据可视化"的事实标准。与TDengine/InfluxDB/MySQL等数据源配合,是工业物联网方案的展示层首选。
核心设计哲学:①"The open platform for beautiful analytics and monitoring"——开放的分析和监控平台;②一次配置,多数据源查询——一个仪表盘可以同时查TDengine、MySQL、Prometheus的数据并展示在一起;③Dashboard as Code——仪表盘可以导出为JSON,支持版本管理和自动化部署;④插件化架构——面板、数据源、应用都可以通过插件扩展。
- 工业监控大屏(设备状态/产量/报警实时展示)
- IT运维监控(服务器/应用/网络指标监控)
- IoT数据展示(传感器数据实时可视化)
- 实时仪表盘(生产看板/安灯系统/能耗看板)
- 告警通知(阈值告警/异常检测/多渠道通知)
- 多数据源统一展示(一个看板看所有系统数据)
- 非技术人员自助分析(拖拽式,不用写代码)
- 开源需求/预算有限(社区版免费,功能足够)
- 复杂BI报表(交叉表/多维分析/复杂计算)——用Superset/Tableau
- 像素级定制报表/精美PDF导出——用传统BI工具
- 日志全文检索/日志分析——用Kibana(ELK栈)
- 事务型业务系统(订单/财务/审批)——Grafana是展示层不是业务系统
- 需要复杂数据建模/ETL——Grafana只做查询和展示,不做数据处理
- 大量用户并发(>200)——单实例性能有限,需要企业版集群
- 需要SLA保障的核心系统——开源版无官方支持,出问题靠社区
- AGPL协议敏感的商用产品——注意开源协议传染性
02 丁丁的实战体验
用了多久:36个月(2023年10月开始,从7.x升级到8.x/9.x/10.x/11.x,经历了告警系统大改版)
用在哪些项目:
- 30台冲床监控:总览大屏(30台设备状态/产量/报警)+设备详情页(实时曲线/历史趋势/OEE),Grafana是核心展示层
- 能源管理:能耗看板(实时功率/日用电量/分时电价分析/同比环比),Grafana做可视化
- OEE分析:OEE三要素看板(可用率/性能率/合格率)+停机原因分析+瓶颈识别,Grafana展示
- 安灯系统:车间实时大屏(工位状态/异常呼叫/响应统计),Grafana做生产看板
整体感受:Grafana是我用过的最省心的可视化工具,没有之一。数据源支持极广(TDengine/InfluxDB/MySQL都能接),面板类型丰富(时序图/统计/仪表盘/表格/热力图),拖拽式布局搭仪表盘很快,非技术人员也能上手。告警系统虽然配置复杂,但配好后非常稳定可靠。社区极其活跃,遇到问题基本都能搜到答案。
但也有明显短板:复杂仪表盘配置繁琐(变量联动坑多)、大量数据查询需要手动优化(不然卡死)、告警配置复杂(误报漏报常见)、权限管理容易混乱、社区插件质量参差不齐。我的经验是:Grafana适合做"展示层",不适合做"计算层"——复杂计算和数据处理放在数据库或微服务里做,Grafana只负责查询和展示,这样既享受Grafana的可视化能力,又避免了它的性能瓶颈。
👍 优点
- 全球最流行的开源可视化工具,社区极其活跃,问题都能搜到答案
- 支持100+数据源(TDengine/InfluxDB/MySQL/Prometheus等),一个平台看所有数据
- 面板类型丰富(时序图/统计/仪表盘/表格/热力图/状态面板等20+种)
- 拖拽式布局,仪表盘搭建快,非技术人员也能上手
- 告警系统强大,支持阈值告警/无数据告警/多渠道通知(钉钉/邮件/webhook)
- Dashboard JSON可导出导入,版本管理和迁移方便
👎 缺点
- 复杂仪表盘配置繁琐,变量联动(级联选择)坑多,经常不刷新
- 大量数据查询慢,时序图拉取1年数据会卡死,需要手动配置降采样
- 告警配置复杂,无数据处理/告警恢复/通知渠道容易配错,误报漏报常见
- 权限管理(组织/文件夹/面板三级)容易混乱,团队协作时权限配置头疼
- 社区插件质量参差不齐,有的不维护、有的有bug、生产环境用有风险
- BI能力弱,复杂交叉表/报表导出/像素级定制不如传统BI工具
03 核心功能演示
# 常用数据源
TDengine # 国产时序数据库
InfluxDB # 时序数据库
MySQL # 关系数据库
PostgreSQL # 关系数据库
Prometheus # 监控指标
Elasticsearch # 搜索引擎
Loki # 日志聚合
REST API # 任意HTTP接口
# 一个面板可以混合查询
A = TDengine查询设备状态
B = MySQL查询产品信息
在同一个表格中展示A+B # 常用面板类型
Time series # 时序折线图(最常用)
Stat # 大数字统计(当前值/变化率)
Gauge # 仪表盘(指针式,适合阈值展示)
Bar chart # 柱状图
Pie chart # 饼图(官方插件)
Table # 数据表格
Heatmap # 热力图(适合密度分析)
State timeline # 状态时间线(设备状态展示)
Status history # 状态历史(网格状状态展示)
Text # 文本/Markdown说明 # 变量类型
Query # 从数据源查询获取选项列表
Custom # 手动输入选项
Text box # 文本输入
Interval # 时间间隔选择
Data source # 数据源选择
# 级联变量示例
$workshop = SELECT DISTINCT workshop FROM devices
$device = SELECT DISTINCT device FROM devices
WHERE workshop IN ($workshop)
# 选了车间后,设备列表自动刷新 # 告警规则
条件: A > 100 (持续1分钟)
评估间隔: 30秒
无数据处理: Alerting (断网也报警)
# 通知渠道
钉钉 webhook
邮件 (SMTP)
企业微信 webhook
Slack
PagerDuty
Webhook (自定义)
# 告警分级
P1 紧急 - 5分钟通知+电话
P2 重要 - 15分钟通知
P3 一般 - 只记录 04 5个真实踩坑(每个都花了时间和钱)
05 性能实测数据(2核4G ECS,冲床监控主仪表盘)
- 服务器:阿里云ECS g7,2核4G,Ubuntu 22.04,Grafana 11.x
- 数据源:TDengine 3.3.x(同机部署),600点位,每秒1条数据
- 主仪表盘:15个面板(时序图/统计/表格/状态面板),2个级联变量
- 查询优化:所有查询都做了降采样(用$__interval变量),长周期用预计算表
- 测试时长:连续运行7天,取平均值
- 结论:2核4G服务器跑Grafana+TDengine完全无压力,10个用户同时访问流畅。如果用户超过50+或仪表盘特别复杂(>30面板),建议升级到4核8G。
06 vs Kibana / Superset 深度对比(10个维度)
| 对比维度 | Grafana 11.x | Kibana | Apache Superset | 胜出 |
|---|---|---|---|---|
| 定位 | 通用数据可视化/监控 | Elasticsearch日志分析 | BI分析/数据探索 | 各有侧重 |
| 数据源支持 | 100+(最广) | 主要Elasticsearch | 30+(SQL类为主) | Grafana |
| 实时监控 | 极强(时序图/告警) | 中(日志实时流) | 弱(偏离线分析) | Grafana |
| BI报表能力 | 弱(简单表格) | 中(日志聚合报表) | 强(交叉表/复杂计算) | Superset |
| 上手难度 | 低(拖拽式) | 中(需学KQL/Lucene) | 中(需学SQL) | Grafana |
| 告警系统 | 强(统一告警/多渠道) | 中(基于Elastic告警) | 弱(基本无告警) | Grafana |
| 日志分析 | 弱(需配合Loki) | 极强(ELK标配) | 无 | Kibana |
| 部署复杂度 | 低(单二进制/Docker) | 中(需Elasticsearch) | 中(需元数据库) | Grafana |
| 开源协议 | AGPL 3.0 | Elastic License(非完全开源) | Apache 2.0 | Superset |
| 社区生态 | 极大(最流行) | 大(ELK用户) | 中(增长快) | Grafana |
📊 对比总结
Grafana胜出的维度(6项):数据源支持、实时监控、上手难度、告警系统、部署复杂度、社区生态
Kibana胜出的维度(1项):日志分析(ELK栈无可替代)
Superset胜出的维度(2项):BI报表能力、开源协议(Apache 2.0最宽松)
丁丁的结论:这三者不是替代关系,而是互补关系。工业监控/实时大屏选Grafana,日志分析选Kibana,复杂BI报表选Superset。很多企业是三者并用:Grafana做实时监控大屏,Kibana做日志分析,Superset做管理报表。不要用一个工具打天下,各取所长才是最佳架构。
07 选型建议(什么场景选什么)
- 工业监控大屏/设备状态实时展示
- IT运维监控/服务器指标监控
- IoT数据实时可视化
- 生产看板/安灯系统/能耗看板
- 多数据源统一展示(一个看板看所有)
- 告警通知(阈值告警/多渠道通知)
- 非技术人员自助分析(拖拽式)
- 开源需求/预算有限(社区版免费)
- 日志全文检索/日志分析
- ELK栈(Elasticsearch+Logstash+Kibana)
- 应用日志/访问日志/安全日志分析
- 日志聚合/过滤/可视化
- 基于日志的异常检测/告警
- 已经在用Elasticsearch的场景
- 需要复杂日志查询(KQL/Lucene)
- 复杂BI报表/交叉表/多维分析
- 数据探索/自助式分析
- 管理报表/经营分析/财务报表
- 需要复杂SQL查询和数据建模
- 需要导出精美PDF/Excel报表
- 数据分析师/数据团队使用
- 需要Apache 2.0宽松协议
- 大数据量BI分析(配合Spark/Presto)
08 部署要点(6步上手指南)
安装Grafana
Ubuntu/Debian:apt-get install -y adduser libfontconfig1 musl,然后wget下载deb包,dpkg -i安装,systemctl start grafana-server启动。Docker:docker run -d --name=grafana -p 3000:3000 grafana/grafana。默认端口3000,默认账号admin/admin(首次登录强制改密码)。生产环境建议用apt安装,方便升级和服务管理
基础配置
编辑/etc/grafana/grafana.ini:①server段改http_port(默认3000,生产建议改)和domain;②security段改admin_password(首次登录后也能在界面改);③auth.anonymous段可开启匿名访问(监控大屏常用);④dataproxy段配置超时时间(默认30秒,大量数据查询建议调到120秒);⑤log段配置日志级别和路径。修改后systemctl restart grafana-server生效
配置数据源
左侧菜单→Connections→Data sources→Add data source。常用数据源:①TDengine:选TDengine插件,配置URL http://localhost:6041,数据库名,用户名密码;②InfluxDB:选InfluxDB,配置URL http://localhost:8086,Bucket/Token/Organization;③MySQL/PostgreSQL:选对应类型,配置Host/Database/User/Password;④Prometheus:配置URL http://localhost:9090。配置完点"Save & test"确认连接成功
仪表盘开发规范
①一个仪表盘一个主题(如"冲床总览"/"设备详情"/"能耗分析"),不要把所有面板塞一个仪表盘;②面板数量控制在20个以内,超过就拆分;③统一时间范围(右上角时间选择器),所有面板共享;④变量命名规范($workshop/$device/$time_range),级联变量必须在下级查询中引用上级;⑤查询必须做降采样(用$__interval变量),不要拉原始数据;⑥面板标题清晰(如"冲床001-实时状态"而不是"Panel 1");⑦Dashboard JSON定期导出备份
告警配置
①左侧菜单→Alerting→Contact points,配置通知渠道(钉钉webhook/邮件/webhook),配置完点Test测试;②Alert rules创建告警规则:选择数据源和查询,设置条件(如A > 100),设置评估间隔(建议30秒-1分钟);③Configure no data and error handling:No data设为Alerting,Error设为Alerting(断网也要报警);④Notification policies配置告警路由(哪个规则发哪个渠道,什么时间发);⑤Silences配置维护期间的告警抑制;⑥每周review告警统计,优化误报率高的规则
生产部署与备份
①Nginx反向代理:把3000端口代理到80/443,配置HTTPS;②性能优化:开启查询缓存(Grafana 10+),设置面板刷新间隔(不要5秒刷新看长周期数据),长周期用预计算表;③权限管理:多客户用不同Organization,客户用户只给Viewer,关闭Viewers can edit;④备份:仪表盘JSON导出(Dashboard设置→JSON Model→Copy),数据源配置导出,grafana.db数据库备份(/var/lib/grafana/grafana.db);⑤升级:大版本升级前先备份,检查插件兼容性,在测试环境验证后再升生产
09 用到Grafana的真实方案
常见问题 FAQ(工程师最常问)
Q:Grafana 是什么?
A:开源数据可视化和监控平台,连接数据库/数据源,用拖拽面板做仪表盘、大屏,并支持告警。
Q:Grafana 免费吗?
A:开源,AGPL 3.0,核心可视化、告警、数据源都免费;Grafana Cloud 和企业版提供托管和额外企业功能。
Q:Grafana 支持哪些数据源?
A:100 多种,时序库 TDengine、InfluxDB、Prometheus,关系库 MySQL、PostgreSQL,以及云服务,可通过插件扩展。
Q:Grafana 和 Kibana 怎么选?
A:做指标监控、时间序列看板、多数据源,选 Grafana;以 Elasticsearch 日志检索、全文分析为主,选 Kibana。
Q:Grafana 能做工业监控大屏吗?
A:可以,用时序图、状态面板、仪表盘、Stat 面板组合,配合 TDengine 等时序库,是工业监控展示层的常用方案。
Q:Grafana 告警怎么配?
A:在面板或告警规则里设阈值/无数据条件,支持钉钉、邮件、Webhook 等通知渠道,可做设备超限、离线告警。
Q:Grafana 仪表盘能迁移复用吗?
A:可以,Dashboard 导出为 JSON 再导入,支持版本管理,做好模板变量后可一套看板复用多设备。
Q:Grafana 的 AGPL 协议有什么影响?
A:自用、内网、企业内部部署不受影响;若把 Grafana 二次开发后对外提供 SaaS 服务,需注意 AGPL 开源传染性,可改用企业版或商业授权。