根本原因是Grafana告警邮件中的图表图片使用了localhost或内网地址等不可达路径,必须配置正确的root_url(如https://grafana.your-company.com/)并确保grafana-image-renderer插件正常运行、通知渠道启用“Include image”,最后通过测试邮件和日志验证端到端流程。

根本原因是Grafana生成的告警邮件中,图表图片使用的是相对路径或默认域名(如 http://localhost:3000),而收件人无法访问该地址。必须显式配置正确的、外部可访问的 Root URL,让 Grafana 知道它对外的服务入口。
确认并设置正确的 root_url
Grafana 的 root_url 决定了所有邮件内链接(包括图片渲染 URL)的前缀。它不等于 SMTP 配置里的 domain,也不是仪表盘里显示的访问地址,而是 Grafana 服务对外暴露的完整基础地址。
- 编辑
/etc/grafana/grafana.ini - 找到
[server]区块,修改或取消注释以下行:
[server] root_url = https://grafana.your-company.com/
- 必须以
http://或https://开头,结尾带斜杠/ - 不能是
localhost、127.0.0.1或内网 IP(如172.16.x.x),除非收件人也在同一内网且能直连 - 如果使用反向代理(如 Nginx),确保该 URL 与代理配置一致,并已启用 HTTPS 重定向和证书
验证图片渲染服务是否就绪
即使 root_url 正确,若图片无法生成,链接仍会失效或返回 404。需确保:
- 已安装
grafana-image-renderer插件:grafana-cli plugins install grafana-image-renderer - 插件服务运行正常(新版 Grafana 默认嵌入 renderer,但需检查日志是否有
renderer启动失败提示) - 若用独立 renderer 服务,其
rendering_callback_url必须与 Grafana 的root_url一致 - 确保系统已安装字体和图形依赖(如
libXss、libgtk),否则截图空白或报错
检查通知渠道中的 “Include image” 设置
该选项控制是否在邮件正文中嵌入图表截图。它不是自动开启的,且新版本默认关闭:
- 进入 Alerting → Notification channels → Edit Email channel
- 勾选 Include image(注意:此项依赖 renderer 正常工作)
- 若未勾选,邮件中只含文字告警,无图;若勾选但图链失效,则问题仍在
root_url或 renderer
测试与排查要点
完成配置后,务必执行端到端验证:
- 重启服务:
systemctl restart grafana-server - 在通知渠道页面点击 Send Test,立即查收邮件,确认图片能否加载
- 查看邮件源码,检查
<img src="..." alt="如何解决Grafana由于未正确配置Root URL导致发送告警邮件中的图片链接全部失效" >中的 URL 是否为你配置的root_url+ 路径(如https://grafana.your-company.com/render/...) - 手动访问该图片 URL,确认浏览器能直接打开(HTTP 200,非 500/404)
- 检查 Grafana 日志:
journalctl -u grafana-server -f | grep -i render,留意 timeout 或 connection refused 错误

















