10 KiB
10 KiB
Dozzle Multi-Host Setup Guide
คู่มือการตั้งค่า Dozzle สำหรับ monitor Docker containers บนหลาย hosts
🏗️ Architecture Overview
┌─────────────────────────────────────────────────────────────┐
│ Main Server (Current Host) │
│ ├─ Nginx Proxy Manager │
│ ├─ Keycloak │
│ ├─ PostgreSQL │
│ ├─ API Service │
│ ├─ Supabase │
│ ├─ Superset │
│ └─ Dozzle (Main UI) ──────────────┐ │
└───────────────────────────────────┼─────────────────────────┘
│
┌───────────────┴───────────────┐
│ │
┌───────────▼──────────┐ ┌────────────▼─────────┐
│ 192.168.100.9 │ │ 192.168.100.9 │
│ Airbyte Host │ │ Airflow Host │
│ ├─ Airbyte Services │ │ ├─ Airflow Services │
│ └─ Dozzle Agent │ │ └─ Dozzle Agent │
│ (Port 7007) │ │ (Port 7008) │
└──────────────────────┘ └──────────────────────┘
📋 Setup Steps
Step 1: ติดตั้ง Dozzle Agent บน Remote Hosts
สำหรับ Airbyte Host (192.168.100.9:7007)
สร้าง/แก้ไข docker-compose.yml ใน Airbyte directory:
services:
# ... existing Airbyte services ...
dozzle-agent:
image: amir20/dozzle:latest
container_name: dozzle-agent-airbyte
command: agent
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
ports:
- "7007:7007"
environment:
DOZZLE_LEVEL: info
DOZZLE_HOSTNAME: Airbyte Server
TZ: Asia/Bangkok
restart: unless-stopped
networks:
- airbyte_network # ใช้ network ของ Airbyte
Start agent:
docker compose up -d dozzle-agent
สำหรับ Airflow Host (192.168.100.9:7008)
สร้าง/แก้ไข docker-compose.yml ใน Airflow directory:
services:
# ... existing Airflow services ...
dozzle-agent:
image: amir20/dozzle:latest
container_name: dozzle-agent-airflow
command: agent
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
ports:
- "7008:7007" # External: 7008, Internal: 7007
environment:
DOZZLE_LEVEL: info
DOZZLE_HOSTNAME: Airflow Server
TZ: Asia/Bangkok
restart: unless-stopped
networks:
- shared_data_network # ใช้ network ของ Airflow
Start agent:
docker compose up -d dozzle-agent
Step 2: ตรวจสอบ Agents
# ตรวจสอบ Airbyte agent
curl http://192.168.100.9:7007/healthcheck
# ตรวจสอบ Airflow agent
curl http://192.168.100.9:7008/healthcheck
# ดู logs
docker logs dozzle-agent-airbyte
docker logs dozzle-agent-airflow
Step 3: Start Dozzle Main UI (Main Server)
cd 01-infra
docker compose up -d dozzle
# ตรวจสอบ
docker logs dozzle -f
Step 4: เข้าใช้งาน
Direct access:
http://localhost:9999/dozzle
ผ่าน Nginx:
http://ai.sriphat.com/dozzle
🔧 Configuration Details
Main Server (.env.global)
# Dozzle - Docker Log Viewer & Monitoring
DOZZLE_PORT=9999
DOZZLE_LEVEL=info
DOZZLE_BASE=/dozzle
DOZZLE_HOSTNAME=Sriphat Main Server
DOZZLE_AUTH_PROVIDER=none
DOZZLE_RESTART_POLICY=unless-stopped
# Remote agents: Airbyte and Airflow on 192.168.100.9
# Format: host:port,host:port (comma-separated)
DOZZLE_REMOTE_AGENT=192.168.100.9:7007,192.168.100.9:7008
Agent Configuration
Airbyte Agent:
- Port: 7007
- Hostname: Airbyte Server
- Monitors: Airbyte containers
Airflow Agent:
- Port: 7008
- Hostname: Airflow Server
- Monitors: Airflow containers
🌐 Nginx Configuration
Dozzle config ถูกเพิ่มใน:
01-infra/nginx-configs/dozzle.conf01-infra/nginx-configs/complete-example.conf
ตั้งค่าใน Nginx Proxy Manager:
- ไปที่ Proxy Host → Edit
- Tab "Advanced"
- เพิ่ม Dozzle config จาก
complete-example.conf
🔍 Features
1. Multi-Host Monitoring
- ✅ ดู logs จาก Main Server
- ✅ ดู logs จาก Airbyte Host (192.168.100.9:7007)
- ✅ ดู logs จาก Airflow Host (192.168.100.9:7008)
- ✅ Switch ระหว่าง hosts ผ่าน dropdown
2. Real-time Log Streaming
- Live log updates
- Color-coded logs
- JSON formatting
- Multi-line grouping
3. Container Management
- View container stats (CPU, Memory, Network)
- Start/Stop/Restart containers
- Interactive shell access
- Container filtering
4. Advanced Features
- Search และ filter logs
- Download logs
- Multiple container view
- SQL-based log querying
🐛 Troubleshooting
Issue: Agent ไม่ปรากฏใน UI
ตรวจสอบ:
# 1. Agent ทำงานหรือไม่
docker ps | grep dozzle-agent
# 2. Port เปิดหรือไม่
netstat -tulpn | grep 7007
netstat -tulpn | grep 7008
# 3. Firewall
sudo ufw status
sudo ufw allow 7007
sudo ufw allow 7008
# 4. Network connectivity
ping 192.168.100.9
telnet 192.168.100.9 7007
telnet 192.168.100.9 7008
Issue: Connection Refused
สาเหตุ:
- Agent ไม่ทำงาน
- Firewall block port
- Network ไม่เชื่อมต่อ
วิธีแก้:
# Restart agent
docker restart dozzle-agent-airbyte
docker restart dozzle-agent-airflow
# ตรวจสอบ logs
docker logs dozzle-agent-airbyte
docker logs dozzle-agent-airflow
# ทดสอบ connectivity
curl http://192.168.100.9:7007/healthcheck
curl http://192.168.100.9:7008/healthcheck
Issue: Containers ไม่แสดงใน Agent
สาเหตุ:
- Docker socket ไม่ mount
- Agent ไม่มี permission
วิธีแก้:
# ตรวจสอบ volume mount
docker inspect dozzle-agent-airbyte | grep docker.sock
# ตรวจสอบ permissions
ls -la /var/run/docker.sock
# Restart agent
docker restart dozzle-agent-airbyte
🔐 Security Considerations
1. Network Security
ใช้ Internal Network (แนะนำ):
# Agent ไม่ expose port ออกภายนอก
# ใช้ Docker network แทน
dozzle-agent:
# ไม่ต้องมี ports section
networks:
- shared_data_network
Main UI เชื่อมต่อผ่าน network:
DOZZLE_REMOTE_AGENT=dozzle-agent-airbyte:7007,dozzle-agent-airflow:7007
2. Firewall Rules
# อนุญาตเฉพาะ Main Server
sudo ufw allow from <main-server-ip> to any port 7007
sudo ufw allow from <main-server-ip> to any port 7008
3. Authentication
Enable simple auth:
DOZZLE_AUTH_PROVIDER: simple
สร้าง 01-infra/data/dozzle/users.yml:
users:
- name: admin
username: admin
password: $2a$10$...
email: admin@sriphat.com
4. Read-only Docker Socket
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
📊 Monitoring
Health Checks
# Main UI
curl http://localhost:9999/dozzle/healthcheck
# Airbyte Agent
curl http://192.168.100.9:7007/healthcheck
# Airflow Agent
curl http://192.168.100.9:7008/healthcheck
Logs
# Main UI
docker logs dozzle -f
# Agents
docker logs dozzle-agent-airbyte -f
docker logs dozzle-agent-airflow -f
🎯 Best Practices
- ใช้ Internal Network - ไม่ expose agent ports ออกภายนอก
- Enable Authentication - ใช้ simple auth หรือ forward proxy
- Monitor Agent Health - ตั้ง healthcheck และ alerting
- Backup Configuration - backup
users.ymlและ.envfiles - Update Regularly - อัพเดท Dozzle image เป็นประจำ
- Use HTTPS - ใช้ SSL/TLS สำหรับ production
- Limit Access - ใช้ firewall และ access lists
📚 References
🔄 Maintenance
Update Dozzle
# Main UI
cd 01-infra
docker compose pull dozzle
docker compose up -d dozzle
# Agents
docker pull amir20/dozzle:latest
docker restart dozzle-agent-airbyte
docker restart dozzle-agent-airflow
Backup Configuration
# Backup .env
cp .env.global .env.global.backup
# Backup users.yml (if using auth)
cp 01-infra/data/dozzle/users.yml users.yml.backup
🎉 Summary
ตอนนี้คุณมี:
- ✅ Dozzle Main UI บน Main Server
- ✅ Dozzle Agent บน Airbyte Host (192.168.100.9:7007)
- ✅ Dozzle Agent บน Airflow Host (192.168.100.9:7008)
- ✅ Nginx reverse proxy สำหรับ
/dozzlesubpath - ✅ Multi-host monitoring ผ่าน single UI
- ✅ Real-time log streaming จากทุก hosts
เข้าใช้งานที่:
http://ai.sriphat.com/dozzle
Features:
- Monitor logs จาก Main Server, Airbyte, และ Airflow
- Real-time streaming
- Container stats
- Interactive shell
- Search และ filter