grafana 通过 panel plugin 插件机制支持 echarts 等自定义图表,需创建 type 为 "panel" 的插件,引入 echarts 按需模块并实现数据映射与渲染逻辑,本地开发需启用插件管理并正确配置目录权限。

Grafana 本身不直接内置 ECharts、自定义饼图或复杂统计图表,但通过插件机制可以完整扩展图表能力。核心路径是开发或安装面板插件(Panel Plugin),而非 App 插件或数据源插件——因为图表渲染属于「可视化层」,由面板类型决定。
明确插件类型:选 Panel Plugin,不是 App 或 Data Source
面板插件专用于新增图表类型,比如一个支持双层环形图、桑基图或地理热力图的组件。它独立于数据源,可搭配 Prometheus、InfluxDB、Elasticsearch 等任意后端使用。
- 面板插件输出一个 React/Vue 组件,接收查询结果并渲染图形
- Grafana 运行时会自动识别
plugin.json中的"type": "panel"并注册为新图表选项 - 无需修改 Grafana 源码,也不依赖服务端逻辑
快速集成 ECharts 的典型流程
多数自定义图表基于 ECharts 实现,因其配置灵活、生态成熟。关键步骤如下:
-
创建插件骨架:用官方 CLI 初始化
grafana-toolkit create-plugin --type=panel my-echarts-panel -
引入 ECharts:推荐按需加载(避免打包全部图表),例如:
import * as echarts from 'echarts/lib/echarts';import 'echarts/lib/chart/pie';import 'echarts/lib/component/tooltip'; -
实现渲染逻辑:在
PanelProps的render方法中初始化实例,监听尺寸变化并重绘 -
处理数据映射:将 Grafana 查询返回的
Frame结构(含字段名、数值、标签)转换为 ECharts 所需的series.data和legend.data -
暴露配置项:通过
options接口添加主题色、动画开关、label 格式等 UI 控制项
安装与调试注意事项
本地开发阶段必须启用开发者模式,否则插件不会加载:
- 启动 Grafana 时加参数:
grafana-server --homepath=/usr/share/grafana --config=/etc/grafana/grafana.ini --enable-plugin-admin - 确保
plugins目录权限正确(如/var/lib/grafana/plugins/),且插件目录名与plugin.json中id一致 - 每次修改代码后执行
npm run dev(或yarn dev),Grafana 会热更新面板预览 - 浏览器控制台检查是否报
Failed to load plugin—— 常因 TypeScript 编译错误或缺少module.exports导出导致
已有成熟方案可直接复用
不必从零造轮子。社区已提供稳定可用的 ECharts 面板插件:
- grafana-echarts-panel:支持折线、柱状、饼图、散点等 10+ 图表类型,兼容 Grafana v9–v11
- polystat-panel:适合多指标聚合展示(如服务健康状态矩阵),非 ECharts 但高度可定制
- Tencent Cloud APM 插件:自带多维指标视图,其图表逻辑可参考学习
下载后解压到 plugins 目录,重启 Grafana 即可在「Add panel → Visualization」中看到新选项。











