[Grafana Basic] PostgreSQL 설치 및 Grafana 연동

y001·2026년 2월 22일

Grafana Basic

목록 보기
4/8
post-thumbnail

이번 글에서는 메트릭이나 로그 대신 일반 관계형 데이터베이스를 Grafana에 연결한다. 이를 통해 Grafana가 특정 모니터링 도구에 종속된 도구가 아니라, 다양한 데이터 소스를 직접 조회해 시각화할 수 있는 구조임을 확인한다.

1. PostgreSQL과 Grafana 실행

Docker Compose를 사용해 PostgreSQL과 Grafana를 함께 실행한다.

services:
  postgres:
    image: postgres:16-alpine
    restart: always
    environment:
      POSTGRES_USER: grafana_user
      POSTGRES_PASSWORD: grafana_password
      POSTGRES_DB: grafana_db
    volumes:
      - postgres_data:/var/lib/postgresql/data

  grafana:
    image: grafana/grafana-oss:11.1.5
    restart: always
    ports:
      - "3000:3000"
    volumes:
      - grafana-storage:/var/lib/grafana

volumes:
  grafana-storage:
  postgres_data:

이 구성은 PostgreSQL과 Grafana를 동일 네트워크에서 실행한다. 별도의 네트워크 설정 없이도 서비스 이름을 통해 접근할 수 있다.

2. PostgreSQL 테스트 테이블 생성

컨테이너에 접속해 데이터베이스 상태를 확인한다.

docker compose exec postgres psql -U grafana_user -d grafana_db

테이블이 없는 상태를 확인한다.

\dt

시각화를 위해 두 개의 테이블을 생성한다.

  • environment_data: 시계열 데이터
  • category_data: 범주형 데이터
CREATE TABLE IF NOT EXISTS environment_data (
    id SERIAL PRIMARY KEY,
    updated_at TIMESTAMP NOT NULL,
    temperature FLOAT NOT NULL,
    humidity FLOAT NOT NULL,
    pressure FLOAT NOT NULL
);

CREATE TABLE IF NOT EXISTS category_data (
    id SERIAL PRIMARY KEY,
    category VARCHAR(50) NOT NULL,
    value1 FLOAT NOT NULL
);

3. 초기 데이터 삽입

과거 1일치 시계열 데이터를 생성한다.

INSERT INTO environment_data (updated_at, temperature, humidity, pressure)
SELECT
    gs,
    round((20 + random()*10)::numeric, 2),
    round((30 + random()*30)::numeric, 2),
    round((1000 + random()*20)::numeric, 2)
FROM generate_series(
    now() - interval '1 day',
    now(),
    interval '1 second'
) gs;

범주형 데이터도 생성한다.

INSERT INTO category_data (category, value1, value2)
SELECT
    (ARRAY['A','B','C'])[floor(random()*3 + 1)],
    round((random()*100)::numeric, 2)
FROM generate_series(1, 86400);

4. Grafana에 PostgreSQL 연결

Grafana에서 다음 경로로 이동한다.

Home → Connections → Data Source → PostgreSQL

연결 정보는 다음과 같다.

  • Host: postgres:5432
  • Database: grafana_db
  • User: grafana_user
  • Password: grafana_password
  • TLS: Disable

여기서 postgres는 docker-compose 서비스 이름이다. 동일 네트워크 내에서는 서비스 이름으로 접근한다. 연결 테스트 후 Save & Test를 실행하면 데이터소스 등록이 완료된다.

0개의 댓글