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