0

[Open Source] #68 - Keep: Nền tảng AIOps điều phối cảnh báo triệu sự kiện với Python, CEL và kiến trúc Workflow-as-Code

Trong thế giới vận hành hệ thống (SRE/DevOps), "Alert Fatigue" (mệt mỏi vì cảnh báo) là một cơn ác mộng thực sự. Khi hệ thống mở rộng, số lượng cảnh báo từ Datadog, Prometheus, Sentry hay Cloudwatch đổ về có thể lên tới hàng nghìn mỗi ngày, khiến các kỹ sư dễ dàng bỏ lỡ những sự cố thực sự nghiêm trọng. Keep xuất hiện như một "nhạc trưởng" điều phối, giúp hợp nhất, xử lý và tự động hóa phản ứng với các cảnh báo trên một nền tảng duy nhất.

Dưới góc độ kỹ thuật, Keep là một Case Study tuyệt vời về việc ứng dụng Python/FastAPI để xây dựng hệ thống xử lý sự kiện (event-driven) quy mô lớn và ứng dụng ngôn ngữ biểu thức CEL của Google để tối ưu hóa hiệu năng.

Github: https://github.com/keephq/keep


🛠️ 1. Nền tảng công nghệ: Hiệu năng cao và Khả năng mở rộng

Keep tận dụng sức mạnh của các công nghệ hiện đại nhất để xử lý luồng dữ liệu cảnh báo không ngừng nghỉ:

  • Backend (Python 3.11+ & FastAPI): Sử dụng FastAPI để xử lý bất đồng bộ (async/await), cho phép Keep tiếp nhận hàng nghìn webhook cảnh báo đồng thời với độ trễ cực thấp.
  • CEL (Common Expression Language): Một kỹ thuật "Pro" từ Google. Keep dùng CEL để cho phép người dùng viết các bộ lọc (filter) cảnh báo phức tạp. CEL chạy nhanh gần bằng mã máy và an toàn hơn việc thực thi eval() trong Python.
  • Arq & Redis: Hệ thống hàng đợi (task queue) dựa trên Redis để xử lý các Workflow và Action một cách không đồng bộ, đảm bảo tính nhất quán của dữ liệu.
  • Frontend (Next.js 15 & Tremor): Giao diện dashboard chuyên dụng cho quan sát (Observability), sử dụng Server Components để tối ưu tốc độ tải dữ liệu lớn.

🏗️ 2. Trụ cột kiến trúc: Trừu tượng hóa và Tự động hóa

Kiến trúc của Keep được thiết kế để trở thành một lớp "Orchestration" thông minh nằm trên tất cả các công cụ giám sát hiện có:

  • Provider Abstraction Layer: Keep định nghĩa một lớp interface chung cho hơn 100 tích hợp (từ Datadog tới Slack). Mỗi tích hợp là một module độc lập, giúp hệ thống cực kỳ dễ mở rộng (Extensible).
  • Workflow-as-Code (YAML): Lấy cảm hứng từ GitHub Actions, Keep cho phép định nghĩa các quy trình xử lý sự cố bằng file YAML. Bạn không chỉ nhận cảnh báo, bạn còn có thể định nghĩa các bước "tự chữa lành" (Self-healing).
  • Deduplication & Correlation Engine: Hệ thống sử dụng thuật toán Fingerprinting để băm (hash) các cảnh báo thô, từ đó loại bỏ các cảnh báo trùng lặp và sử dụng AI để gom nhóm các lỗi liên quan thành một Incident duy nhất.

🔄 3. Workflow: Hành trình từ Cảnh báo đến Hành động (Sequence Diagram)

Sơ đồ dưới đây mô tả cách Keep xử lý một cảnh báo thô từ nguồn tin và biến nó thành một hành động tự động:

image.png


⚡ 4. Các kỹ thuật "Pro-level" trong mã nguồn

  1. Google CEL Integration: Thay vì cho phép người dùng viết script Python (tiềm ẩn rủi ro bảo mật và chậm), Keep nhúng CEL để đánh giá các biểu thức logic. Điều này giúp các quy tắc lọc alert vừa mạnh mẽ vừa cực kỳ an toàn.
  2. Smart Fingerprinting: Keep cho phép tùy biến các trường dữ liệu dùng để tạo ID duy nhất cho alert. Ví dụ: Bạn có thể quy định alert từ host-Ahost-B là giống nhau nếu chúng cùng một mã lỗi, giúp giảm nhiễu tối đa.
  3. Real-time với Soketi: Sử dụng giao thức Pusher qua server Soketi để đẩy dữ liệu alert lên giao diện ngay lập tức mà không cần người dùng reload trang, cực kỳ quan trọng trong các tình huống On-call căng thẳng.
  4. Multi-strategy Secret Management: Keep hỗ trợ quản lý API Key từ nhiều nguồn: từ biến môi trường đơn giản đến các giải pháp Enterprise như AWS Secret Manager hay HashiCorp Vault.

⚖️ 5. So sánh chiến lược

Tiêu chí Keep (Open Source) PagerDuty / Opsgenie Grafana Alerting
Bản chất Lớp điều phối (Orchestration) Công cụ thông báo (Notification) Một phần của Dashboard
Khả năng tự động Rất cao (YAML Workflow) Trung bình Thấp
Xử lý AI AI Correlation (Self-hostable) AI Ops (Đắt đỏ) Rule-based cơ bản
Quyền kiểm soát Toàn quyền (Tự host dữ liệu) Phụ thuộc bên thứ 3 Giới hạn trong Grafana

✅ Kết luận: Tại sao Keep là hình mẫu lý tưởng cho AIOps?

Keep không cố gắng thay thế các công cụ giám sát hiện có; nó làm cho chúng hoạt động tốt hơn. Dự án là một bài học về việc biến dữ liệu tĩnh thành hành động động. Bằng cách sử dụng YAML để mô tả quy trình làm việc, Keep đưa tư duy lập trình vào thế giới vận hành hệ thống một cách mượt mà.

Đối với các kỹ sư backend và DevOps, nghiên cứu Keep sẽ giúp bạn hiểu sâu về:

  • Cách xây dựng hệ thống Event-driven hiệu suất cao với Python.
  • Ứng dụng CEL để xử lý logic động một cách an toàn.
  • Tư duy thiết kế Incident Management quy mô lớn.

Hy vọng bản phân tích này mang lại cho bạn những góc nhìn mới về tương lai của vận hành hệ thống thông minh. Đừng quên Upvote và Follow mình để đón chờ những "kỳ quan" mã nguồn tiếp theo nhé!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí