官方配置文档在这里:https://grafana.com/docs/grafana/latest/setup-grafana/image-rendering/ 使用方式有两种,一种是直接在 grafana 机器上安装插件,另一个是使用外挂渲染器的方式。
部署渲染器 grafana-image-renderer
官方有现成的镜像,也可以不用自己构建镜像: grafana/grafana-image-renderer:3.12.3
我的 grafana 是运行在 kubernetes 里的,所以选择用外挂渲染器的方法。渲染器核心用的是 Puppeteer,根据官网文档安装依赖包:https://pptr.dev/troubleshooting#chrome-doesnt-launch-on-linux ,另外增加了中文字体包,解决了中文显示框框的问题。最终的渲染器镜像 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 49 50
| FROM node:22.14.0 RUN git clone --depth 1 https://github.com/grafana/grafana-image-renderer.git /app && \ cd /app && \ yarn install --pure-lockfile && \ yarn run build RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources && \ apt-get update && \ apt-get install -y \ ca-certificates \ fonts-liberation \ libasound2 \ libatk-bridge2.0-0 \ libatk1.0-0 \ libc6 \ libcairo2 \ libcups2 \ libdbus-1-3 \ libexpat1 \ libfontconfig1 \ libgbm1 \ libgcc1 \ libglib2.0-0 \ libgtk-3-0 \ libnspr4 \ libnss3 \ libpango-1.0-0 \ libpangocairo-1.0-0 \ libstdc++6 \ libx11-6 \ libx11-xcb1 \ libxcb1 \ libxcomposite1 \ libxcursor1 \ libxdamage1 \ libxext6 \ libxfixes3 \ libxi6 \ libxrandr2 \ libxrender1 \ libxss1 \ libxtst6 \ lsb-release \ wget \ xdg-utils \ fonts-noto-cjk \ ttf-wqy-zenhei && \ fc-cache -f -v && \ apt clean all WORKDIR /app CMD ["node", "build/app.js", "server"]
|
部署在 kubernetes 中,yml 文件如下:
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
| kind: Deployment apiVersion: apps/v1 metadata: name: grafana-image-renderer namespace: ops spec: replicas: 1 selector: matchLabels: app: grafana-image-renderer template: metadata: labels: app: grafana-image-renderer spec: containers: - name: grafana-image-renderer image: registry.cn-hangzhou.aliyuncs.com/iuxt/grafana-image-renderer:3 env: - name: HTTP_HOST value: "0.0.0.0" - name: HTTP_PORT value: "80" resources: limits: cpu: 2 memory: 2Gi requests: cpu: 2 memory: 2Gi imagePullPolicy: IfNotPresent restartPolicy: Always terminationGracePeriodSeconds: 30 dnsPolicy: ClusterFirst --- kind: Service apiVersion: v1 metadata: name: grafana-image-renderer namespace: ops spec: ports: - protocol: TCP port: 80 targetPort: 80 selector: app: grafana-image-renderer type: ClusterIP
|
Grafana 接入渲染器
容器运行的 grafana 接入 渲染器,增加这两个环境变量
1 2 3 4
| - name: GF_RENDERING_SERVER_URL value: http://grafana-image-renderer/render - name: GF_RENDERING_CALLBACK_URL value: http://grafana:3000/
|
在对应的面板,点击分享 就可以拿到渲染后的图像链接,浏览器打开可以拿到对应的图片。
