Grafana 后端插件,使用无头浏览器 (Chromium) 将渲染面板和仪表板处理为 PNG。
该插件与 Node.js 运行时和 Chromium 浏览器打包在单个可执行文件中。这意味着您不需要在系统中安装 Node.js 和 Chromium 即可让插件运行。
但是,Chromium 浏览器依赖于某些库。如果您的系统中没有安装所有这些库,则在尝试渲染图像时可能会看到一些错误。有关包括故障排除帮助在内的更多信息,请参阅 Grafana 图像渲染文档。
渲染图像需要大量内存,主要是因为 Grafana 在后台创建浏览器实例以进行实际渲染。我们建议系统渲染图像至少有 16GB 的可用内存。
并行渲染多个图像需要更大的内存占用。您可以使用远程渲染服务在远程系统上渲染图像,因此您的本地系统资源不会受到影响。
您可以使用 Grafana CLI(推荐方式)或 Grafana Docker 映像安装插件。
grafana-cli plugins install grafana-image-renderer
该插件与当前的 Grafana Docker 镜像不兼容,需要额外的系统级依赖项。我们建议设置另一个 Docker 容器进行渲染并使用远程渲染。有关说明,请参阅在 Docker 中运行。
如果您仍想使用 Grafana Docker 映像安装插件,请参阅 Grafana Docker 文档中有关构建自定义 Grafana 映像的说明。
注意:需要互联网连接。
您可以将此插件作为远程 HTTP 渲染服务运行。在此设置中,Grafana 通过向远程渲染服务发出 HTTP 请求来渲染图像,远程渲染服务反过来渲染图像并将其在 HTTP 响应中返回给 Grafana。
您可以使用 Docker 或作为独立的 Node.js 应用程序运行远程 HTTP 渲染服务。
Grafana Docker 镜像发布在 Docker Hub 上。
以下示例展示了如何使用 Docker Compose 在两个单独的 Docker 容器中运行 Grafana 和远程 HTTP 渲染服务。
创建包含以下内容的docker-compose.yml
:
version : ' 2 '
services :
grafana :
image : grafana/grafana:latest
ports :
- ' 3000:3000 '
environment :
GF_RENDERING_SERVER_URL : http://renderer:8081/render
GF_RENDERING_CALLBACK_URL : http://grafana:3000/
GF_LOG_FILTERS : rendering:debug
renderer :
image : grafana/grafana-image-renderer:latest
ports :
- 8081
接下来,运行 docker compose。
docker-compose up
以下示例描述了如何将远程 HTTP 渲染服务作为独立的 Node.js 应用程序构建和运行,并正确配置 Grafana。
克隆 Grafana 图像渲染器插件 Git 存储库。
安装依赖项并构建:
yarn install --pure-lockfile
yarn run build
运行服务器:
node build/app.js server --port=8081
更新 Grafana 配置:
[rendering]
server_url = http://localhost:8081/render
callback_url = http://localhost:3000/
重新启动格拉法纳。
对渲染端点的访问仅限于提供身份验证令牌的请求。该令牌应在 Grafana 配置文件和渲染器配置文件中配置。当您在远程渲染模式下运行插件时,此令牌非常重要,以避免未经授权的文件泄露(请参阅 CVE-2022-31176)。
请参阅 Grafana 图像渲染文档来配置此秘密令牌。默认值-
在您开始使用时在 Grafana 和图像渲染器上进行配置,但我们强烈建议您将其更新为更安全的值。
有关可用的配置设置,请参阅 Grafana 图像渲染文档。
有关故障排除帮助,请参阅 Grafana 图像渲染故障排除文档。
为了运行图像渲染器自动化测试套件,您需要从根文件夹运行以下命令:
yarn test
这将在 Docker 中启动 Grafana 实例,然后运行测试套件。
笔记:
如果参考图像文件(位于/tests/testdata
)中有一些预期的更改,请运行yarn test-update
并推送更新的参考。
如果测试失败并且您想查看获得的图像与参考图像之间的差异,请运行yarn test-diff
。这将在/tests/testdata
文件夹中生成包含差异的图像(称为diff_
)。
如果测试在您的本地环境中成功,但在无人机中失败。您可以按照以下步骤在类似于 Drone pipeline 的环境中运行测试。这会将grafana-image-renderer
存储库的本地文件挂载到 Docker 映像中,以便 Docker 映像中发生的任何更改都将在您的本地环境中可用。这允许您在 Docker 中运行yarn test-diff
和yarn test-update
并在本地查看结果。
cd ./devenv/docker/drone
docker-compose up
drone-docker-puppeteer
容器中打开终端并运行以下命令: cd /drone/src
PUPPETEER_CACHE_DIR=/drone/src/cache yarn install --frozen-lockfile --no-progress
PUPPETEER_CACHE_DIR=/drone/src/cache CI=true yarn test-ci
注意:在 Docker 容器中测试可能需要更长的时间。如果遇到超时问题,可以使用--testTimeout option
运行测试命令:
PUPPETEER_CACHE_DIR=/drone/src/cache CI=true yarn test-ci --testTimeout=10000