Xây dựng Hệ thống Tổng hợp Kiểm tra Sức khỏe Đa vùng (Multi-Region Health-Check Aggregator)

Một người dùng ở São Paulo truy cập vào một edge node bị lỗi. Họ không gửi báo cáo lỗi. Họ đóng tab và đi xem thứ khác.

Một trình giám sát uptime thông thường sẽ bỏ lỡ điều này. Hầu hết các trình giám sát đều thực hiện kiểm tra (probe) từ một vị trí duy nhất. Từ vị trí đó, mọi thứ trông vẫn có vẻ ổn.

Trang trạng thái của chúng tôi từng hiển thị uptime 100% trong khi người dùng thực tế lại gặp tình trạng timeout. Một trình kiểm tra sức khỏe toàn cầu duy nhất đã đánh lừa chúng tôi.

Đây là cách chúng tôi xây dựng một hệ thống nói lên sự thật.

Vấn đề: Thành kiến lấy mẫu (Sampling Bias) Nếu trình giám sát của bạn nằm trong một trung tâm dữ liệu, nó chỉ thấy được một thực tế duy nhất. Bạn có thể báo cáo trạng thái vẫn ổn ngay cả khi các edge tại Singapore và São Paulo đang bị mất kết nối.

Lưu lượng video khiến vấn đề này trở nên tồi tệ hơn. Các lỗi khu vực phổ biến bao gồm:

Một phản hồi "200 OK" duy nhất gần như không cho bạn biết được điều gì.

Ba quy tắc về Sức khỏe của chúng tôi: Chúng tôi đã vượt xa các mã trạng thái (status codes). Chúng tôi định nghĩa sức khỏe dựa trên ba chỉ số:

Giải pháp: Kiểm tra Đa vùng (Multi-Region Probing) Chúng tôi đã ngừng sử dụng một trình giám sát lớn duy nhất. Thay vào đó, chúng tôi triển khai các tệp thực thi Go (Go binaries) nhỏ gọn lên các máy chủ VPS khu vực giá rẻ.

Mỗi trình kiểm tra (prober):

Chúng tôi sử dụng SQLite để lưu trữ. Nó đơn giản và xử lý khối lượng công việc của chúng tôi mà không tốn nhiều tài nguyên (zero overhead). Chúng tôi lưu trữ các mẫu thô (raw samples) thay vì dữ liệu đã được tổng hợp trước. Điều này cho phép chúng tôi tính toán lại điểm số lịch sử hoặc gỡ lỗi các lỗi cụ thể sau này.

Bí mật: Quorum Mạng lưới luôn có nhiễu. Một gói tin bị mất không có nghĩa là một sự cố ngừng hoạt động (outage).

Chúng tôi sử dụng hệ thống quorum để ngăn chặn các cảnh báo giả. Chúng tôi chỉ tuyên bố một edge bị "down" khi nhiều khu vực cùng đồng thuận. Nếu một khu vực thấy lỗi nhưng các khu vực khác thì không, chúng tôi sẽ không gửi thông báo (page) cho đội ngũ. Lựa chọn thiết kế này đã loại bỏ 90% các cảnh báo giả của chúng tôi.

Các bài học chính:

Bạn không cần một nền tảng quan sát cồng kềnh. Bạn cần các probe cục bộ, dữ liệu thô, và một quy tắc không cho phép sự hoảng loạn trước các tín hiệu nhiễu.

Nguồn: https://dev.to/ahmet_gedik778845/building-a-multi-region-health-check-aggregator-for-video-cdn-edges-2865