Redash 설치 및 연동 가이드
이 가이드는 macOS 환경에서 Docker를 사용하여 Redash를 설치하고, Google BigQuery를 데이터 소스로 연결하는 전체 과정을 안내합니다. 또한, 자동화를 위한 REST API 사용법까지 다룹니다. 각 단계를 순서대로 따라 하면 복잡한 권한 문제 없이 안정적으로 Redash 환경을 구축할 수 있습니다.
macOS에 Redash 설치하기
시스템 폴더(`_`/opt)의 복잡한 권한 문제를 피하기 위해, 사용자 홈 디렉토리(`_`~/redash)에 설치를 진행합니다. 이 방법은 가장 안정적이고 권장되는 방식입니다.
1단계: 완전 초기화
이전 설치 시도에서 남은 파일이나 설정이 있다면 충돌을 일으킬 수 있습니다. 아래 명령어로 깨끗하게 정리합니다.
참고: Redash를 처음 설치하는 경우 이 단계는 건너뛰어도 됩니다.
# 기존 /opt/redash 폴더 삭제 (오류가 나도 괜찮습니다)
sudo rm -rf /opt/redash
# 도커 시스템 정리 (모든 컨테이너, 이미지, 볼륨 등 삭제)
docker system prune -a --volumes -f
2단계: Docker Hub 로그인
Docker Hub의 이미지 다운로드 제한을 피하기 위해 로그인합니다. 터미널에 아래 명령어를 입력하고 계정 정보를 입력하세요.
docker login
3단계: 새로운 설치 폴더 생성
사용자 홈 디렉토리에 Redash 설치를 위한 폴더를 생성합니다. `sudo`가 필요 없습니다.
# 홈 디렉토리로 이동
cd ~
# redash 설치 폴더와 데이터베이스 폴더 생성
mkdir -p ~/redash/postgres-data
4단계: 설정 파일 생성
방금 만든 `~/redash` 폴더로 이동한 뒤, `compose.yaml`과 `env` 파일을 생성합니다.
cd ~/redash
`compose.yaml` 파일 생성:
`vi compose.yaml` 또는 다른 편집기를 사용하여 아래 내용 전체를 복사-붙여넣기 하세요.
services:
server:
image: redash/redash:10.1.0.b50633
platform: linux/amd64
depends_on:
- postgres
- redis
env_file: ~/redash/env
restart: always
ports:
- "5100:5000"
worker:
image: redash/redash:10.1.0.b50633
platform: linux/amd64
depends_on:
- postgres
- redis
env_file: ~/redash/env
restart: always
command: worker
redis:
image: redis:7-alpine
restart: always
postgres:
image: postgres:13-alpine
env_file: ~/redash/env
volumes:
- ~/redash/postgres-data:/var/lib/postgresql/data
restart: always
nginx:
image: redash/nginx:latest
ports:
- "80:80"
depends_on:
- server
links:
- server:redash
restart: always
`env` 파일 생성:
`vi env` 명령어로 파일을 열고 아래 내용을 붙여넣으세요. 비밀번호와 시크릿 키는 원하는 값으로 변경하는 것을 권장합니다.
PYTHONUNBUFFERED=0
REDASH_LOG_LEVEL=INFO
REDASH_REDIS_URL=redis://redis:6379/0
POSTGRES_PASSWORD=your_postgres_password
REDASH_COOKIE_SECRET=your_super_secret_cookie
REDASH_DATABASE_URL=postgresql://postgres:your_postgres_password@postgres/postgres
5단계: Redash 실행
`~/redash` 폴더 안에서 아래 명령어를 순서대로 실행합니다.
1. 데이터베이스 테이블 생성 (최초 1회만 실행):
docker compose run --rm server create_db
2. 모든 서비스 실행:
docker compose up -d
설치가 완료되면 웹 브라우저에서 http://localhost 또는 http://localhost:5100 으로 접속하여 Redash 초기 설정 화면을 확인하세요.
Redash와 BigQuery 연결하기
Redash가 BigQuery 데이터에 접근하려면 Google Cloud 서비스 계정과 JSON 키 파일이 필요합니다.
A. Google Cloud 서비스 계정 생성
- GCP 콘솔 접속: Google Cloud Console에 로그인합니다.
- 서비스 계정 페이지 이동: 왼쪽 메뉴에서 IAM 및 관리자 > 서비스 계정으로 이동합니다.
- 서비스 계정 만들기: 상단의 [+ 서비스 계정 만들기]를 클릭하고, 계정 이름을 입력합니다 (예: `redash-connector`).
-
역할 부여 (중요): Redash에 필요한 권한을 부여합니다. 아래 두 가지 역할을 검색하여 추가하세요.
BigQuery 데이터 뷰어
(BigQuery Data Viewer)BigQuery 작업 사용자
(BigQuery Job User)
- JSON 키 파일 다운로드:
- 생성된 서비스 계정 목록에서 방금 만든 계정의 이메일 주소를 클릭합니다.
- 상단의 키(KEYS) 탭으로 이동합니다.
- [키 추가] > [새 키 만들기]를 선택하고, 키 유형으로 **JSON**을 선택 후 [만들기]를 클릭합니다.
- JSON 키 파일이 컴퓨터에 다운로드됩니다. 이 파일은 비밀 정보이므로 안전하게 보관하세요.
B. Redash 데이터 소스 추가
- Redash 데이터 소스 메뉴: Redash 로그인 후, 오른쪽 상단 **설정(⚙️) 아이콘** > **Data Sources**를 클릭합니다.
- 새 데이터 소스 추가: **[+ New Data Source]** 버튼을 누르고 목록에서 **BigQuery**를 선택합니다.
-
연결 정보 입력:
- Name: 데이터 소스를 식별할 이름을 입력합니다 (예: `GCP BigQuery`).
- GCP Project ID: 연결할 GCP 프로젝트의 ID를 입력합니다.
- JSON Key File: 위에서 다운로드한 JSON 키 파일의 전체 내용을 복사하여 이 칸에 붙여넣습니다.
- 연결 테스트 및 저장: [Test Connection]을 눌러 'Success'가 나오는지 확인한 후, [Create] 버튼을 눌러 저장을 완료합니다.
REST API 사용하기
Redash의 거의 모든 기능은 REST API를 통해 자동화할 수 있습니다. 특정 쿼리의 최신 결과를 가져오는 예시입니다.
1. API 요청 정보 확인
- 사용자 API 키: Redash 프로필 페이지(Edit Profile)의 **API Key** 탭에서 확인할 수 있습니다.
- 쿼리 ID: API로 실행할 쿼리를 저장한 후, 웹 브라우저 주소창의 `.../queries/ID`에서 `ID` 숫자를 확인합니다.
2. API 요청 예시 (cURL)
아래는 특정 쿼리의 최신 결과를 JSON 형식으로 가져오는 API 요청입니다.
# YOUR_API_KEY와 YOUR_REDASH_URL, QUERY_ID를 실제 값으로 변경하세요.
curl -X POST -H "Authorization: Key YOUR_API_KEY" "YOUR_REDASH_URL/api/queries/QUERY_ID/results"
예시:
curl -X POST -H "Authorization: Key supersecret123" "http://localhost:5100/api/queries/5/results"
3. 추가 API 요청 예시 (Shell Script)
아래 스크립트는 새 쿼리를 동적으로 생성하고 즉시 실행하여 결과를 받아오는 전체 과정을 자동화합니다. 스크립트를 파일(예: `run_query.sh`)로 저장하고 실행 권한을 준 뒤(chmod +x run_query.sh
) 서버 환경에서 실행하세요.
#!/bin/bash
# Redash API 키와 URL, 데이터 소스 ID를 설정합니다.
# 중요: API 키는 민감한 정보이므로 외부로 노출되지 않도록 주의해야 합니다.
# 이 스크립트는 서버 환경에서 안전하게 실행하는 것을 전제로 합니다.
API_KEY="YOUR_REDASH_API_KEY" # Redash 프로필에서 발급받은 실제 API 키로 교체하세요.
REDASH_URL="http://localhost:5100" # Redash 설치 주소로 변경하세요.
DATA_SOURCE_ID=1 # 쿼리를 실행할 데이터 소스의 ID로 변경하세요.
# 실행할 SQL 쿼리를 변수로 정의합니다.
SQL_QUERY="SELECT * FROM \`your_project_id.your_dataset.your_table\`;" # 실제 프로젝트, 데이터셋, 테이블명으로 변경하세요.
echo "1단계: 새로운 쿼리를 생성하고 ID를 받아옵니다..."
# 1. 새로운 쿼리 생성을 요청하고, 그 응답에서 jq를 사용해 'id' 값만 추출합니다.
# -s 옵션은 curl의 진행상황 출력을 숨깁니다.
QUERY_ID=$(curl -s -X POST \
-H "Authorization: Key ${API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"data_source_id": '${DATA_SOURCE_ID}',
"query": "'"${SQL_QUERY}"'",
"name": "Dynamic Query from Script"
}' \
"${REDASH_URL}/api/queries" | jq '.id')
# 쿼리 ID를 성공적으로 받았는지 확인합니다.
if [ -z "$QUERY_ID" ] || [ "$QUERY_ID" == "null" ]; then
echo "오류: 쿼리 ID를 받아오지 못했습니다. API 키나 데이터 소스 ID를 확인하세요."
exit 1
fi
echo "성공! 새로 생성된 쿼리 ID: ${QUERY_ID}"
echo "----------------------------------------"
echo "2단계: 받은 ID로 쿼리 결과를 요청합니다..."
# 2. 위에서 받은 QUERY_ID를 사용하여 쿼리 결과를 요청합니다.
# 이 단계는 쿼리 실행을 '요청'하며, 결과는 비동기적으로 처리될 수 있습니다.
# job.id를 받아 상태를 폴링하거나, 단순 결과를 위해 /api/queries/QUERY_ID/results.json?api_key=... 엔드포인트를 사용할 수 있습니다.
curl -X POST \
-H "Authorization: Key ${API_KEY}" \
"${REDASH_URL}/api/queries/${QUERY_ID}/results"
echo "\n\n쿼리 실행 요청 완료."