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

Báo cáo đánh giá lựa chọn giải pháp: kho chuỗi thời gian (TSDB) cho nền tảng giám sát ​

12 phút đọcCập nhật 30/09/2026access-hub-collector, docs/architecture/reports/solution-selection-tsdb.md
Trạng tháiBẢN NHÁP, phiên bản 0.1, 2026-09-30
Tài liệu tầng trênL1 HLD Collector (mục 8, ràng buộc C4 và C5)
ADR liên quanADR 0005, ADR 0014 (đề xuất): giữ VictoriaMetrics, ADR 0015 (đề xuất): nhập JSON thay cho remote-write
Người quyết địnhchưa chỉ định. Người dùng dự án đã quyết định tạm thời giữ VictoriaMetrics (2026-09-30) và cài lên để chạy thử
Bên thẩm địnhchưa chỉ định, chưa có sign-off

Quy ước: đánh giá dựa trên (a) tài liệu và mã của dự án, ghi kèm nguồn, và (b) hiểu biết chung về các sản phẩm, gắn nhãn chung, chưa kiểm chứng trong dự án. Mục (b) cần kiểm chứng ở spike S3 nếu quyết định được mở lại. Không có số đo hiệu năng nào của các phương án thay thế trong dự án này.

0. Bối cảnh và các giải pháp so sánh ​

Nhu cầu (ADR 0005, docs/04, docs/08): lưu hàng chục nghìn mẫu mỗi giây, truy vấn theo khoảng thời gian, giữ hàng tháng đến hàng năm với chi phí thấp, cô lập theo công ty. Tải tham chiếu: 10.000 agent ở chu kỳ 30 s là khoảng 333 request/s, khoảng 23.000 mẫu/s, khoảng 2 GB/ngày (docs/08). Suy ra 30 ngày dữ liệu thô cỡ 60 GB ở mức 10.000 agent (phép nhân từ số trên, chưa đo).

Ký hiệuGiải phápGhi chú
GP1VictoriaMetrics (single node, hai instance vm-raw và vm-long, vmalert làm rollup; lên cluster khi cần)Đang chạy ở môi trường dev (ADR 0005, docs/04, docs/09)
GP2Prometheus kèm Thanos hoặc MimirHệ sinh thái Prometheus
GP3TimescaleDB (PostgreSQL)Cơ sở dữ liệu quan hệ có tiện ích chuỗi thời gian
GP4ClickHouseCơ sở dữ liệu cột
GP5Kho tích hợp sẵn trong collector (lite store)Chưa tồn tại, chỉ xét như phương án. Người dùng đã nói không xây trừ khi được yêu cầu

Đã loại từ ADR 0005 ở vòng đầu và không xét lại ở đây: MySQL (tranh chấp với ứng dụng nghiệp vụ, không hợp quy mô), InfluxDB.

1. Bảng đánh giá tính năng ​

Thang: Đáp ứng, Một phần, Không, CKC (chung, chưa kiểm chứng trong dự án). Mức đáp ứng của GP1 lấy từ tài liệu và mã dự án trừ khi có ghi chú.

STTTính năngMô tảƯu tiênGP1 VMGP2 Prom + Thanos/MimirGP3 TimescaleDBGP4 ClickHouseGP5 Lite storeGhi chú
IGhi số liệuBắt buộc
1Nhận 23.000 mẫu/s (mức 10.000 agent)NFR-01Bắt buộcMột phầnĐáp ứng (CKC)Một phần (CKC)Đáp ứng (CKC)KhôngGP1: nén tốt, ít tài nguyên (ADR 0005), nhưng chưa kiểm thử tải ở quy mô này với VM thật (spike S3, docs/11 X-7, X-9)
2Giao thức ghi chuẩn để thay được TSDBĐổi kho không đổi collectorCaoMột phầnĐáp ứngKhôngKhôngĐáp ứngADR 0005 ban đầu chọn remote-write. Thực tế mã dùng nhập JSON của VM (/api/v1/import), gắn với VM. Xem ADR 0015
3Gắn nhãn company_id, server_id do collectorChống giả mạo tenantBắt buộcĐáp ứngĐáp ứngĐáp ứngĐáp ứngĐáp ứngDo collector thực hiện ở lớp ghi (internal/tsdb), không phụ thuộc kho
IITruy vấnBắt buộc
4Truy vấn khoảng thời gian, avg/min/max/lastAPI cố định của collectorBắt buộcĐáp ứngĐáp ứngĐáp ứng (SQL)Đáp ứng (SQL)Một phầnMã hiện tại sinh truy vấn kiểu PromQL, ép matcher company_id và server_id (internal/tsdb/vm.go)
5Không lộ ngôn ngữ truy vấn thô cho Access HubCô lập tenantBắt buộcĐáp ứngĐáp ứngĐáp ứngĐáp ứngĐáp ứngCấm ở tầng collector (CLAUDE.md), độc lập kho
6Cô lập tenant bên trong khoPhân quyền ở khoTrung bìnhKhôngKhông (CKC)Có thể (CKC)Có thể (CKC)KhôngKhông phương án nào được dựa vào; cô lập nằm ở collector (NFR-12)
IIILưu trữ dài hạnCao
7Retention 30 ngày thô và 400 ngày rollupQ4 chưa xác nhậnCaoMột phầnĐáp ứng (Thanos, CKC)Đáp ứng (CKC)Đáp ứng (CKC)Một phầnGP1 bản OSS: một retention mỗi instance, không downsampling. Xử lý bằng hai instance và vmalert (ADR 0005, docs/04)
8Downsampling tự độngRollup nhiều độ phân giảiTrung bìnhKhông (bản OSS)Đáp ứng với Thanos (CKC), Mimir không (CKC)Đáp ứng (continuous aggregates, CKC)Đáp ứng (materialized view, CKC)KhôngGP1 dùng vmalert recording rules một quy tắc mỗi chỉ số trong catalog
9Retention theo từng công tyXóa dữ liệu theo tenantThấpKhôngKhông (CKC)Có thể (CKC)Có thể (CKC)KhôngHiện ghi ở giai đoạn 4 (ADR 0005). Purge theo công ty và theo máy đã có ở admin API (internal/admin)
IVVận hànhBắt buộc
10Vận hành đơn giản, ít thành phầnR9CaoĐáp ứngKhôngMột phầnMột phầnĐáp ứngGP2 cần nhiều thành phần (Thanos hoặc Mimir gồm nhiều dịch vụ, CKC). GP3 thêm công nghệ PostgreSQL trong khi Access Hub dùng MySQL
11Mở rộng khi vượt một node50.000 agentCaoĐáp ứng (VM cluster)Đáp ứngMột phầnĐáp ứngKhôngdocs/08: 50.000 agent cần VM cluster hoặc nhiều collector. Chưa thử VM cluster
12Sao lưu và khôi phụcCaoMột phầnMột phầnĐáp ứng (CKC)Đáp ứng (CKC)KhôngDev: VM chưa có snapshot theo lịch (docs/09)
13Giấy phép mã nguồn mở, không phí bản quyềnCaoĐáp ứngĐáp ứngMột phần (CKC)Đáp ứngĐáp ứngPhần trả phí của GP1 (downsampling, retention theo bộ lọc) không dùng. Giấy phép chính xác từng bản chưa được rà soát trong dự án

2. Bảng đánh giá kiến trúc hệ thống và ANBM ​

Tiêu chíGP1 VictoriaMetricsGP2 Prometheus + Thanos/MimirGP3 TimescaleDBGP4 ClickHouseGP5 Lite store
TechstackĐã tích hợp: bộ ghi và truy vấn viết, kiểm thử với VM (dev chạy thật). Nhóm chưa có kinh nghiệm sản xuất với VM (R12 nói về Go, không nói về VM)Nhiều thành phần, cần thêm kiến thức vận hành, CKCPostgreSQL mới đối với hệ thống (Access Hub dùng MySQL), CKCCông nghệ mới, mô hình vận hành riêng, CKCPhải tự xây và tự bảo trì
Mở rộng và tích hợpMột node đủ cho giai đoạn 1 đến 2. Cluster cho 50.000+ (chưa thử). Tích hợp qua HTTP, không gắn giao thức ghi chuẩn (ADR 0015)Chuẩn remote-write, mở rộng tốt (CKC)Mở rộng dọc tốt, ngang phức tạp hơn (CKC)Mở rộng ngang tốt (CKC)Không mở rộng vượt vài nghìn agent (đánh giá của tác giả, chưa đo)
Kiểm soát vận hànhTự lưu trữ hoàn toàn, ít cấu hìnhTự lưu trữ, nhiều mảnh ghépTự lưu trữTự lưu trữNằm trong tiến trình collector
Trải nghiệm adminCó giao diện và API riêng của VM để chẩn đoán (chưa tích hợp vào Access Hub)Công cụ phong phú (CKC)Công cụ SQL quen thuộcCông cụ SQLKhông có
Phân quyềnKhông có phân quyền theo tenant. Bảo vệ bằng cách chỉ collector được nói chuyện với VMTương tựCó role SQL (CKC)Có (CKC)Không áp dụng
Mã hóa kết nốiDev chạy VM trên loopback không TLS. Sản xuất phải giới hạn mạng hoặc dùng proxy TLS, chưa thiết kế xong (xem báo cáo ANBM, S-06)Tương tựTLS được hỗ trợ (CKC)TLS được hỗ trợ (CKC)Không áp dụng
Kế hoạch sự cố, sao lưu, DRPChưa có snapshot theo lịch, chưa có quy trình khôi phụcChưa cóChưa cóChưa cóChưa có
SDLC, pentestChưa thực hiện pentest riêng cho lớp lưu trữ. Rà soát bảo mật chung ở báo cáo ANBMChưaChưaChưaChưa
Tuân thủ và bảo vệ dữ liệuChưa có yêu cầu pháp lý nêu ra (OQ-4 của L1). Xóa theo yêu cầu (purge) có ở admin APITương tựTương tựTương tựTương tự

3. Bảng đánh giá chi phí và thời gian triển khai ​

Không có số tiền hay số ngày công cụ thể trong dự án. Dùng mức định tính, đánh dấu ước lượng của tác giả bản nháp là đề xuất, chưa xác nhận. Chưa có mô hình chi phí hạ tầng theo quy mô (docs/13 ghi nên lập sau spike S2, S3).

GP1 VMGP2 Prom + Thanos/MimirGP3 TimescaleDBGP4 ClickHouseGP5 Lite store
Khả năng goliveNhanh: đã tích hợp và chạy ở devChậm: cần dựng nhiều thành phần và viết lại đường ghi (đề xuất, chưa xác nhận)Trung bình: viết lại bộ ghi và truy vấn, thêm rollup thủ công (đề xuất, chưa xác nhận)Trung bình đến chậm (đề xuất, chưa xác nhận)Chậm: xây từ đầu (đề xuất, chưa xác nhận)
Thời gian bàn giaoĐã có, còn kiểm thử tải và sao lưuChưa ước lượngChưa ước lượngChưa ước lượngChưa ước lượng
Chi phí bản quyềnKhông (bản OSS)Không (bản OSS)Không hoặc thấp (CKC)Không (bản OSS)Không
Chi phí triển khaiThấp: chỉ còn cấu hình sản xuất, TLS, sao lưuCao hơn: nhiều thành phầnTrung bìnhTrung bìnhCao: phát triển
Chi phí vận hànhThấp đến trung bình: hai instance, đến cluster khi cầnCao hơnTrung bìnhTrung bìnhThấp ở quy mô nhỏ, cao nếu phải mở rộng
Chi phí thiết bịKhoảng 60 GB thô cho 30 ngày ở 10.000 agent, cộng rollup 400 ngày (chưa đo kích thước rollup)Tương đương hoặc hơn (CKC)Thường lớn hơn cho cùng dữ liệu (CKC)Nén tốt (CKC)Nhỏ ở quy mô nhỏ
TCOChưa tính. Thấp nhất trong các phương án nhờ tái sử dụng công việc đã làm (đề xuất, chưa xác nhận)Chưa tínhChưa tínhChưa tínhChưa tính

4. Kết luận ​

Khuyến nghị: giữ GP1 (VictoriaMetrics) ở giai đoạn hiện tại, khớp quyết định của người dùng. Lý do chính: đã tích hợp và chạy được ở dev, vận hành đơn giản nhất, nén tốt, không tốn bản quyền, và hạn chế của bản OSS (không downsampling, retention toàn cục) đã có cách xử lý bằng hai instance cùng vmalert (ADR 0005, docs/04).

Chọn GP2 nếu ưu tiên: chuẩn ghi từ xa mở, khả năng đổi kho tự do và hệ sinh thái công cụ Prometheus, và chấp nhận nhiều thành phần vận hành hơn.

Chọn GP3 nếu ưu tiên: truy vấn SQL, retention và rollup theo từng bảng, và đã có năng lực vận hành PostgreSQL (hiện Access Hub dùng MySQL).

Chọn GP4 nếu ưu tiên: quy mô rất lớn, phân tích tổng hợp phức tạp trên số liệu, chấp nhận thêm một công nghệ mới.

GP5 không khuyến nghị: chưa có nhu cầu chứng minh, chi phí xây và duy trì cao, không mở rộng được.

Điều kiện xem xét lại quyết định:

  • Spike S3 (VM OSS, vmalert ở 10.000 máy) cho kết quả không đạt NFR-01.
  • Retention theo từng công ty trở thành yêu cầu bắt buộc (ADR 0005 xếp giai đoạn 4).
  • Cần downsampling nhiều độ phân giải mà hai instance không đáp ứng.
  • Vượt 50.000 agent (docs/08: cần VM cluster, chưa thử).
  • Giấy phép hoặc chính sách nhà cung cấp VictoriaMetrics thay đổi.

Rủi ro của việc giữ VM (tham chiếu R11, R18, R2):

Rủi roTrạng thái
Mã hiện gắn với nhập JSON của VM thay vì remote-write chuẩn, nên đổi kho tốn công hơn ADR 0005 mô tảThực tế đã lệch ADR, xem ADR 0015. Giao diện tsdb.Writer và tsdb.Query trong internal/tsdb vẫn cho phép thay bộ ghi
Chưa kiểm thử tải VM thật ở quy mô mục tiêuMở (spike S3, X-7, X-9)
Chưa có sao lưu theo lịch, chưa có TLS đến VM ở thiết kế sản xuấtMở, xem báo cáo ANBM
Chi phí lưu trữ có thể vượt dự kiếnMở (R18), cần đo dung lượng thực

Điều cần người quyết định xác nhận: (1) chấp nhận giữ VictoriaMetrics làm quyết định chính thức (ADR 0014, hiện trạng thái "Đề xuất"); (2) có cần đánh giá lại GP2 đến GP4 bằng đo đạc thực tế hay không; (3) ngưỡng quy mô mà tại đó mở lại quyết định.

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.