Alerting Framework at Airbnb
Bài tóm tắt Airbnb 2017 2. Tăng trưởng Độ khó: Trung bình
Airbnb · 2017 · 2. Tăng trưởng · Độ khó: Trung bình — bài gốc
Ghép với Airbnb 2026: chín năm sau, chính khung alert này được thay khi Airbnb rời nhà cung cấp.
Bối cảnh
- Năm 2017 Airbnb không có đội vận hành riêng: từng team tự cấu hình monitoring và tự xử lý sự cố của service mình. Họ dùng Datadog.
- Yêu cầu mà giao diện Datadog không đáp ứng: một alert chung phải báo người khác nhau theo host/role; định nghĩa alert tự cập nhật khi hạ tầng đổi; team thấy mình đang nhận alert nào và bàn việc thêm/sửa/xoá qua code review; khi alert bắn, dễ biết có phải do thay đổi gần đây và vì sao ngưỡng đặt như vậy.
Thay đổi chính
- Đưa cấu hình alert ra khỏi UI vào một repo cấu hình, đồng bộ qua API của Datadog bằng công cụ Interferon (gem Ruby, open source).
- Ruby DSL + host source: alert viết bằng DSL; Interferon đọc thông tin host từ các nguồn cắm thêm (ví dụ AWS API, hoặc Optica của Airbnb) gồm role Chef và metadata sở hữu (
owners,owner_groups). Một alert chung (ví dụ bộ nhớ) sinh thành nhiều alert, mỗi role một bản, định tuyến tới chủ của host đó. Trườngapplieslọc host (bỏ host test); nhóm người khai báo bằng YAML rồi mở rộng thành danh sách người được tag. - Quy trình như code: repo bắt buộc peer review (để alert có message rõ và ngưỡng hợp lý); pre-commit có trình kiểm cú pháp query Datadog; mỗi commit tạo artifact, deploy thì Interferon tải định nghĩa hiện có từ Datadog, so với bản sinh ra và chỉ sửa phần khác. Chạy lại mỗi giờ để theo kịp host/role mới. Có dry-run hiện delta giữa nhánh và Datadog; team được khuyến khích chạy dry-run trước khi deploy.
- Team thêm host source riêng (ví dụ tên các hàng đợi Resque, ai sở hữu, ngưỡng đầy) trong repo của mình mà không cần sửa upstream.
Vì sao
- Khi mỗi team tự trực service của mình, alert phải đi theo quyền sở hữu, và quyền sở hữu phải lấy từ dữ liệu hạ tầng chứ không nhập tay (Xử lý sự cố và on-call).
- Alert là cấu hình production: có lịch sử, review, rollback như code (Observability và monitoring).
Bài học cho SWE
- Viết alert một lần theo template, sinh theo inventory; metadata sở hữu gắn với host/role quyết định ai bị gọi.
- Đồng bộ kiểu "so khác rồi chỉ sửa phần khác" + chạy định kỳ để cấu hình bám hạ tầng đang đổi.
- Message của alert nên có bước xử lý; đó là thứ người trực đọc đầu tiên.
Liên quan
- Airbnb 2026 · Airbnb 2026 · Loveholidays 2021 (định tuyến alert theo team) · Airbnb 2022
- Xử lý sự cố và on-call · Observability và monitoring
#Alert as code#Interferon#Datadog API#Ruby DSL#Host source#Ownership metadata#Dry-run#Optica#Chef role
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (4)