높은 가용성을 위한 Grafana 설정

높은 가용성을 위한 Grafana 설정 (Set up Grafana for high availability)

Grafana를 고가용성(high availability)으로 실행하면 하나의 인스턴스가 다운되어도 서비스가 이어지도록 해요. 여러 Grafana 서버를 같은 구성으로 실행하고, 세션·알림 상태를 공유 저장소(데이터베이스, Redis 등)에 보관해 장애 조치를 지원해요.

출처: 문서

본문

HA의 기본 사항

Grafana는 기본적으로 각 인스턴스가 독립적으로 실행되는데, 높은 가용성이 필요하면 여러 인스턴스를 공유 구성으로 실행해야 해요. HA 설정에서 핵심은 공유 저장소예요. 대시보드, 사용자, 조직, 알림 상태 등은 공유 SQL 데이터베이스(MySQL, PostgreSQL)에 저장되어야 하며, SQLite(기본)는 단일 인스턴스용이라 HA에 적합하지 않아요.

공유 데이터베이스 구성

HA를 위해 외부 데이터베이스를 구성해요. [database] 섹션에서 공유 DB로 전환해요:

[database]
type = mysql
host = 192.168.1.100:3306
name = grafana
user = grafana
password = <password>

또는 PostgreSQL:

[database]
type = postgres
host = 192.168.1.100:5432
name = grafana
user = grafana
password = <password>

세션 저장소

사용자 세션을 공유하려면 세션 저장소로 Redis를 사용하는 것이 좋아요. [sessions](Grafana 11.2 이전) 또는 [session](11.3+) 섹션에서 Redis를 구성해요:

[sessions]
provider = redis
provider_config = addr=192.168.1.100:6379,pool_size=100,prefix=grafana

Redis를 세션 저장소로 쓰면 여러 인스턴스 간 사용자 세션이 공유돼요. Redis를 사용하지 않고 DB 세션을 쓸 수도 있어요.

알림 상태

Grafana Alerting(Grafana 관리형 알림)은 알림 상태를 데이터베이스에 저장하므로 공유 DB를 쓰면 여러 인스턴스에서 알림이 조정돼요. 알림 상태 저장과 관련된 옵션:

[unified_alerting]
# 평가를 활성 인스턴스에서 수행하도록 구성

[...] HA에서 알림을 실행하려면 공유 데이터베이스가 필수이며, Grafana는 alertmanager 클러스터링을 지원해요.

로드 밸런싱

여러 Grafana 인스턴스 앞에 로드 밸런서를 두고 트래픽을 분산하고, 세션이 공유되도록 [server]root_url을 로드 밸런서 URL로 설정해요.

HA 주의 사항

  • 모든 인스턴스가 같은 버전과 구성을 사용해야 해요.
  • 파일 기반 상태(예: 로컬 대시보드 파일)는 공유 저장소로 옮겨야 해요.
  • 고가용성 모드에서는 구성(예: UI 설정) 변경이 모든 인스턴스에 퍼지는 데 몇 분 걸릴 수 있어요.
  • 두 개 이상 인스턴스에서 예약된 작업이 중복 실행되지 않게 조정이 필요해요.

더 알아보기 (Learn more)