Thiết lập monitoring cho ứng dụng Next.js chạy trên VPS để phát hiện lỗi sớm
Ứng dụng Next.js trên VPS thường “chạy ổn” cho đến khi không còn ổn: CPU tăng vọt, RAM đầy, API timeout, SSR lỗi, cron treo, chứng chỉ SSL hết hạn, DB chậm, user báo lỗi trước dev. Vấn đề không nằm ở VPS hay Next.js, mà ở việc thiếu monitoring.
Monitoring tốt → phát hiện sớm. Cảnh báo đúng → xử lý nhanh. Log đủ ngữ cảnh → debug ngắn. Bài này hướng dẫn cách thiết lập monitoring thực tế cho app Next.js chạy trên VPS: từ process, tài nguyên máy chủ, log, uptime, error tracking, metrics, alert.
Monitoring cần theo dõi gì?
1. Uptime
Uptime trả lời câu hỏi: web còn truy cập được không?
Cần monitor:
– Trang chủ: https://domain.com
– Health check: https://domain.com/api/health
– API quan trọng: login, checkout, webhook
– SSL expiry
– DNS
– Response time
Nếu chỉ ping VPS → chưa đủ. VPS sống nhưng Next.js chết vẫn lỗi. Nên kiểm tra HTTP status + nội dung trả về.
Ví dụ endpoint health:
// app/api/health/route.ts
export async function GET() {
return Response.json({
status: "ok",
timestamp: new Date().toISOString(),
});
}
Nhiều lỗi xuất hiện ngay sau deploy. Cần ghi nhận deploy event.
Sau deploy:
pm2 restart next-app
pm2 status
curl -I https://domain.com
curl https://domain.com/api/health
Checklist:
– Build thành công
– App restart thành công
– Health check OK
– Không tăng 500
– Không tăng memory bất thường
– Sentry không báo lỗi mới
– Nginx không 502
Nếu dùng Sentry, gắn release theo commit. Khi lỗi tăng, biết ngay version nào gây lỗi.
Backup và monitoring liên quan trực tiếp
Monitoring phát hiện lỗi. Backup giúp phục hồi. Nếu DB hỏng mà không backup → alert chỉ báo tin xấu.
Cần monitor backup:
– Backup có chạy không?
– File backup có tạo không?
– Dung lượng hợp lý không?
– Restore test định kỳ chưa?
– Backup có copy ra ngoài VPS không?
VPS chết kéo theo backup local chết. Nên lưu thêm S3, Backblaze, R2, server khác.
Kết luận thực tế
Monitoring cho Next.js trên VPS không cần bắt đầu bằng hệ thống phức tạp. Bắt đầu đúng thứ tự:
1. PM2 → giữ process sống, xem log.
2. Health check → biết app thật sự ổn không.
3. Uptime Kuma → cảnh báo khi web down.
4. Netdata → thấy CPU/RAM/disk/network.
5. Sentry → biết lỗi user gặp.
6. Logrotate → tránh log làm đầy disk.
7. Runbook → xử lý nhanh khi alert đến.
Mục tiêu không phải dashboard đẹp. Mục tiêu: lỗi xảy ra → biết sớm, biết nguyên nhân, biết cách xử lý. Với Next.js chạy trên VPS, chỉ cần vài lớp monitoring đúng chỗ, bạn đã giảm mạnh thời gian downtime, giảm phụ thuộc vào báo lỗi từ user, tăng độ tin cậy cho sản phẩm.