插件 〉Grafana 图像渲染器

渲染器
grafana

Grafana 图像渲染器

  • 概述
  • 安装
  • 更改日志
  • 相关内容

一个 Grafana 后端插件,使用无头浏览器 (Chromium) 将面板和仪表盘渲染为 PNG。

要求

支持的操作系统

  • Linux (x64)
  • Windows (x64)
  • Mac OS X (x64)

依赖项

此插件打包在一个可执行文件中,其中包含 Node.js 运行时和 Chromium 浏览器。这意味着您无需在系统中安装 Node.js 和 Chromium 即可使插件正常运行。

但是,Chromium 浏览器 依赖于某些库。如果您的系统中未安装所有这些库,则在尝试渲染图像时可能会看到一些错误。有关更多信息(包括故障排除帮助),请参阅 Grafana 图像渲染文档

内存要求

渲染图像需要大量内存,这主要是由于 Grafana 在后台创建浏览器实例以进行实际渲染。我们建议在渲染图像的系统上至少有 16GB 的可用内存。

并行渲染多个图像需要更大的内存占用空间。您可以使用远程渲染服务在远程系统上渲染图像,以便您的本地系统资源不受影响。

插件安装

您可以使用 Grafana CLI(推荐方法)或 Grafana Docker 镜像安装插件。

Grafana CLI(推荐)

grafana-cli plugins install grafana-image-renderer

Grafana Docker 镜像

此插件与当前的 Grafana Docker 镜像不兼容,并且需要其他系统级依赖项。我们建议为渲染设置另一个 Docker 容器,并改用远程渲染。有关说明,请参阅 在 Docker 中运行

如果您仍然希望使用 Grafana Docker 镜像安装插件,请参阅 Grafana Docker 文档 中有关构建自定义 Grafana 镜像的说明。

远程渲染服务安装

注意:需要互联网连接。

您可以将此插件作为远程 HTTP 渲染服务运行。在此设置中,Grafana 通过向远程渲染服务发出 HTTP 请求来渲染图像,远程渲染服务依次渲染图像并将其返回到 Grafana 的 HTTP 响应中。

您可以使用 Docker 或作为独立的 Node.js 应用程序运行远程 HTTP 渲染服务。

在 Docker 中运行

Grafana Docker 镜像发布在 Docker Hub

以下示例演示了如何使用 Docker Compose 在两个单独的 Docker 容器中运行 Grafana 和远程 HTTP 渲染服务。

  1. 创建一个包含以下内容的 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

  2. 接下来,运行 docker compose。

    docker-compose up
    

作为独立的 Node.js 应用程序运行

以下示例描述了如何构建和运行远程 HTTP 渲染服务作为独立的 Node.js 应用程序,以及如何相应地配置 Grafana。

  1. 克隆 Grafana 图像渲染插件 Git 存储库。

  2. 安装依赖项并构建

    yarn install --pure-lockfile
    yarn run build
    
  3. 运行服务器

    node build/app.js server --port=8081
    
  4. 更新 Grafana 配置

    [rendering]
    server_url = https://127.0.0.1:8081/render
    callback_url = https://127.0.0.1:3000/
    
  5. 重启 Grafana。

安全性

对渲染端点的访问仅限于提供身份验证令牌的请求。此令牌应在 Grafana 配置文件和渲染器配置文件中配置。当您在远程渲染模式下运行插件时,此令牌非常重要,以避免未经授权的文件泄露(请参阅 CVE-2022-31176)。

请参阅 Grafana 图像渲染文档 以配置此密钥令牌。当您开始使用时,Grafana 和图像渲染器上都会配置默认值 -,但我们强烈建议您将其更新为更安全的值。

配置

有关可用的配置设置,请参阅 Grafana 图像渲染文档

故障排除

有关故障排除帮助,请参阅 Grafana 图像渲染故障排除文档

测试

为了运行图像渲染自动化测试套件,您需要从根文件夹运行以下命令

yarn test

这将在 Docker 中启动 Grafana 实例,然后运行测试套件。

备注

如果参考图像文件(位于 /tests/testdata 中)有一些预期的更改,请运行 yarn test-update 并推送更新的参考。

如果测试失败并且您想查看获取的图像和参考图像之间的差异,请运行 yarn test-diff。这将在 /tests/testdata 文件夹中生成包含差异的图像(称为 diff_<test case>.png)。

修复 Drone 问题

如果测试在您的本地环境中成功但在 Drone 中失败。您可以按照以下步骤在类似于 Drone 管道的环境中运行测试。这将在 Docker 镜像中挂载 grafana-image-renderer 存储库的本地文件,因此 Docker 镜像中发生的任何更改都将在您的本地环境中可用。这允许您在 Docker 中运行 yarn test-diffyarn test-update 并查看本地结果。

  1. 在 Docker 中运行 Drone 环境
cd ./devenv/docker/drone
docker-compose up
  1. 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 选项 运行测试命令

PUPPETEER_CACHE_DIR=/drone/src/cache CI=true yarn test-ci --testTimeout=10000

在 Grafana Cloud 上安装 Grafana Image Renderer

有关更多信息,请访问有关 插件安装 的文档。

3.11.5 (2024-09-12)

3.11.4 (2024-08-30)

3.11.3 (2024-08-13)

3.11.2 (2024-08-08)

3.11.1 (2024-07-15)

3.11.0 (2024-06-13)

3.10.5 (2024-05-23)

3.10.4 (2024-05-06)

3.10.3 (2024-04-16)

3.10.2 (2024-04-08)

3.10.1 (2024-03-07)

3.10.0 (2024-02-20)

3.9.1 (2024-01-29)

3.9.0 (2023-12-04)

3.8.4 (2023-10-17)

3.8.3 (2023-09-29)

3.8.2 (2023-09-21)

  • 浏览器:恢复到旧的无头模式以修复与 Kubernetes 的使用 #459AgnesToulet

3.8.1 (2023-09-18)

3.8.0 (2023-08-22)

3.7.2 (2023-07-27)

3.7.1 (2023-05-15)

3.7.0 (2023-04-17)

3.6.4 (2023-02-10)

3.6.3 (2023-01-11)

3.6.2 (2022-10-22)

  • 将与 JSHandle@object 相关的错误记录为调试信息 #376spinillos
  • 杂项:更新 Puppeteer 已弃用的函数 #375spinillos
  • 修复:更新 _client 为 _client() 以避免在创建 CSV 时失败 #372spinillos
  • 杂项:更新所有依赖项 #369DanCech

3.6.1 (2022-08-30)

3.6.0 (2022-08-16)

3.5.0 (2022-07-18)

3.4.2 (2022-03-23)

  • 安全:升级依赖项 #337AgnesToulet
  • 修复:默认将 captureBeyondViewport 设置为 false 以修复渲染旧面板的问题 #335AgnesToulet

3.4.1 (2022-02-23)

3.4.0 (2022-02-17)

3.3.0 (2021-11-18)

3.2.1 (2021-10-07)

3.2.0 (2021-09-17)

3.1.0 (2021-09-01)

重要更改

默认的 Chromium 标志已更新,包括--disable-gpu,因为它修复了在使用default渲染模式时的内存泄漏问题。如果您不想使用此标志,则需要更新您的服务配置,可以通过 服务配置文件环境变量Grafana 配置文件(如果您使用的是插件模式)进行更新。

3.0.1 (2021-06-10)

  • 浏览器:修复指定时区查询参数时的面板时区 #224Bujupah
  • Docker:修复 Docker 镜像的版本端点 #248mbentley

3.0.0 (2021-06-07)

3.0.0-beta2 (2021-05-26)

  • 删除对插件 V1 协议的支持 #233AgnesToulet
  • 浏览器:修复当 tmp 文件夹与目标文件路径不在同一设备上时移动 CSV 文件的问题 #232AgnesToulet
  • 杂项:升级 grabpl 版本 #231AgnesToulet

3.0.0-beta1 (2021-05-19)

2.1.1 (2021-05-18)

2.1.0 (2021-05-11)

  • 杂项/安全:升级依赖项并将 Node 升级到 LTS (14.16.1) #218AgnesToulet

2.0.1 (2021-01-26)

  • 浏览器:对初始导航到正在渲染的仪表盘使用超时参数 #171

2.0.0 (2020-05-16)

  • 插件:迁移到 @grpc/grpc-js 以解决禁用 IPv6 时的问题 #135aknuds1
  • 添加对新的 Grafana 后端插件系统支持 #128marefr
  • 浏览器:添加对设置视口设备缩放因子的支持 #128marefr
  • 浏览器:添加对将 Accept-Language 标头附加的支持,以支持根据 Grafana 用户的名称语言环境进行渲染 #128marefr
  • 浏览器:如果 URL 具有套接字协议,则渲染失败 #127aknuds1
  • 杂项:升级 typescript 依赖项 #129marefr

2.0.0-beta1 (2020-04-22)

  • 添加对新的 Grafana 后端插件系统支持 #128marefr
  • 浏览器:添加对设置视口设备缩放因子的支持 #128marefr
  • 浏览器:添加对将 Accept-Language 标头附加的支持,以支持根据 Grafana 用户的名称语言环境进行渲染 #128marefr
  • 浏览器:如果 URL 具有套接字协议,则渲染失败 #127aknuds1
  • 杂项:升级 typescript 依赖项 #129marefr

1.0.12 (2020-03-31)

  • 远程渲染:在将临时文件提供给客户端后删除它 #120marefr
  • 远程渲染:更多配置选项 #123marefr

1.0.12-beta1 (2020-03-30)

1.0.11 (2020-03-20)

  • 渲染:添加对使用环境变量启用详细日志记录的支持 #105marefr
  • 渲染:修复渲染时面板标题不应该获得焦点 #114AgnesToulet
  • 安全:将 minimist 依赖项升级到 v1.2.5 #118marefr

1.0.10 (2020-02-18)

  • 插件:修复无法使用版本 1.0.8 和 1.0.9 启动 Grafana (Windows) #103marefr

1.0.9 (2020-01-30)

  • 远程渲染:改进错误处理、日志记录和指标 #92marefr
    • 服务:不要吞并异常并修复参数的日志记录
    • 指标:当客户端关闭连接时使用状态 499
    • Docker:设置 NODE_ENV=production
    • 将请求日志记录更改为,如果状态 < 400 则使用调试级别,如果 >= 400 则使用错误级别
  • 插件:添加图标 #95marefr

1.0.8 (2020-01-20)

  • 构建:将 Node.js 要求升级到 LTS (v12) #57marefr
  • Docker:添加 unifont 字体以支持渲染其他语言,例如中文/日文 #75okhowang
  • 订阅页面事件以捕获来自浏览器的错误 #88marefr

  • 插件:默认自动分配 gRPC 端口 #87marefr
  • 插件:支持通过环境变量配置默认时区 #86marefr
  • 远程渲染:支持通过配置文件和环境变量配置默认时区 #86marefr
  • 远程渲染:支持通过配置文件和环境变量配置 HTTP 主机和端口 #40marefr
  • 远程渲染:支持从文件读取配置 #73marefr
  • 远程渲染:收集并公开 Prometheus 指标 #71marefr

重大变更

  • 插件现在会自动分配未使用的 gRPC 端口。之前使用端口 `50059`。您可以使用 `GF_RENDERER_PLUGIN_GRPC_PORT` 环境变量更改此端口。

1.0.8-beta1 (2019-12-17)

  • 远程渲染:收集并公开 Prometheus 指标 #71marefr
  • 构建:将 Node.js 要求升级到 LTS (v12) #57marefr

1.0.7 (2019-12-03)

  • 在覆盖时使用环境变量 `GF_RENDERER_PLUGIN_IGNORE_HTTPS_ERRORS` 和/或 `IGNORE_HTTPS_ERRORS` 向 Chromium 提供正确命名的配置参数以跳过 https 错误 #62marefr

1.0.6 (2019-11-25)

  • 在渲染前等待所有网络连接空闲 #24d1ff
  • 支持使用环境变量忽略 https 错误 #59marefr
  • Docker:更新依赖项以消除漏洞 #53marefr
  • 修复日志语句中的错别字 #39ankon
  • 更新了文档

1.0.5 (2019-09-11)

  • 在发布工件中包含 md5 校验和

1.0.4 (2019-09-11)

  • 更新自述文件和文档

1.0.3 (2019-09-10)

  • 自动化 Docker 发布

1.0.2 (2019-09-10)

  • 不要在归档 (zip) 文件中包含 dist 目录

1.0.1 (2019-09-09)

  • 将 Docker 基础镜像从 node:10 切换到 node:alpine-10 #36marefr
  • 更新了面板渲染等待函数以适应 Grafana 6 版本 #26bmichaelis
  • 更新了依赖项

1.0.0 (2019-08-16)

初始版本包含可下载的预构建二进制文件。目前,二进制文件本身应被视为 alpha 版本,因为它们需要更多测试。