Tổng quan về Access Hub Collector
Bối cảnh
Access Hub hiện quản lý kiểm kê máy chủ (Server), kết nối, PAM, IaC và phê duyệt, nhưng chưa biết máy chủ đang sống hay chết và khỏe hay yếu. Yêu cầu mới: giám sát máy chủ bằng agent cài trên máy (Linux: Ubuntu, Debian, CentOS và họ RHEL; Windows: 10, 11, Server), tích hợp vào Access Hub, quy mô có thể lên tới hàng nghìn máy chủ tùy công ty.
Access Hub là ứng dụng Laravel đa tenant (CompanyScope), hiện dùng SQLite khi dev và sẽ chuyển sang MySQL có tách read/write và scale riêng khi triển khai. Số liệu giám sát là dòng dữ liệu liên tục, khối lượng lớn, không phù hợp để đi thẳng vào Laravel hay MySQL. Vì vậy có một tầng độc lập đứng giữa: Access Hub Collector (gọi tắt Collector). Phần cài trên máy chủ là Access Hub Agent (gọi tắt Agent).
Mục tiêu
- Biết trạng thái từng máy chủ gần thời gian thực: online, offline, cảnh báo.
- Thu thập số liệu nền tảng: CPU, RAM, swap, đĩa, mạng, tải, uptime, dịch vụ, port, chứng chỉ.
- Cảnh báo theo ngưỡng và theo mất tín hiệu, đi qua hệ thống thông báo, webhook, chuông realtime sẵn có của Access Hub.
- Scale ngang tới hàng chục nghìn máy mà không làm nghẽn Access Hub hay MySQL.
- Cô lập dữ liệu giữa các công ty tuyệt đối.
- Triển khai và vận hành agent hàng loạt dễ dàng, an toàn.
Phạm vi (giai đoạn 1 đến 3)
- Agent Linux và Windows, đẩy số liệu ra ngoài qua HTTPS (chỉ kết nối đi ra).
- Collector nhận, lưu, đánh giá cảnh báo, phục vụ truy vấn cho Access Hub.
- Phần control plane trong Access Hub: enroll, quản lý agent, luật, cảnh báo, giao diện, API, tài liệu.
- Kiểm tra nhẹ do agent thực hiện: port đang lắng nghe, kết nối TCP, HTTP, hạn chứng chỉ TLS, trạng thái dịch vụ.
Ngoài phạm vi (ghi nhận cho giai đoạn 4)
- Thu thập log tập trung.
- Thực thi lệnh từ xa trên máy chủ (có chủ ý không làm trong giai đoạn 1 đến 3, xem ADR 0010).
- Giám sát không cần agent (SNMP, ping từ hub), APM, tracing ứng dụng.
- Dự đoán bất thường bằng ML.
Thuật ngữ
| Thuật ngữ | Nghĩa |
|---|---|
| Access Hub | Ứng dụng Laravel hiện có, đóng vai control plane: danh tính, kiểm kê, luật, giao diện, thông báo |
| Collector | Access Hub Collector, dịch vụ Go trung gian, đóng vai data plane: nhận số liệu, lưu, đánh giá, đẩy sự kiện |
| Agent | Access Hub Agent, chương trình Go nhỏ cài trên mỗi máy chủ, thu thập và gửi số liệu |
| Enroll | Đăng ký một agent mới bằng mã dùng một lần, đổi lấy token riêng của agent |
| License | Mã dùng một lần, có hạn, do admin tạo trong Access Hub |
| Agent token | Bí mật lâu dài của một agent, dùng để gửi số liệu |
| Series | Một chuỗi thời gian xác định bởi tên chỉ số và tập nhãn |
| Tenant | Một công ty (Company) trong Access Hub |
| Registry | Bản đồ token -> (agent, company, server) mà collector cache từ Access Hub |
| Bus | Hàng đợi giữa ingest và worker: in-process ở giai đoạn 1, NATS JetStream về sau |
Nguyên tắc thiết kế
- Access Hub là nguồn sự thật về danh tính và cấu hình. Collector chỉ cache, không tự tạo danh tính.
- Danh tính luôn lấy từ token, không bao giờ từ nội dung gói tin. Agent không thể tự nhận là máy khác hay công ty khác.
- Chuỗi thời gian không nằm trong MySQL. MySQL chỉ giữ trạng thái và cấu hình.
- Collector chỉ gửi thay đổi trạng thái về Access Hub, không gửi từng mẫu số liệu.
- Agent chỉ kết nối đi ra, không mở cổng nghe, không nhận lệnh tùy ý.
- Mọi thứ có thể mất kết nối đều phải có bộ đệm và thử lại ở cả hai phía (agent buffer, collector outbox).
- Mọi thành phần chịu được khởi động lại đồng loạt (jitter, backoff, giới hạn tải).
- Đo được chính hệ thống giám sát (metrics, health, log có cấu trúc).