Redash는 SQL 쿼리를 작성하고 결과를 시각화하여 대시보드로 공유할 수 있는 데이터 시각화 도구입니다. 50개 이상의 데이터 소스를 지원하며, SQL을 아는 사람이라면 누구나 쉽게 대시보드를 만들 수 있습니다. 쿼리 결과를 자동으로 새로고침하고 알림을 설정할 수 있어 데이터 모니터링에도 적합합니다. GitHub Stars 26K+의 성숙한 프로젝트입니다.
Redash 주요 특징
Redash는 SQL 기반 분석에 특화된 도구입니다.
쿼리 & 시각화
- SQL 에디터: 자동완성, 스키마 브라우저
- 50+ 데이터 소스: PostgreSQL, MySQL, BigQuery, Snowflake 등
- 다양한 차트: 라인, 바, 파이, 지도, 피벗 테이블
- 대시보드: 드래그 앤 드롭 레이아웃
- 쿼리 파라미터: 동적 필터
협업 & 공유
- 쿼리 포크 & 공유
- 대시보드 임베딩
- 팀 권한 관리
- 쿼리 스니펫 (재사용 가능한 조각)
자동화
- 스케줄 쿼리 실행
- 조건부 알림 (이메일, Slack, Webhook)
- REST API
사전 요구 사항
- Docker 및 Docker Compose 설치
- 최소 2GB RAM (4GB 권장)
- PostgreSQL (메타데이터 저장)
- Redis (작업 큐)
Docker Compose로 Redash 설치
방법 1: 공식 설치 스크립트 (권장)
# 설치 스크립트 다운로드 및 실행
curl -O https://raw.githubusercontent.com/getredash/setup/master/setup.sh
chmod +x setup.sh
sudo ./setup.sh
방법 2: 수동 Docker Compose
# docker-compose.yml
services:
server:
image: redash/redash:latest
container_name: redash-server
restart: unless-stopped
depends_on:
- postgres
- redis
ports:
- "5000:5000"
environment:
REDASH_LOG_LEVEL: INFO
REDASH_SECRET_KEY: ${REDASH_SECRET_KEY}
REDASH_COOKIE_SECRET: ${REDASH_COOKIE_SECRET}
REDASH_DATABASE_URL: postgresql://redash:${POSTGRES_PASSWORD}@postgres/redash
REDASH_REDIS_URL: redis://redis:6379/0
PYTHONUNBUFFERED: 0
command: server
scheduler:
image: redash/redash:latest
container_name: redash-scheduler
restart: unless-stopped
depends_on:
- server
environment:
REDASH_SECRET_KEY: ${REDASH_SECRET_KEY}
REDASH_DATABASE_URL: postgresql://redash:${POSTGRES_PASSWORD}@postgres/redash
REDASH_REDIS_URL: redis://redis:6379/0
command: scheduler
worker:
image: redash/redash:latest
container_name: redash-worker
restart: unless-stopped
depends_on:
- server
environment:
REDASH_SECRET_KEY: ${REDASH_SECRET_KEY}
REDASH_DATABASE_URL: postgresql://redash:${POSTGRES_PASSWORD}@postgres/redash
REDASH_REDIS_URL: redis://redis:6379/0
QUEUES: "queries,scheduled_queries,celery"
WORKERS_COUNT: 2
command: worker
postgres:
image: postgres:16-alpine
container_name: redash-postgres
restart: unless-stopped
environment:
POSTGRES_DB: redash
POSTGRES_USER: redash
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- redash-postgres:/var/lib/postgresql/data
redis:
image: redis:alpine
container_name: redash-redis
restart: unless-stopped
volumes:
redash-postgres:
환경 변수 파일
# .env
POSTGRES_PASSWORD=your_secure_password
REDASH_SECRET_KEY=your_random_secret_key
REDASH_COOKIE_SECRET=your_cookie_secret
시크릿 키 생성:
# REDASH_SECRET_KEY
pwgen -1s 32
# REDASH_COOKIE_SECRET
pwgen -1s 32
# 또는 openssl 사용
openssl rand -hex 16
데이터베이스 초기화 및 실행
# 디렉토리 생성
mkdir redash && cd redash
# docker-compose.yml 및 .env 생성
# 데이터베이스 테이블 생성
docker compose run --rm server create_db
# 컨테이너 실행
docker compose up -d
# 로그 확인
docker compose logs -f server
# 브라우저에서 접속
# http://localhost:5000
# 관리자 계정 설정
초기 설정
1. 관리자 계정 생성
http://localhost:5000접속- Admin 계정 정보 입력:
- Name
- Password
- Organization Name
- “Setup” 클릭
2. 데이터 소스 추가
- Settings → Data Sources → New Data Source
- 데이터베이스 타입 선택 (예: PostgreSQL)
- 연결 정보 입력:
Host: your-db-hostPort: 5432Database: your_databaseUser: readonly_userPassword: **** - “Test Connection” → “Save”
3. 첫 쿼리 작성
- Create → Query
- SQL 입력:
SELECT date, COUNT(*) as visitsFROM page_viewsWHERE date >= '2024-01-01'GROUP BY dateORDER BY date - “Execute” 클릭
- 시각화 추가: “+ New Visualization”
- 차트 타입 선택 및 설정
고급 설정
Traefik 연동
# docker-compose.yml
services:
server:
labels:
- "traefik.enable=true"
- "traefik.http.routers.redash.rule=Host(`redash.yourdomain.com`)"
- "traefik.http.routers.redash.entrypoints=websecure"
- "traefik.http.routers.redash.tls.certresolver=letsencrypt"
- "traefik.http.services.redash.loadbalancer.server.port=5000"
networks:
- redash-net
- traefik-public
networks:
redash-net:
driver: bridge
traefik-public:
external: true
Nginx 리버스 프록시
server {
listen 443 ssl http2;
server_name redash.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/redash.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/redash.yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
이메일 설정
# .env 또는 환경 변수
REDASH_MAIL_SERVER=smtp.yourdomain.com
REDASH_MAIL_PORT=587
REDASH_MAIL_USE_TLS=true
REDASH_MAIL_USERNAME=your_smtp_user
REDASH_MAIL_PASSWORD=your_smtp_password
REDASH_MAIL_DEFAULT_SENDER=redash@yourdomain.com
Google OAuth 설정
# .env
REDASH_GOOGLE_CLIENT_ID=your_google_client_id
REDASH_GOOGLE_CLIENT_SECRET=your_google_client_secret
Admin → Settings → General에서:
- Google Apps Domain: yourdomain.com (자동 사용자 생성)
쿼리 기능
파라미터 사용
SELECT *
FROM orders
WHERE created_at >= '{{ start_date }}'
AND created_at <= '{{ end_date }}'
AND status = '{{ status }}'
스니펫 (재사용 가능한 쿼리 조각)
-- 스니펫: date_range
AND created_at >= '{{ start_date }}' AND created_at <= '{{ end_date }}'
쿼리에서: {% snippet "date_range" %}
쿼리 결과를 다른 쿼리에서 사용
SELECT *
FROM query_123
WHERE column > 100
알림 설정
- 쿼리 실행 후 “Add Alert”
- 조건 설정:
- Column: count
- Condition: greater than
- Value: 1000
- 알림 대상:
- Slack Webhook
- Custom Webhook
관리 명령어
# 로그 확인
docker compose logs -f server
# 데이터베이스 백업
docker compose exec postgres pg_dump -U redash redash > backup_$(date +%Y%m%d).sql
# 사용자 생성 (CLI)
docker compose run --rm server create_user --org default admin@example.com admin
# 업데이트
docker compose pull
docker compose up -d
# 워커 재시작
docker compose restart worker scheduler
# 테스트 메일 발송
docker compose run --rm server send_test_mail
주요 환경 변수
| 변수 | 설명 | 필수 |
|---|---|---|
| REDASH_SECRET_KEY | 암호화 키 | ✅ |
| REDASH_COOKIE_SECRET | 쿠키 암호화 | ✅ |
| REDASH_DATABASE_URL | PostgreSQL 연결 | ✅ |
| REDASH_REDIS_URL | Redis 연결 | ✅ |
| REDASH_HOST | 외부 URL | ❌ |
| REDASH_MAIL_* | 이메일 설정 | ❌ |
| REDASH_GOOGLE_* | Google OAuth | ❌ |
지원 데이터 소스
관계형 DB
- PostgreSQL, MySQL, MariaDB
- SQL Server, Oracle, SQLite
빅데이터
- BigQuery, Snowflake, Redshift
- Presto, Trino, Athena
- ClickHouse, Druid
NoSQL & 기타
- MongoDB, Elasticsearch
- Google Sheets, CSV
- REST API (JSON)
문제 해결
“relation does not exist” 오류
데이터베이스 초기화 필요:
docker compose run --rm server create_db
쿼리 실행 안 됨
Worker 상태 확인:
docker compose logs -f worker
docker compose restart worker
스케줄 쿼리 실행 안 됨
Scheduler 확인:
docker compose logs -f scheduler
docker compose restart scheduler
Metabase vs Redash 비교
| 항목 | Redash | Metabase |
|---|---|---|
| 사용자 | SQL 사용자 | 비개발자도 가능 |
| 쿼리 방식 | SQL 필수 | 노코드 + SQL |
| 데이터 소스 | 50+ | 20+ |
| 알림 | 쿼리 기반 | 대시보드 기반 |
| 임베딩 | ✅ | ✅ |
마무리
Redash는 SQL을 아는 데이터 분석가와 엔지니어에게 최적의 도구입니다. 50개 이상의 데이터 소스를 연결하고, SQL 쿼리로 데이터를 시각화하여 팀과 공유할 수 있습니다. 스케줄 실행과 알림 기능으로 데이터 모니터링 자동화도 가능합니다.
참고 링크
- 공식 사이트: https://redash.io
- GitHub: https://github.com/getredash/redash
- Docker Hub: https://hub.docker.com/r/redash/redash
- 문서: https://redash.io/help