Access Hub Collector
Đồng bộ từ mã nguồn lúc 10:57, 03/10/2026
Skip to content

Rủi ro và câu hỏi mở ​

10 phút đọcCập nhật 02/10/2026access-hub-collector, docs/13-risks-open-questions.md

1. Sổ rủi ro ​

Xác suất (X) và tác động (T): T = thấp, V = vừa, C = cao.

#Rủi roXTBiện pháp giảm thiểu
R1Sức chứa thật thấp hơn ước tính, kiểm thử tải muộnVCagentsim từ GĐ 1, kiểm tải ở mỗi giai đoạn, bảng cỡ tải chỉ là ước tính
R2Bùng nổ cardinality làm sập TSDBVCDanh sách nhãn trắng, max_series mỗi agent, cắt giá trị nhãn, cảnh báo tổng series
R3Windows: PDH, bản địa hóa bộ đếm, MSI, ký mã, SmartScreenCVDùng PdhAddEnglishCounter, kiểm thử trên nhiều bản Windows và ngôn ngữ, chứng chỉ ký mã EV, nhóm thử nghiệm sớm ở GĐ 2
R4Lộ khóa ký cập nhật, đẩy mã độc lên hàng nghìn máyThấpRất caoKhóa trong HSM hoặc kho khóa CI, nhiều khóa công khai, quay lui, đợt triển khai theo tỷ lệ, dừng khẩn cấp, chỉ tăng phiên bản. Trì hoãn cập nhật tự động đến GĐ 3
R5Tải lên MySQL của Access Hub khi có sự kiện diện rộngVVGom nhóm group_down, seen theo lô, xử lý sự kiện theo lô, chỉ số hóa hợp lý, đọc từ replica cho trang tổng quan
R6Lệch đồng hồ giữa agent, collector, Access Hub làm sai for và cửa sổ thời gianVVserver_time trong mọi phản hồi, agent điều chỉnh, cảnh báo lệch, cửa sổ thời gian rộng có kiểm soát
R7License lộ qua argv, lịch sử shell, log CIVVCài qua biến môi trường, tệp, stdin, hạn ngắn, dùng một lần, gắn sẵn Server, tài liệu hướng dẫn rõ
R8Nhân bản máy từ image làm trùng danh tính agentVVmachine_id, phát hiện trùng, quy trình "sysprep" trong tài liệu (không ghi thông tin đăng nhập vào image)
R9Phụ thuộc quá nhiều thành phần (Redis, VM, NATS) làm tăng độ phức tạp vận hànhVVBắt đầu tối giản ở GĐ 1 (1 tiến trình, Redis, VM), thêm thành phần khi số đo cho thấy cần, tài liệu và runbook
R10Giấy phép Redis thay đổiVThấpDùng Valkey hoặc Redis tương thích, chỉ dùng lệnh cơ bản, đóng gói qua interface
R11Giới hạn VictoriaMetrics OSS (không downsampling, retention toàn cục)Chắc chắnVKiến trúc hai instance với vmalert (đã thiết kế), kiểm chứng lại khi triển khai, có phương án thay TSDB nhờ remote-write chuẩn
R12Đội ngũ chưa có kinh nghiệm GoVVChọn Go có chủ đích (ADR 0003), thời gian làm quen ở GĐ 0, review chặt, dùng thư viện đã kiểm chứng
R13Mở rộng phạm vi (log, lệnh từ xa) làm chậm MVPVVGĐ 4 tách riêng và cần ADR, giữ MVP nhỏ
R14Agent gây ảnh hưởng hiệu năng máy chủ sản xuấtThấpCNgân sách tài nguyên (CPU 1%, RSS 50 MB), giới hạn hệ điều hành (systemd CPUQuota, MemoryMax, Windows job object), kiểm thử tài nguyên trong CI, công tắc tắt khẩn cấp
R15Access Hub lỗi làm mất cảnh báoVVOutbox bền vững 24 giờ, thử lại, cảnh báo nội bộ trên outbox_oldest_age, kênh độc lập cho sự cố chính hệ thống
R16Đồng bộ registry sai làm agent hợp lệ bị từ chối hoặc agent thu hồi vẫn được nhậnThấpCĐẩy thay đổi trực tiếp và đối soát định kỳ, cache âm ngắn, kiểm thử thu hồi 60 giây, theo dõi ahc_registry_lookups_total
R17Kích thước và độ phức tạp của mã dùng chung giữa hai repo (.proto)ThấpThấpMột chủ sở hữu, CI buf breaking, gói Go dùng chung hoặc sao chép có kiểm tra
R18Chi phí lưu trữ TSDB vượt dự kiếnVVTheo dõi dung lượng thực, điều chỉnh interval và retention, danh sách chỉ số trắng

2. Câu hỏi mở (cần quyết định) ​

#Câu hỏiẢnh hưởngĐề xuất tạmCần chốt trước
Q1Module path và nơi lưu mã của hai repo (GitHub, GitLab, nội bộ)? Tên tổ chức?Đường dẫn import Go, CI, kho góiĐÃ CHỐT (2026-10-01): dùng hai module path đang lưu trên git, gitlab.com/thienpn2/access-hub-collector và gitlab.com/thienpn2/access-hub-agent, host git là GitLabĐã đóng
Q2Ai lưu trữ kho gói (apt, yum) và tải bản cài (Windows MSI)? Tự lưu trữ hay dịch vụ ngoài?Script cài, khả năng cập nhật, băng thôngHOÃN (2026-10-01): chủ dự án sẽ quyết sau, vì sản phẩm còn đang phát triển. Đến lúc đó dùng phương án tạm: GitHub Releases hoặc S3 tương thích, kho apt/yum ở GĐ 2Hoãn, cần chốt trước AGT-11
Q3Chứng chỉ ký mã Windows (EV) và khóa GPG do ai giữ, mua ở đâu?MSI không bị SmartScreen chặn, thời gian mua sắm kéo dài vài tuầnHOÃN (2026-10-01): chủ dự án sẽ mua sau. Lưu ý thời gian mua EV kéo dài vài tuần, cần chốt trước AGT-7 và AGT-11Hoãn, cần chốt trước AGT-7, AGT-11
Q4Retention mặc định 30 ngày thô, 400 ngày rollup có phù hợp? Có yêu cầu theo công ty?Dung lượng, kiến trúc TSDBĐÃ CHỐT: 30 ngày thô, 400 ngày rollup là trần toàn cụm; retention theo gói áp ở đọc (COL-10) và xóa vật lý theo ngày (Q17, ADR 0016)GĐ 2
Q5Chu kỳ mặc định 30 giây có đủ? Có nhu cầu 10 giây cho máy quan trọng?Tải, dung lượng30 giây mặc định, cho phép 10 đến 300 giây theo cấu hình, tối thiểu 10GĐ 1
Q6Tự tạo Server khi agent enroll mà không khớp được?Kiểm kê sạch hay đầy rácMặc định tắt, bật theo công ty và tạo bản nháp cần duyệtGĐ 1
Q7Kiểm kê từ agent với IacDrift: xử lý thế nào cho máy có nguồn IaC?Nguồn sự thật, luồng phê duyệtKhông tự ghi đè, hiển thị chênh lệch, áp dụng thủ công có audit, xem lại khi làm HUB-12GĐ 2
Q8Windows Server 2012 R2 trở xuống có cần hỗ trợ?Phải build Go 1.20, thêm chi phí kiểm thửKhông hỗ trợ mặc định, khảo sát số lượng thực tế trong khách hàngGĐ 1
Q9Cần hành động từ xa (khởi động lại dịch vụ) hay chỉ giám sát?Bề mặt tấn công, mô hình cấp phépKhông có trong GĐ 1 đến 3 (ADR 0010)GĐ 4
Q10Agent có cần hỗ trợ container, Kubernetes?Thu chỉ số cgroup, cách triển khai DaemonSetNgoài phạm viSau GĐ 3
Q11Quyền truy cập trang giám sát theo vai trò: ai xem, ai sửa luật?Bộ quyền monitoring.*Như 06 mục 3GĐ 1
Q12Ứng dụng di động: nội bộ hay lên store? Cần đẩy alert?HUB-18, kênh push (FCM, APNs)HOÃN (2026-10-01): chủ dự án sẽ quyết sau khi xong phần phát triển các giai đoạn. Không chặn gìHoãn, sau các giai đoạn phát triển
Q13Nhiều vùng: có yêu cầu dữ liệu ở lại vùng địa lý?Cần nhiều collector và TSDB theo vùng sớm hơnThiết kế đã hỗ trợ (đa collector), triển khai ở GĐ 3GĐ 2 cuối
Q14Tên gọi sản phẩm cho agent và collector trên giao diện, gói, dịch vụTên gói, tên dịch vụ, tài liệuaccesshub-agent, accesshub-collectorGĐ 0
Q15Có cần tích hợp SSO hoặc IP allowlist cho endpoint collector phía Access Hub?Cấu hình mạngIP allowlist tùy chọnGĐ 1
Q17Xóa vật lý theo gói khi retention của công ty giảmTuân thủ, cam kết hợp đồng, kiến trúc khoĐÃ CHỐT (01/10/2026, chính sách nền tảng): dữ liệu cũ hơn retention mới bị khóa chỉ đọc 30 ngày rồi xóa vật lý; trong 30 ngày đó khách tự export dữ liệu của mình qua Access Hub, không có khôi phục từ nền tảng và không có giai đoạn xóa mềm. Hiện thực bằng nhãn ngày và xóa theo ngày (ADR 0016), hợp đồng 03 mục 5.1, việc phía Access Hub 06 mục 4.6Đã đóng
Q16Vị trí thư mục dự án: hiện nằm trong thư mục người dùng vì /var/www thuộc rootChuyển sang vị trí khác, đưa lên gitNgười dùng chuyển hoặc cấp quyềnNgay

3. Giả định cần kiểm chứng sớm (spike) ​

SpikeCâu hỏiKết quả cần
S1PDH English counters trên Windows 10, 11, Server 2016 đến 2022 với ngôn ngữ hiển thị khácDanh sách bộ đếm dùng được, thời gian lấy mẫu, mức CPU
S2Một node all 4 vCPU chịu bao nhiêu agent với agentsimSố đo cơ sở cho bảng cỡ tải
S3VictoriaMetrics OSS: xác nhận giới hạn downsampling, retention, hiệu năng vmalert recording rules cho 10 nghìn máyXác nhận hai instance là đủ
S4Binary Go tĩnh chạy trên CentOS 7 (kernel 3.10), Ubuntu 18.04Xác nhận chạy được, phiên bản Go tối thiểu
S5Kích thước và CPU của agent thực tế (gopsutil) so với ngân sáchĐạt NFR-09 hay cần tối ưu, cân nhắc tự đọc /proc
S6Scramble xuất OpenAPI đủ chất lượng để sinh mock và kiểm thử hợp đồngQuy trình tạo mock
S7Đo tải MySQL của Access Hub với seen và events mô phỏngXác nhận thiết kế gom lô

4. Nợ thiết kế đã ghi nhận ​

  • Chưa có thiết kế chi tiết cho giao diện quản trị collector và trang phát hành agent (thuộc HUB-15, HUB-16).
  • Chưa quyết định định dạng ghim CA riêng và quy trình xoay chứng chỉ endpoint agent.
  • Chưa thiết kế bộ lọc chỉ số theo danh sách trắng do người dùng mở rộng (chỉ số tùy chỉnh). Chỉ số tùy chỉnh được xem xét sau GĐ 2.
  • Chưa có mô hình chi phí hạ tầng theo quy mô (nên tạo sau spike S2, S3).
Trang này có giúp được bạn không?
Sửa trang này

Nội dung đồng bộ từ kho mã access-hub-collector lúc 10:57, 03/10/2026. Khi tài liệu và mã khác nhau, mã thắng.