Bạn có biết?
Ứng dụng "chạy" nhưng đang hấp hối: event loop nghẽn 5 giây, memory tăng không phanh, hàng trăm request treo — mà không ai biết, cho tới khi user ồ ạt báo lỗi. Monitoring + Health Checks là đôi mắt của hệ thống: máy biết bạn đang ốm trước cả khi bạn ngã. Bài này dạy bạn dựng đủ bộ: health endpoints, metrics, event loop lag, và alert khi có gì bất thường.
Health checks: /healthz, /readyz, /livez
Phân biệt ba loại — đừng gộp chung một endpoint:
- /livez — tiến trình còn sống? (chỉ cần trả 200 nhanh)
- /readyz — sẵn sàng nhận traffic? (kiểm tra DB, Redis, dependencies)
- /healthz — sức khỏe tổng thể (thường gộp livez + readyz)
import express from "express";
import Redis from "ioredis";
import { pool } from "./db.js";
const app = express();
const redis = new Redis(process.env.REDIS_URL);
const PORT = process.env.PORT || 3000;
// /livez — chỉ cần process sống
app.get("/livez", (req, res) => res.send("OK"));
// /readyz — kiểm tra dependency thật sự
app.get("/readyz", async (req, res) => {
const checks = {};
// DB: query nhẹ với timeout ngắn
{
pool.();
checks. = ;
} { checks. = ; }
{
redis.();
checks. = ;
} { checks. = ; }
healthy = .(checks).( s === );
res.(healthy ? : ).({ : healthy ? : , checks });
});
app.(, (req, res) => {
ready = ();
res.(ready. ? : ).(ready. ? : );
});
0 bình luận
Đang tải bình luận...
Để lại bình luận