สถานะระบบ (Health)
หน้า Health สำหรับ Admin ใช้มอนิเตอร์สถานะการทำงานของระบบทุกชั้น
คืออะไร?
Health Dashboard แสดงสถานะ:
- Backend API (NestJS on Render)
- Database (Supabase PostgreSQL)
- Storage (Cloudflare R2)
- Cache (in-memory)
- External integrations (Carrier APIs, Webhooks)
วิธีเข้าหน้า Health
Sidebar (Admin) → Health
องค์ประกอบที่ดู
1. Service Status Cards
แต่ละ Service แสดง:
- 🟢 Healthy — ใช้งานปกติ
- 🟡 Degraded — ใช้ได้แต่ช้า
- 🔴 Down — เข้าไม่ได้
2. Latency Chart
กราฟ p50 / p95 / p99 ของ:
- API Response Time
- Database Query Time
ค่าปกติ
- p50 < 200ms
- p95 < 1s
- p99 < 3s
ถ้าสูงผิดปกติ — สืบทันที
3. Error Rate
% ของ Request ที่ error (4xx/5xx) แยกตาม endpoint
4. Throughput
Request/sec — เปรียบเทียบกับ baseline
5. Resource Usage
- CPU %
- Memory %
- DB Connections
- R2 Storage (GB used / total)
6. Queue Health
- Approval queue length
- Notification queue
- Webhook delivery queue (pending / failed)
Render Cold Start
Render Free Tier sleeps after 15 mins idle
ระบบของเรารันบน Render.com — Free plan จะ "หลับ" หลังไม่มี traffic 15 นาที
Request แรกหลังหลับใช้เวลา 30-60 วินาที ในการ wake up
วิธีแก้:
- Upgrade Render plan (Starter $7/mo no sleep)
- Setup Cron Ping ทุก 10 นาที (Internal Health Ping)
- ผู้ใช้ต้องอดทนรอ ~30 วินาที ครั้งแรกของวัน
Incident Log
แสดง Incident ย้อนหลัง:
- เริ่ม / สิ้นสุดเมื่อไหร่
- กระทบอะไร
- Root cause
- Action taken
Alerts
ตั้งให้ส่ง Notification เมื่อ:
- Service Down > 1 นาที
- Error Rate > 5%
- p95 latency > 3s
- Webhook fail > 10 ครั้งติด
ส่งไปที่:
- Slack (ผ่าน Webhook)
- LINE Notify
Maintenance Mode
หากต้องการ block User ชั่วคราว:
- กด Enable Maintenance Mode
- ใส่ Message (เช่น "Maintenance ระบบจะกลับมาเวลา 14:00")
- ทุก request จะได้ Maintenance page
- Admin ยัง Login ได้
External Status Page
ระบบ generate Public Status Page:
- URL:
https://status.your-wms.com(ถ้า config) - แสดง Service status แบบ public
- ลูกค้า/ผู้ใช้เห็นก่อนถามมา