概述
grafana-image-renderer 这个插件安装之后,Grafana 支持通过 API 将 dashboard 导出成图片,不过官方镜像并没有直接将 grafana-image-renderer 插件安装进去,原因可能是图片渲染插件依赖很多系统的 lib 包,会让 Grafana 的镜像变得很大,甚至官方提供了 grafana-image-renderer 插件的 server 版本,支持 Grafana 通过配置远程的 render 服务将 dashboard 渲染成图片。
当前的考虑还是不独立维护一个 render 的 server 了,所以需要重新打一下 Grafana 的镜像,虽然官方提供了一个 Dockerfile 从源码开始打,但考虑到过程比较复杂,我们可以直接基于 Grafana 的官方镜像进行 grafana-image-renderer 依赖的补充安装。
构建镜像
为了在私有化环境配置好 renderer 插件,这里我提供一个可以成功安装 grafana-image-renderer 及其依赖的 Dockerfile,感兴趣的读者可以按照这个 Dockerfile 构建自己的镜像。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# docker buildx build --platform linux/amd64 -t runzhliu/grafana:11.4.0-with-renderer .
# FROM grafana/grafana:11.4.0-ubuntu
FROM grafana/grafana:12.0.2
USER root
# 安装缺失的依赖库
RUN apt-get update -y && apt-get install -y \
libstdc++6 \
libglib2.0-0 \
libnss3 \
libx11-xcb1 \
libxcomposite1 \
libxrender1 \
libxrandr2 \
libxi6 \
libxcursor1 \
libxtst6 \
libpangocairo-1.0-0 \
libpangoft2-1.0-0 \
libcairo2 \
libatk1.0-0 \
libatk-bridge2.0-0 \
libxdamage1 \
libxext6 \
libxfixes3 \
libfontconfig1 \
libfreetype6 \
libjpeg62 \
libpng16-16 \
libglib2.0-data \
shared-mime-info \
fonts-liberation \
libnss3 \
libxcomposite1 \
libxrandr2 \
libxi6 \
libatk-bridge2.0-0 \
libcups2 \
libxdamage1 \
libgbm1 \
libasound2 \
libpangocairo-1.0-0 \
libgtk-3-0 \
libxkbcommon0 \
fonts-noto-cjk \
libharfbuzz-icu0 && \
apt-get clean && rm -rf /var/lib/apt/lists/*
RUN grafana-cli plugins install grafana-image-renderer
|
API渲染
可以通过 Grafana 的 API,将某个图表渲染成图片,下面是示例的 URL,用户可以根据需要,选择要渲染的图表,主要是 URL 中的 /render/d-solo/
后面对应的是图表的 id,还可以根据 width
和 height
等参数生成图片。
1
|
http://grafana.default.svc.cat.dog/render/d-solo/detjdpfqpmtj4f?orgId=1&from=2025-07-30T17:31:17.091Z&to=2025-07-30T23:31:17.091Z&timezone=browser&panelId=panel-1&__feature.dashboardSceneSolo&width=2000&height=1000&tz=Asia%2FShanghai
|
参考资料
- grafana-image-renderer