데이터 소스 관리

데이터 소스 관리 (Data source management)

Grafana는 시계열 데이터를 저장하는 다양한 백엔드(데이터 소스)를 지원해요. 여기서는 데이터 소스를 추가하거나 권한을 관리하고, 쿼리 캐싱을 설정하는 방법을 함께 살펴볼게요. 데이터 소스를 추가할 수 있는 권한은 조직의 Admin 역할을 가진 사용자에게만 주어져요.

출처: 문서

본문

데이터 소스 권한 (Data source permissions)

데이터 소스 권한을 설정하면 특정 사용자가 데이터 소스를 조회(query)하거나 편집(edit), 관리(administrate)할 수 있게 허용하거나 차단할 수 있어요. 각 데이터 소스의 설정에는 Permissions 탭이 있고, 여기서 특정 사용자, 서비스 계정, 팀, 또는 기본 역할(basic roles) 단위로 권한을 제한할 수 있어요.

참고: 이 기능은 Grafana Enterprise와 Grafana Cloud에서 사용할 수 있어요.

기본적으로 조직 내 데이터 소스는 해당 조직의 모든 사용자가 조회할 수 있어요. 예를 들어 Viewer 역할의 사용자도 대시보드에 있는 쿼리뿐 아니라 데이터 소스에 대한 어떤 쿼리든 실행할 수 있죠. 또한 기본적으로 데이터 소스는 해당 데이터 소스를 만든 사용자와 Admin 역할을 가진 사용자가 편집할 수 있어요.

권한 부여

Permissions 탭에서 사용자, 서비스 계정, 팀, 기본 역할에 대해 조회/편집/관리 권한을 부여할 수 있어요. Permissions 탭의 Role 옵션은 기본 역할인 Viewer, Editor, Admin만 지원하며, 커스텀 역할이나 고정 RBAC 역할은 이 목록에 나타나지 않아요. 커스텀/고정 역할을 가진 사용자에게 접근 권한을 주러면 사용자·서비스 계정·팀에 직접 권한을 부여하거나, 역할 기반 접근 제어(RBAC)를 통해 datasources:query 권한을 부여하면 돼요.

권한 편집/제거

데이터 소스의 Permissions 탭에서 권한을 편집하거나 제거할 수 있어요.

프로비저닝된 데이터 소스 (Provisioned data sources)

프로비저닝(provisioning)으로 추가된 데이터 소스와 Grafana Cloud에서 Grafana가 관리하는 데이터 소스는 UI에서 읽기 전용이에요. 데이터 소스 권한과 무관하게 설정 페이지에서 구성을 변경할 수 없어요. 읽기 전용 데이터 소스의 설정 페이지에는 Save & test 대신 Test 버튼만 보여요. 프로비저닝된 데이터 소스를 변경하려면 그 관리 방식에 맞는 방법을 사용해야 해요.

프로비저닝된 데이터 소스의 편집 가능한 복사본 만들기

UI에서 편집 가능한 데이터 소스가 필요하다면, 같은 백엔드에 연결하는 데이터 소스를 수동으로 하나 더 추가해서 프로비저닝된 데이터 소스와 독립적으로 관리하면 돼요. 복사본을 만든 뒤에는 대시보드·패널·알림 규칙이 새 데이터 소스를 조회하도록 업데이트해야 해요. 기존 쿼리는 새 데이터 소스를 가리키도록 변경하기 전까지 계속 프로비저닝된 데이터 소스를 사용해요.

참고: 복사본은 프로비저닝된 데이터 소스와 독립적이에요. 이후 자격 증명 교체나 URL 변경 같은 프로비저닝된 데이터 소스의 변경 사항은 복사본에 전파되지 않으니, 백엔드 구성이 바뀌면 복사본도 수동으로 업데이트해야 해요.

쿼리 및 리소스 캐싱 (Query and resource caching)

쿼리·리소스 캐싱을 활성화하면 Grafana가 데이터 소스 쿼리와 리소스 요청의 결과를 임시로 저장해요. 같은 쿼리나 리소스 요청이 다시 들어오면 데이터 소스 대신 캐시에서 결과를 가져와요.

여기서 쿼리(query)는 표시하거나 수정할 데이터 프레임을 요청하는 것을 뜻하고, 리소스(resource)는 플러그인이 하는 HTTP 요청(예: Amazon Timestream 플러그인이 AWS에서 사용 가능한 데이터베이스 목록을 요청하는 것)을 뜻해요. 캐싱은 모든 백엔드 데이터 소스에서 동작하며, Grafana 설정에서 전역으로 활성화하거나 각 데이터 소스별로 캐시 지속 시간(TTL)을 개별 설정할 수 있어요.

참고: 캐싱은 Grafana Enterprise와 Grafana Cloud에서 사용할 수 있어요. 캐시 백엔드로 in-memory, Redis, Memcached를 선택할 수 있어요.

참고: in-memory 캐시는 Grafana의 메모리 사용량을 늘릴 수 있어요. 프로덕션 환경에서는 Redis나 Memcached 백엔드를 권장해요.

패널이 캐시된 데이터가 있는 데이터 소스를 조회하면, 패널의 interval(간격)에 따라 새 데이터를 가져오거나 캐시된 데이터를 사용해요. interval은 쿼리 시간 범위를 가까운 캐시 시간 범위로 반올림해서 캐시 적중 확률을 높여요. 따라서 시간 범위가 짧은 대시보드의 넓은 패널일수록 새 데이터를 더 자주 가져와요.

패널의 interval은 쿼리 옵션에서 확인할 수 있고, 시간 범위 / 최대 데이터 포인트(max data points)로 계산돼요. 예를 들어 last 7 days 시간 범위의 대시보드에서 1000개 데이터 포인트를 가진 넓은 패널은 10분마다 새 데이터를 가져와요: 7d / 1000 = 10m. 즉 10분 동안은 캐시된 데이터가 제공되고, 이후 Grafana가 데이터 소스에 다시 쿼리해요. 패널의 쿼리 옵션에서 Max data points 값을 높이면 더 자주 데이터를 가져오도록 설정할 수 있어요.

캐싱의 장점

데이터 소스로 보내는 쿼리·요청 수를 줄여 다음과 같은 이점을 줄 수 있어요: 데이터 소스 부하 감소, 응답 속도 향상, 비용 절감.

쿼리 캐싱이 동작하는 데이터 소스

쿼리 캐싱은 Grafana의 내장 데이터 소스와, 플러그인 SDK에서 DataSourceWithBackend 클래스를 확장하는 백엔드 데이터 소스 플러그인에서 동작해요.

참고: CloudWatch 데이터 소스의 Logs Insights는 AWS에 로그를 요청하는 방식 때문에 쿼리 캐싱을 지원하지 않아요.

데이터 소스가 쿼리 캐싱을 지원하는지 확인하려면 아래 "캐싱 활성화/구성"을 따라 해보세요. Grafana에 캐싱이 활성화됐는데도 해당 데이터 소스에 Caching 탭이 보이지 않으면, 그 데이터 소스는 쿼리 캐싱을 지원하지 않는 거예요.

참고: Elasticsearch, Prometheus, Loki 같은 일부 데이터 소스는 자체적으로 쿼리를 캐싱하므로 Grafana 쿼리 캐싱이 성능을 크게 개선하지 못해요. 다만 리소스 캐싱은 도움이 될 수 있어요.

쿼리 캐싱 활성화 및 구성

데이터 소스에 쿼리 캐싱을 활성화하려면 조직 관리자(Org admin)나 Grafana 관리자여야 해요. 기본적으로 데이터 소스 쿼리는 캐시되지 않아요. 단일 데이터 소스에 대해 캐싱을 활성화하려면:

  1. 데이터 소스 설정에서 해당 데이터 소스를 열고 Cache 탭을 엽니다.
  2. Enable caching을 켭니다.
  3. 캐시 TTL과 캐시 백엔드를 설정합니다.

개별 대시보드 패널에 대해 데이터 소스의 TTL을 재정의할 수도 있어요. 쿼리 결과가 설정된 TTL보다 더 자주/드물게 변하는 경우 유용하죠. Edit Panel 뷰에서 캐싱이 활성화된 데이터 소스를 선택하고 Query options를 펼친 뒤 TTL을 밀리초 단위로 입력하면 돼요.

참고: 쿼리 캐싱이 활성화됐는데도 데이터 소스 설정에 Cache 탭이 안 보이면, 그 데이터 소스는 쿼리 캐싱을 지원하지 않는 거예요.

전역 설정은 Grafana Enterprise 구성의 캐싱 섹션을 참고하세요.

쿼리 캐싱 비활성화

단일 데이터 소스에 대해 캐싱을 끄려면 해당 데이터 소스의 Cache 탭에서 캐싱을 비활성화하면 돼요. Grafana 인스턴스 전체의 캐싱을 끄려면 Grafana Enterprise 구성의 caching 섹션에서 enabled 플래그를 false로 설정하면 돼요. 그러면 어떤 데이터 소스에도 Cache 탭이 보이지 않고, 데이터 소스 쿼리가 캐시되지 않아요.

캐시 비우기 (Clear cache)

성능 문제가 생기거나 반복 쿼리가 점점 느려진다면 캐시를 비우는 걸 고려해 보세요. 이 작업은 캐시가 활성화된 모든 데이터 소스에 영향을 줘요. Memcached를 사용 중이라면 Memcached 인스턴스의 모든 데이터가 삭제돼요.

캐시 없이 요청 보내기

데이터 소스 쿼리 요청에 X-Cache-Skip 헤더가 포함되어 있으면 Grafana는 캐싱 미들웨어를 건너뛰고 캐시에서 응답을 찾지 않아요. cURL로 데이터 소스 쿼리를 디버깅할 때 특히 유용해요.

더 알아보기 (Learn more)