Automated Incident Management Through Slack

Bài tóm tắt Airbnb 2022 3. Quy mô lớn Độ khó: Dễ

Airbnb · 2022 · 3. Quy mô lớn · Độ khó: Dễ — bài gốc

Bối cảnh

  • Airbnb chạy hơn một nghìn microservice do hàng trăm team nhỏ quản lý (2022). Khi có sự cố, khó nhất là biết service nào hỏng và phải page ai.
  • Người xử lý mất nhiều thời gian chuyển qua lại giữa Slack, PagerDuty và Jira để mở sự cố, gọi người và cung cấp bối cảnh.

Thay đổi chính

  • Tự viết một bot Slack (Go) làm "phễu duy nhất" cho mọi sự cố. Dùng lệnh chat thường thay cho slash command để mọi người trong kênh đều thấy lệnh đã gõ.
  • Bốn lệnh ứng với bốn pha mà Airbnb định nghĩa (phát hiện, liên lạc, leo thang, giải quyết):
    • new incident <tóm tắt>: tạo ticket Jira, hỏi có page incident manager không; các trường thông tin thêm là tuỳ chọn để không làm chậm.
    • new channel <ticket>: tạo kênh Slack theo mã ticket, mời incident manager, đặt topic là link ticket, ghi ngược link kênh vào Jira.
    • page <shortcut|service|user>: tra danh mục service của PagerDuty (shortcut khai báo trong YAML), tạo incident PagerDuty kèm ticket và kênh, rồi mời người trực vào kênh.
    • get timeline: gom mọi tin nhắn được gắn emoji 📝 thành timeline để dán vào báo cáo sau sự cố.
  • Sau sự cố: bot nhắc chủ ticket về buổi after action review hằng tuần, cảnh báo trước và sau hạn chót của ticket khắc phục, tự lưu trữ kênh 10 ngày sau khi đóng ticket.
  • Log4j (12/2021): cần tìm mọi service bị ảnh hưởng và gọi chủ của chúng. Bot page hơn 300 team trong vài phút; theo Airbnb, tiết kiệm khoảng 4 giờ so với gọi tay.
  • Kết quả theo Airbnb: ước tính 44 giờ công tiết kiệm trong năm 2022 (đo bằng thời gian làm tay của từng việc).
  • Việc tiếp theo: gom các lần page về một incident PagerDuty, và đưa trạng thái page (đã nhận chưa, đã leo thang tới ai) về kênh Slack.

Vì sao

  • Với hàng nghìn service, tra người trực là một bài toán dữ liệu (service → team → lịch trực), không thể nhớ được. Đặt việc tra này trong công cụ người ta đang dùng (Slack) bớt được chuyển ngữ cảnh.
  • Kênh sự cố đồng thời là bản ghi: gắn emoji ngay lúc xảy ra rẻ hơn dựng lại timeline sau đó.

Bài học cho SWE

  • Sự cố "một lỗi, hàng trăm chủ" (lỗ hổng thư viện dùng chung) là phép thử thật cho danh mục service và hệ page. Không có danh mục thì không gọi được 300 team trong vài phút (Xử lý sự cố và on-call).
  • Tự động hoá các việc hành chính quanh sự cố (ticket, kênh, timeline, nhắc hạn) là phần tự động hoá rủi ro thấp mà lợi rõ (Tự động hoá vận hành và auto-remediation).
  • So sánh: Shopify 2018 có bot Spy với lệnh tương tự và thêm cả thao tác khắc phục từ kênh chat Shopify 2018.

Liên quan