203 lines
5.5 KiB
Markdown
203 lines
5.5 KiB
Markdown
# Apache Superset 部署指南
|
|
|
|
## 概述
|
|
|
|
Apache Superset 是 MOMO Pro System 的 BI 分析平台,用於建立進階分析儀表板。
|
|
|
|
## 架構
|
|
|
|
```
|
|
┌─────────────────────────────────────┐
|
|
│ Apache Superset (UAT) │
|
|
│ https://monitor.wooo.work/superset│
|
|
└──────────────┬──────────────────────┘
|
|
│
|
|
┌───────────────────────────┼───────────────────────────┐
|
|
│ │ │
|
|
▼ ▼ ▼
|
|
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
|
|
│ UAT 資料庫 │ │ GCP 資料庫 │ │ DEV 資料庫 │
|
|
│ 192.168.0.110 │ │35.194.233.141 │ │ 127.0.0.1 │
|
|
│ momo_analytics│ │ momo_analytics│ │ momo_database │
|
|
└───────────────┘ └───────────────┘ └───────────────┘
|
|
```
|
|
|
|
## 快速部署
|
|
|
|
```bash
|
|
# 1. SSH 到 UAT 主機
|
|
ssh wooo@192.168.0.110
|
|
|
|
# 2. 進入 Superset 目錄
|
|
cd /home/wooo/momo_pro_system/docker/superset
|
|
|
|
# 3. 執行部署腳本
|
|
chmod +x deploy.sh
|
|
./deploy.sh deploy
|
|
|
|
# 4. 設定 Nginx 反向代理 (見下方)
|
|
|
|
# 5. 設定資料庫唯讀用戶 (見下方)
|
|
```
|
|
|
|
## 服務管理
|
|
|
|
```bash
|
|
# 查看狀態
|
|
./deploy.sh status
|
|
|
|
# 查看日誌
|
|
./deploy.sh logs
|
|
|
|
# 重啟服務
|
|
./deploy.sh restart
|
|
|
|
# 停止服務
|
|
./deploy.sh stop
|
|
|
|
# 清除所有資料 (危險)
|
|
./deploy.sh clean
|
|
```
|
|
|
|
## 訪問資訊
|
|
|
|
| 項目 | 值 |
|
|
|------|-----|
|
|
| 內部 URL | `http://127.0.0.1:8088` |
|
|
| 外部 URL | `https://monitor.wooo.work/superset/` |
|
|
| 帳號 | `admin` |
|
|
| 密碼 | `<SUPERSET_ADMIN_PASSWORD>` |
|
|
|
|
## Nginx 配置
|
|
|
|
將以下內容加入 `/etc/nginx/sites-available/monitor`:
|
|
|
|
```nginx
|
|
# Superset BI 分析平台
|
|
location /superset/ {
|
|
proxy_pass http://127.0.0.1:8088/;
|
|
proxy_http_version 1.1;
|
|
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;
|
|
proxy_set_header X-Script-Name /superset;
|
|
|
|
# WebSocket 支援
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
|
|
# 超時設定
|
|
proxy_connect_timeout 300;
|
|
proxy_send_timeout 300;
|
|
proxy_read_timeout 300;
|
|
}
|
|
```
|
|
|
|
然後重啟 Nginx:
|
|
```bash
|
|
sudo nginx -t && sudo systemctl reload nginx
|
|
```
|
|
|
|
## 資料庫連線設定
|
|
|
|
### 1. 建立唯讀用戶
|
|
|
|
在 UAT PostgreSQL 執行:
|
|
```bash
|
|
kubectl exec -it momo-postgres-0 -n momo -- psql -U momo -d momo_analytics
|
|
```
|
|
|
|
執行 SQL:
|
|
```sql
|
|
CREATE ROLE superset_readonly WITH LOGIN PASSWORD 'Wooo_Superset_RO_2026';
|
|
GRANT CONNECT ON DATABASE momo_analytics TO superset_readonly;
|
|
GRANT USAGE ON SCHEMA public TO superset_readonly;
|
|
GRANT SELECT ON ALL TABLES IN SCHEMA public TO superset_readonly;
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO superset_readonly;
|
|
```
|
|
|
|
### 2. 在 Superset 新增資料庫連線
|
|
|
|
登入 Superset 後:
|
|
1. 點擊右上角 `+` → `Database`
|
|
2. 選擇 `PostgreSQL`
|
|
3. 輸入連線資訊
|
|
|
|
**UAT 環境連線:**
|
|
```
|
|
postgresql+psycopg2://superset_readonly:Wooo_Superset_RO_2026@host.docker.internal:5432/momo_analytics
|
|
```
|
|
|
|
> 注意: 使用 `host.docker.internal` 連接主機上的 K8s PostgreSQL
|
|
|
|
**GCP 環境連線:**
|
|
```
|
|
postgresql+psycopg2://superset_readonly:Wooo_Superset_RO_2026@35.194.233.141:5432/momo_analytics
|
|
```
|
|
|
|
> 注意: GCP 需要先設定防火牆規則允許 UAT IP (114.32.151.246)
|
|
|
|
## 預計實作的儀表板
|
|
|
|
| 儀表板 | 對應功能 | 資料表 |
|
|
|--------|---------|--------|
|
|
| 銷售分析總覽 | `/sales_analysis` | daily_sales_snapshot, realtime_sales_monthly |
|
|
| 當日業績追蹤 | `/daily_sales` | daily_sales_snapshot |
|
|
| 成長分析 | `/growth_analysis` | realtime_sales_monthly |
|
|
| 月度總結 | `/monthly_summary_analysis` | monthly_summary_analysis |
|
|
| ABC 分析 | `/abc_analysis/detail` | products, price_records |
|
|
| 商品價格趨勢 | `/` (首頁看板) | products, price_records |
|
|
|
|
## 資源需求
|
|
|
|
| 項目 | 最低需求 | 建議配置 |
|
|
|------|----------|----------|
|
|
| CPU | 2 核心 | 4 核心 |
|
|
| RAM | 4 GB | 8 GB |
|
|
| 硬碟 | 10 GB | 20 GB |
|
|
|
|
## 故障排除
|
|
|
|
### 問題: 容器啟動失敗
|
|
|
|
```bash
|
|
# 查看日誌
|
|
docker compose logs superset
|
|
|
|
# 檢查資料庫連線
|
|
docker compose logs superset-db
|
|
```
|
|
|
|
### 問題: 無法連線到外部資料庫
|
|
|
|
1. 確認防火牆規則
|
|
2. 確認資料庫用戶權限
|
|
3. 測試連線:
|
|
```bash
|
|
docker exec -it momo-superset bash
|
|
pip install psycopg2-binary
|
|
python -c "import psycopg2; conn = psycopg2.connect('postgresql://...')"
|
|
```
|
|
|
|
### 問題: SQL Lab 查詢超時
|
|
|
|
修改 `superset_config.py`:
|
|
```python
|
|
SQLLAB_TIMEOUT = 600 # 秒
|
|
```
|
|
|
|
## 備份
|
|
|
|
```bash
|
|
# 備份 Superset 資料
|
|
docker exec superset-postgres pg_dump -U superset superset > superset_backup.sql
|
|
|
|
# 還原
|
|
docker exec -i superset-postgres psql -U superset superset < superset_backup.sql
|
|
```
|
|
|
|
## 更新日誌
|
|
|
|
- **2026-02-08**: 初始部署
|