헤드리스 브라우저(Chromium)를 사용하여 패널 및 대시보드를 PNG로 렌더링하는 것을 처리하는 Grafana 백엔드 플러그인입니다.
리눅스(x64)
윈도우(x64)
맥 OS X(x64)
이 플러그인은 Node.js 런타임 및 Chromium 브라우저와 함께 단일 실행 파일로 패키지되어 있습니다. 즉, 플러그인이 작동하기 위해 시스템에 Node.js 및 Chromium을 설치할 필요가 없습니다.
그러나 Chromium 브라우저는 특정 라이브러리에 따라 다릅니다. 시스템에 해당 라이브러리가 모두 설치되어 있지 않으면 이미지를 렌더링하려고 할 때 일부 오류가 나타날 수 있습니다. 문제 해결 도움말을 포함한 자세한 내용은 Grafana 이미지 렌더링 설명서를 참조하세요.
이미지 렌더링에는 많은 메모리가 필요합니다. 주로 Grafana가 실제 렌더링을 위해 백그라운드에서 브라우저 인스턴스를 생성하기 때문입니다. 시스템 렌더링 이미지에 최소 16GB의 여유 메모리를 권장합니다.
여러 이미지를 병렬로 렌더링하려면 훨씬 더 큰 메모리 공간이 필요합니다. 원격 시스템에서 이미지를 렌더링하기 위해 원격 렌더링 서비스를 사용할 수 있으므로 로컬 시스템 리소스는 영향을 받지 않습니다.
Grafana CLI(권장 방법) 또는 Grafana Docker 이미지를 사용하여 플러그인을 설치할 수 있습니다.
grafana-cli 플러그인은 grafana-image-renderer를 설치합니다.
이 플러그인은 현재 Grafana Docker 이미지와 호환되지 않으며 추가 시스템 수준 종속성이 필요합니다. 대신 렌더링을 위해 다른 Docker 컨테이너를 설정하고 원격 렌더링을 사용하는 것이 좋습니다. 지침은 Docker에서 실행을 참조하세요.
Grafana Docker 이미지와 함께 플러그인을 설치하려면 Grafana Docker 설명서에서 사용자 정의 Grafana 이미지 빌드에 대한 지침을 참조하세요.
참고: 인터넷 연결이 필요합니다.
이 플러그인을 원격 HTTP 렌더링 서비스로 실행할 수 있습니다. 이 설정에서 Grafana는 원격 렌더링 서비스에 HTTP 요청을 하여 이미지를 렌더링합니다. 그러면 원격 렌더링 서비스가 이미지를 렌더링하고 이를 Grafana에 대한 HTTP 응답으로 다시 반환합니다.
Docker를 사용하거나 독립 실행형 Node.js 애플리케이션으로 원격 HTTP 렌더링 서비스를 실행할 수 있습니다.
Grafana Docker 이미지는 Docker Hub에 게시됩니다.
다음 예에서는 Docker Compose를 사용하여 두 개의 별도 Docker 컨테이너에서 Grafana와 원격 HTTP 렌더링 서비스를 실행하는 방법을 보여줍니다.
다음 콘텐츠로 docker-compose.yml
만듭니다.
버전: '2'서비스: grafana:이미지: grafana/grafana:latestports: - '3000:3000'환경: GF_RENDERING_SERVER_URL: http://renderer:8081/render GF_RENDERING_CALLBACK_URL: http://grafana:3000/ GF_LOG_FILTERS: 렌더링:디버그 렌더러:이미지: grafana/grafana-image-renderer:최신 포트: - 8081
다음으로 docker compose를 실행합니다.
도커 작성
다음 예에서는 원격 HTTP 렌더링 서비스를 독립 실행형 Node.js 애플리케이션으로 구축 및 실행하고 Grafana를 적절하게 구성하는 방법을 설명합니다.
Grafana 이미지 렌더러 플러그인 Git 저장소를 복제합니다.
종속성을 설치하고 빌드합니다.
원사 설치 --pure-lockfile 원사 실행 빌드
서버를 실행합니다:
노드 빌드/app.js 서버 --port=8081
Grafana 구성 업데이트:
[rendering] server_url = http://localhost:8081/render callback_url = http://localhost:3000/
그라파나를 다시 시작하세요.
렌더링 엔드포인트에 대한 액세스는 인증 토큰을 제공하는 요청으로 제한됩니다. 이 토큰은 Grafana 구성 파일과 렌더러 구성 파일에서 구성되어야 합니다. 이 토큰은 무단 파일 공개를 방지하기 위해 원격 렌더링 모드에서 플러그인을 실행할 때 중요합니다(CVE-2022-31176 참조).
이 비밀 토큰을 구성하려면 Grafana Image Rendering 설명서를 참조하세요. 기본값 -
시작할 때 Grafana와 이미지 렌더러 모두에 구성되지만 보다 안전한 값으로 업데이트하는 것이 좋습니다.
사용 가능한 구성 설정은 Grafana Image Rendering 설명서를 참조하세요.
문제 해결 도움말은 Grafana 이미지 렌더링 문제 해결 설명서를 참조하세요.
이미지 렌더러 자동화 테스트 모음을 실행하려면 루트 폴더에서 다음 명령을 실행해야 합니다.
yarn test
그러면 Docker에서 Grafana 인스턴스가 시작된 다음 테스트 도구 모음이 실행됩니다.
참고:
참조 이미지 파일( /tests/testdata
에 있음)에 예상되는 변경 사항이 있는 경우 yarn test-update
실행하고 업데이트된 참조를 푸시하세요.
테스트가 실패하고 얻은 이미지와 참조 이미지 간의 차이점을 확인하려면 yarn test-diff
실행하세요. 그러면 /tests/testdata
폴더에 차이점이 포함된 이미지( diff_<test case>.png
)가 생성됩니다.
로컬 환경에서는 테스트가 성공했지만 드론에서는 실패하는 경우입니다. 다음 단계에 따라 Drone 파이프라인과 유사한 환경에서 테스트를 실행할 수 있습니다. 그러면 Docker 이미지에 grafana-image-renderer
저장소의 로컬 파일이 마운트되므로 Docker 이미지에서 발생하는 모든 변경 사항을 로컬 환경에서 사용할 수 있습니다. 이를 통해 Docker에서 yarn test-diff
및 yarn test-update
실행하고 결과를 로컬에서 확인할 수 있습니다.
Docker에서 드론 환경을 실행합니다.
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