이미지 렌더링 설정
이미지 렌더링 설정 (Set up image rendering)
Grafana Image Renderer 서비스를 사용하면 Grafana 패널과 대시보드를 PNG, PDF, CSV 파일로 렌더링할 수 있어요. 시각화를 내보내 이해관계자와 공유하거나, 알림 알림용 자동 내보내기를 구성할 수 있어요.
출처: 문서
본문
Grafana Image Renderer 서비스는 Grafana 패널과 대시보드를 PNG, PDF, CSV 파일로 렌더링할 수 있게 해줘요.
시각화를 내보내 이해관계자와 공유하거나 알림 알림용 자동 내보내기를 구성할 수 있어요.
이미지 렌더링은 Grafana OSS, Grafana Enterprise, Grafana Cloud에서 작동해요. 일부 기능은 Grafana Enterprise와 Grafana Cloud 전용이에요.
Caution
과거에는 이 기능을 Grafana 플러그인으로 제공했어요. 이 플러그인은 deprecated이며 더 이상 업데이트를 받지 않아요. 마찬가지로 우리는 서비스의 최신 버전만 지원해요.
Note
현재 시점에 우리는 지원되는 모든 안정 Grafana 버전을 지원하기로 약속해요. 버그를 발견하면 이슈 트래커에 보고해 주세요.
시작하기 전에 (Before you begin)
이미지 렌더러를 설치하기 전에 다음이 있는지 확인하세요:
- 실행 중인 Grafana 인스턴스
- 설치된 Docker, 또는 Linux/Windows에서 바이너리를 실행할 수 있는 능력
- 렌더러 서비스에 사용할 수 있는 최소 16 GiB 메모리와 4 CPU 코어
설치 (Installation)
서비스를 설치하려면 Docker 또는 기타 컨테이너화 소프트웨어를 사용하는 것을 권장해요. 이는 엄격하게 요구되는 것은 아니므로, 특정 환경에 맞게 조정할 수 있어요.
우리는 linux/amd64와 linux/arm64용 이미지를 제공해요. Windows와 macOS는 Docker Desktop으로 이 이미지들을 실행할 수 있어요. 추가로 Windows와 Linux용 바이너리를 GitHub Releases 페이지에서 제공해요.
서비스를 실행하려면 상당한 메모리와 CPU 리소스가 있는 서버를 사용해요. 일부 렌더링 작업은 몇 기가바이트의 메모리와 많은 코어를 스파이크 패턴으로 필요로 해요. 최소 16 GiB 메모리와 4 CPU 코어를 할당할 것을 권장해요. 부하가 크다면 특정 사용 사례에 맞게 조정해야 할 수 있어요.
Docker로 설치 (Install with Docker)
우리는 latest 태그를 제공하지만, 프로덕션 환경에서는 특정 버전을 고정하는 것을 선호해요. 우리는 latest 태그를 최신 안정 릴리스로 유지하기로 약속해요.
다음 예시는 Docker 네트워크를 만들고 렌더러와 Grafana 서비스를 모두 시작해요. 이 구성은 설정해야 할 환경 변수를 보여주지만, 프로덕션 준비가 된 Grafana 인스턴스를 사용하지는 않아요:
docker network create grafana
docker run --network grafana --name renderer --rm --detach grafana/grafana-image-renderer:latest
docker run --network grafana --name grafana --rm --detach -p 3000:3000 --env GF_RENDERING_SERVER_URL=http://renderer:8081/render --env GF_RENDERING_CALLBACK_URL=http://grafana:3000/ grafana/grafana-enterprise:latest
또는 docker compose를 선호한다면:
services:
renderer:
image: grafana/grafana-image-renderer:latest
grafana:
image: grafana/grafana-enterprise:latest
ports:
- "3000:3000"
environment:
GF_RENDERING_SERVER_URL: http://renderer:8081/render
GF_RENDERING_CALLBACK_URL: http://grafana:3000/
메모리 제한으로 실행한다면 GOMEMLIMIT 환경 변수를 제한보다 낮은 값(예: 1GiB)으로 설정해요. Chromium이 그 위에 여유 메모리가 필요하므로 GOMEMLIMIT을 컨테이너의 제한에 맞추지 마세요. 컨테이너 메모리 제한 8 GiB당 GOMEMLIMIT 1 GiB를 권장해요.
메모리 제한을 사용하지 않는다면, 특히 같은 호스트에서 다른 서비스와 함께 서비스를 실행한다면 위 구성이 여전히 유용할 수 있어요.
바이너리로 설치 (Install with binaries)
Linux와 Windows용 바이너리가 amd64와 arm64 아키텍처로 릴리스돼요. macOS는 현재 지원되지 않아요. macOS를 사용한다면 Docker Desktop을 선호해요.
바이너리에는 브라우저가 포함되지 않아요. 자체 Chromium 기반 브라우저를 설치하고 사용하도록 구성해야 해요. 예로는 Google Chrome과 Microsoft Edge가 있어요. 이 브라우저 바이너리의 경로는 --browser.path로 구성해요.
바이너리는 GitHub Releases에서 호스팅돼요. 플랫폼에 맞는 적절한 바이너리를 다운로드해 터미널에서 실행해요. 예를 들어 ./grafana-image-renderer server를 실행해요. 자세한 내용은 --help를 참고해요.
Grafana 구성 (Grafana configuration)
Grafana에는 렌더러 서비스를 찾을 위치와 통신에 사용할 인증 토큰을 지정하는 옵션이 포함돼 있어요.
이들을 구성하려면 Grafana의 .ini 구성 파일에서 다음 옵션을 사용해요:
[rendering]
; The URL is an HTTP(S) URL to the service, and its rendering endpoint.
; By default, the path is `/render`. This can be changed with nginx or similar reverse proxies.
server_url = http://renderer:8081/render
; The token is any _one_ token configured in the renderer service.
; If you configured multiple tokens in the service, choose one for Grafana.
; By default, a single token is configured, with the value of `-`.
renderer_token = -
Docker나 환경 변수를 사용하는 유사한 설정에서는 다음 옵션을 사용해요:
GF_RENDERING_SERVER_URLGF_RENDERING_RENDERER_TOKEN
구성 (Configuration)
다음과 같은 방식으로 서비스를 구성할 수 있어요:
- CLI 플래그:
--help로 사용 가능한 플래그 이름을 확인해요. - 환경 변수:
--help로 이름과 현재 값을 확인해요. 대부분(전부는 아님)의 변수는 CLI 플래그 이름과 1:1로 매핑돼요. - 구성 파일: 서비스의 작업 디렉터리에 JSON 또는 YAML 구성 파일을 만들어요. 파일 이름은
config.json,config.yaml, 또는config.yml이에요. 점으로 구분된 키는 중첩 키예요. 예를 들어a.b는 파일에서{"a": {"b": "VALUE"}}가 돼요.
--help로 모든 구성 옵션을 볼 수 있어요. 예를 들어 Docker를 사용한다면:
docker run --rm grafana/grafana-image-renderer:latest server --help
보안 (Security)
서비스는 모든 렌더 요청에 시크릿 토큰이 있어야 해요. 이 토큰은 --server.auth-token(AUTH_TOKEN)으로 설정해요. 여러 토큰을 지정하고 Grafana 인스턴스별 고유 키를 가질 수 있어요. 기본적으로 사용되는 토큰은 -이에요. Grafana에서는 [rendering] renderer_token(GF_RENDERING_RENDERER_TOKEN) 구성 설정으로 이 토큰 중 하나와 일치하도록 설정해요.
이미지 렌더러 모니터링 (Monitor the image renderer)
Prometheus 또는 Grafana Mimir로 메트릭을, OpenTelemetry 호환 트레이싱 백엔드(예: Grafana Tempo)로 트레이스를 모니터링할 수 있어요.
메트릭은 /metrics 엔드포인트에 노출돼요. 트레이스는 구성 옵션에 구성된 대로 전송돼요. 트레이스 구성 옵션은 --help를 참고해요.
사전 구축된 모니터링 대시보드는 예시 대시보드를 참고해요.