Cơ sở dữ liệu 22/09/2026 6 phút

Cần cảnh báo những gì trên PostgreSQL production: các chỉ số sống còn

Giám sát chỉ có ích khi cảnh báo đúng thứ, đúng lúc. Bài này đo thật trên một database các chỉ số cần đặt ngưỡng báo động: nguy cơ wraparound transaction ID (cảnh báo số một), kết nối gần cạn, giao dịch dài, replication lag, và cache hit ratio. PostgreSQL 16.

Lập trình 22/09/2026 7 phút

Tổng kết Observability: ghép metric, trace, log thành một bức tranh — và checklist thực chiến

Mười một phần qua ta dựng từng mảnh observability bằng demo đo thật. Bài cuối ghép chúng lại: một request duy nhất phát cả ba tín hiệu — metric, trace, log — chia sẻ cùng một trace_id, và chính trace_id đó là sợi chỉ nối metric báo động với log và trace để điều tra. Kèm bảng tổng hợp mọi con số đo thật xuyên suốt loạt bài và một checklist gắn observability vào service của bạn.

Lập trình 22/09/2026 6 phút

Consumer lag: con số nói cho bạn biết hệ thống Kafka sắp sập trước khi nó sập

Nếu chỉ được theo dõi một chỉ số của Kafka, hãy chọn consumer lag — khoảng cách giữa chỗ producer đã ghi và chỗ consumer đã xử lý. Bài này đo thật trong lab: lag phình từ 700 lên 1200 khi producer ghi nhanh hơn consumer, rồi co về 0 khi consumer đuổi kịp. Hiểu công thức LAG = LOG-END − CURRENT, phân biệt offset lag với time lag, và biết dấu hiệu nguy hiểm thật: lag tăng đều không ngừng.

Lập trình 22/09/2026 7 phút

Bốn loại metric Prometheus: counter, gauge, histogram, summary — và khi nào dùng cái nào

Counter, gauge, histogram, summary nghe na ná nhau nhưng trả lời bốn câu hỏi khác hẳn. Bài này instrument một Go app với cả bốn, bắn 150 request thật rồi đọc thẳng output /metrics: counter dừng ở 150, gauge vọt lên 51 lúc tải rồi về 0, histogram chia bucket cộng dồn, summary tự tính quantile phía client. Kèm bẫy chọn sai loại khiến số liệu thành vô dụng.

Lập trình 22/09/2026 6 phút

PromQL cho ra hồn: rate, increase và sum by — biến counter thô thành câu trả lời

Counter của Prometheus chỉ là con số cộng dồn vô nghĩa khi đọc trực tiếp — http_requests_total=1055 chẳng nói lên gì. Sức mạnh nằm ở PromQL. Bài này dựng một app với counter gắn nhãn path/status, bắn tải đều rồi chạy query thật trên obs-prom: rate() ra đúng 10/5/2 req/s, increase ra đúng 600 trong 1 phút, sum by gộp theo nhãn, và một dòng tính tỉ lệ lỗi 4.4%.

Lập trình 22/09/2026 7 phút

p50, p95, p99: vì sao trung bình độ trễ nói dối và percentile mới nói thật

Dashboard báo độ trễ trung bình 36ms — service khoẻ? Bài này chạy thật một app có phân bố lệch (95% nhanh, 5% chậm) rồi đo bằng histogram_quantile: trung bình 36ms và p95 25ms đều đẹp, nhưng p99 là 778ms — cứ 100 user thì 1 người chờ gần 0.8 giây. Và một bất ngờ: p99 đo được cao hơn cả giá trị chậm nhất thật, vì bucket chọn quá rộng.