Grafana生产模式app_mode是否无法加载data/plugins目录下的未签名插件?
Grafana v8.2.3生产模式已配置
allow_loading_unsigned_plugins仍无法加载自定义插件的原因及解决方案 核心原因
- 生产模式强制要求完整构建产物:Grafana v8.x开发模式支持热加载、实时编译,可直接读取源码目录下的未构建资源;但生产模式只会读取插件目录下
dist文件夹内的正式构建产物,若插件未执行构建命令生成完整的dist目录,会直接判定加载失败。 - 权限校验规则差异:开发模式通常由执行启动命令的用户(多为root或个人用户)运行,对插件目录的读取权限要求宽松;生产模式下Grafana默认以
grafana系统用户运行,若插件目录的所属用户/权限配置错误,grafana用户无法读取插件文件就会加载失败。 - plugin.json校验严格度差异:开发模式对插件配置文件
plugin.json的容错性更高,缺失非核心字段、存在语法小错误都能兼容加载;生产模式会严格校验所有必填字段合法性,只要配置不符合规范就会拦截加载。 - 静态资源哈希校验:生产模式会校验插件静态资源的manifest哈希值,匹配失败就拒绝加载;开发模式不会触发该校验,修改代码后未重新构建就部署到生产环境,会出现哈希不匹配问题。
解决方案
- 完成插件正式构建:进入自定义插件源码目录,执行
npm install && npm run build,确认生成完整的dist目录后,将整个插件目录上传到Grafana默认插件路径/var/lib/grafana/plugins/,保证插件目录名与plugin.json中配置的id完全一致。 - 修正插件目录权限:在Linux终端执行
sudo chown -R grafana:grafana /var/lib/grafana/plugins/<你的插件目录名>,同时将目录权限设置为755、文件权限设置为644,确保grafana用户有完整的读取权限。 - 校验
plugin.json配置:确认配置文件无JSON语法错误,必填字段(id、type、name、info.version等)完整,不要手动添加signature相关字段,未签名插件不需要配置该内容。 - 重启服务并清除前端缓存:配置完成后执行
sudo systemctl restart grafana-server重启服务,Chrome端按Ctrl+Shift+R强制刷新清除静态资源缓存,再查看插件加载状态。 - 日志排查定位问题:若仍加载失败,查看Grafana运行日志
/var/log/grafana/grafana.log中的插件加载相关报错,根据错误信息针对性调整。
内容的提问来源于stack exchange,提问作者xiaosage
相关产品推荐
相关产品推荐

