[Grafana Basic] PostgreSQL 데이터 시각화하기

y001·2026년 2월 22일

Grafana Basic

목록 보기
5/8
post-thumbnail

Overview

이전 글에서 PostgreSQL을 Grafana에 연결했다. 이번 단계에서는 실제 SQL 쿼리를 작성해 시각화를 구성한다. 시계열 데이터와 범주형 데이터를 각각 다루고, 변수를 활용해 동적인 대시보드를 구성한다.

1. 시간 값이 있는 테이블로 그래프 만들기

Time Series 패널은 시간 축을 기준으로 값의 변화를 표현하는 데 최적화되어 있다. 시간 흐름에 따른 추이를 확인할 때 사용한다.

environment_data 테이블은 updated_at 컬럼을 기준으로 시계열 데이터로 사용할 수 있다.

SELECT
    temperature,
    humidity,
    updated_at AS time
FROM environment_data
WHERE $__timeFilter(updated_at);

Time Series 패널에서는 어떤 컬럼이 시간 축으로 사용될지 명확히 지정해야 한다. 위 쿼리에서는 updated_attime으로 alias 처리하여 Grafana가 이를 시간 필드로 인식하도록 한다.

$__timeFilter(updated_at) 매크로는 대시보드의 Time Range 설정에 맞게 자동으로 기간 조건을 추가한다.

긴 시간 범위에서의 집계

조회 범위가 길어질 경우, 초 단위 데이터를 그대로 표시하면 그래프가 과밀해지고 성능에도 영향을 준다. 이 경우 시간 단위로 집계하는 것이 적절하다.

예를 들어 분 단위 최대값으로 집계하면 다음과 같다.

SELECT
    max(temperature) AS temperature_max,
    max(humidity) AS humidity_max,
    date_trunc('minute', updated_at) AS time
FROM environment_data
WHERE $__timeFilter(updated_at)
GROUP BY time
ORDER BY time;

date_trunc('minute', updated_at)을 사용해 분 단위로 시간을 절삭하고, 해당 구간의 최대값을 계산한다. 이렇게 하면 긴 시간 범위에서도 전체 추이를 명확히 확인할 수 있다.

2. 시간 값이 없는 테이블로 패널 만들기

category_data 테이블은 범주형 데이터로, Bar Gauge 패널을 사용하면 항목별 값을 직관적으로 비교할 수 있다.

SELECT
    category,
    sum(value1) AS bv
FROM category_data
WHERE category = 'B'
GROUP BY category;

이와 같은 쿼리는 특정 범주의 누적 값을 계산해 표시한다. 시계열이 아닌 경우에는 Table, Bar Gauge, Stat 등의 패널이 적합하다.

3. 변수를 사용한 동적 대시보드 구성

하드코딩된 조건은 재사용성이 떨어진다. Grafana의 Variable 기능을 사용하면 사용자 선택에 따라 데이터를 동적으로 변경할 수 있다.

Dashboard Settings → Variables

변수 유형에는 Query, Custom, Text Box, Constant 등이 있다.

유형값 생성 방식사용 목적
Query데이터소스 쿼리 결과로 값 생성DB 값에 따라 동적으로 선택 목록 구성
Custom사용자가 직접 값 목록 정의고정된 선택지 제공
Text Box사용자가 직접 값 입력자유 입력 조건 적용
Constant고정된 단일 값환경별 설정 값 고정

Query 유형은 가장 많이 사용된다. 데이터소스에 질의를 수행해 결과 값을 변수 목록으로 사용한다. 예를 들어 SELECT DISTINCT category FROM category_data와 같은 쿼리를 통해 선택 가능한 값을 자동으로 생성할 수 있다.

예를 들어 category 값을 변수로 정의하면 다음과 같이 쿼리를 작성할 수 있다.

SELECT
    category,
    sum(value1) AS bv
FROM category_data
WHERE category IN ($category)
GROUP BY category;

변수를 사용할 때는 변수 이름 앞에 $를 붙인다. 선택된 값이 쿼리에 자동으로 삽입된다.

Repeat 옵션

Repeat 기능은 선택된 변수 값에 따라 동일한 패널을 자동으로 복제하는 기능이다. 패널 설정에서 Repeat 기준 변수를 지정하면, 해당 변수의 선택 값마다 동일한 구조의 패널이 생성된다.

예를 들어 category 변수에 A, B, C가 선택되어 있다면, 동일한 쿼리와 시각화 설정을 가진 패널이 세 개 생성된다. 각 패널은 내부적으로 변수 값이 자동 치환되어 서로 다른 데이터를 표시한다.

0개의 댓글