Quay lại danh sách
Tin tức công nghệ

Xây Dựng Hệ Thống Thu Thập Log Tập Trung Siêu Nhẹ Với Vector.dev Và ClickHouse Trên VPS 4GB RAM

3 tháng 6, 2026

Giới thiệu: Thách thức quản lý log với tài nguyên hạn chế

Trong kỷ nguyên vi dịch vụ (microservices) và phân tán, việc quản lý log tập trung là yêu cầu bắt buộc đối với mọi hệ thống CNTT để đảm bảo khả năng giám sát (observability) và ứng phó sự cố kịp thời. Tuy nhiên, các giải pháp truyền thống như Elasticsearch - Logstash - Kibana (ELK Stack) thường được ví như những "quái vật ngốn tài nguyên", đòi hỏi cấu hình phần cứng tối thiểu từ 8GB đến 16GB RAM chỉ để hoạt động ổn định.

Đối với các startup hoặc dự án vừa và nhỏ sở hữu hạ tầng khiêm tốn, việc dành riêng một VPS cấu hình cao chỉ để lưu trữ log là một sự lãng phí lớn. Bài viết này sẽ hướng dẫn bạn cách xây dựng một hệ thống thu thập và phân tích log tập trung siêu nhẹ, hoạt động mượt mà trên một **VPS chỉ 4GB RAM** nhờ sự kết hợp đột phá giữa Vector.dev (Log Shipper viết bằng Rust) và ClickHouse (Column-oriented DBMS hiệu năng cao).

Tại sao lại chọn Vector.dev và ClickHouse?

Để hiểu lý do vì sao bộ đôi này có thể vận hành hoàn hảo trên VPS 4GB RAM, chúng ta hãy cùng phân tích kiến trúc và ưu điểm vượt trội của từng thành phần so với mô hình ELK truyền thống.

1. Vector.dev - Kẻ thay thế Logstash hoàn hảo

Được phát triển bởi Datadog và viết hoàn toàn bằng ngôn ngữ Rust, Vector.dev là một router dữ liệu siêu nhanh và cực kỳ tiết kiệm bộ nhớ. Thay vì tiêu tốn hàng trăm MB RAM như Logstash (chạy trên nền JVM), Vector thường chỉ chiếm từ 20MB đến 50MB RAM trong điều kiện hoạt động bình thường, đồng thời cung cấp khả năng parse, filter và transform log theo thời gian thực vô cùng mạnh mẽ.

2. ClickHouse - Tối ưu hóa lưu trữ và truy vấn dạng cột

ClickHouse là một cơ sở dữ liệu phân tích hướng cột (Column-oriented) mã nguồn mở. Khác với cơ sở dữ liệu quan hệ hay Elasticsearch (lưu trữ theo dòng hoặc tài liệu), ClickHouse nén dữ liệu cực tốt (tỷ lệ nén có thể lên tới 5x - 10x) và cho phép truy vấn hàng tỷ dòng log chỉ trong vài mili giây. Việc lưu trữ log dưới dạng cấu trúc bảng giúp ClickHouse tiêu thụ rất ít RAM khi ghi dữ liệu liên tục.

Kiến trúc hệ thống đề xuất

Hệ thống thu thập log tập trung siêu nhẹ của chúng ta sẽ vận hành theo mô hình tuyến tính sau:

  1. Ứng dụng (Nginx, App Logs, Docker): Nơi phát sinh các file log thô (.log).
  2. Vector Agent (Collector): Đọc trực tiếp các file log này, parse chúng thành định dạng JSON chuẩn hóa.
  3. Vector Aggregator (Optional/Combined): Nhận log từ các Agent, gộp nhóm (batching) và đẩy về Database. Trên VPS 4GB RAM, ta có thể gộp chung Agent và Aggregator làm một để tiết kiệm tài nguyên.
  4. ClickHouse (Storage): Lưu trữ log đã qua xử lý vào các bảng tối ưu.
  5. Grafana (Visualization): Kết nối trực tiếp vào ClickHouse để truy vấn và hiển thị biểu đồ trực quan.
Lưu ý: Việc chạy chung tất cả dịch vụ này trên một VPS 4GB RAM yêu cầu chúng ta phải giới hạn tối đa lượng tài nguyên (resource limits) của từng service bằng Docker Compose để tránh tình trạng tràn RAM (OOM Killer).

Hướng dẫn triển khai chi tiết từng bước

Bước 1: Cấu hình ClickHouse để tiếp nhận Log

Trước tiên, chúng ta cần tạo một bảng trong ClickHouse để lưu trữ log. Định dạng bảng hướng cột lý tưởng cho log thường bao gồm: thời gian, định danh máy chủ, cấp độ log (level), và nội dung log chi tiết.

CREATE TABLE system.application_logs (
    timestamp DateTime64(3, 'UTC'),
    service_name String,
    level LowCardinality(String),
    message String,
    metadata String
) ENGINE = MergeTree()
ORDER BY (service_name, timestamp);

Trong cấu hình trên, việc sử dụng kiểu dữ liệu LowCardinality cho cột level (như INFO, WARN, ERROR) giúp ClickHouse tối ưu hóa bộ nhớ lưu trữ và tăng tốc độ tìm kiếm đáng kể.

Bước 2: Cấu hình Vector.dev làm Log Shipper

Tiếp theo, chúng ta tạo file cấu hình vector.yaml. Điểm mạnh của Vector là bạn định nghĩa rõ ràng Sources (Nguồn log), Transforms (Xử lý log), và Sinks (Nơi lưu trữ).

sources:
  nginx_logs:
    type: "file"
    include: ["/var/log/nginx/*.log"]

transforms:
  parse_logs:
    type: "remap"
    inputs: ["nginx_logs"]
    source: |
      .service_name = "nginx"
      .timestamp = parse_timestamp!(.timestamp, format: "%Y-%m-%dT%H:%M:%S%z")
      .level = "INFO"

sinks:
  clickhouse_output:
    type: "clickhouse"
    inputs: ["parse_logs"]
    endpoint: "http://localhost:8123"
    database: "system"
    table: "application_logs"
    skip_unknown_fields: true

Cấu hình này đảm bảo Vector sẽ liên tục theo dõi file log của Nginx, chuẩn hóa định dạng thời gian và đẩy trực tiếp vào ClickHouse theo từng đợt (batch) nhằm giảm tải số lượng request I/O.

Bước 3: Tối ưu hóa tài nguyên trên VPS 4GB RAM

Để đảm bảo hệ thống không bị crash khi lượng log tăng đột biến, bạn cần cấu hình giới hạn tài nguyên nghiêm ngặt trong file docker-compose.yml:

  • ClickHouse: Giới hạn tối đa 1.5GB đến 2GB RAM bằng cách thiết lập thông số max_server_memory_usage trong file config của ClickHouse.
  • Vector.dev: Giới hạn tối đa 256MB RAM. Thực tế Vector chỉ dùng khoảng 50MB, nhưng việc đặt hạn mức giúp ngăn chặn rò rỉ bộ nhớ ngoài ý muốn.
  • Grafana: Giới hạn tối đa 512MB RAM.

Phần tài nguyên RAM còn lại (khoảng 1GB - 1.5GB) sẽ được dành riêng cho hệ điều hành OS và bộ đệm (OS page cache), giúp VPS luôn giữ được trạng thái phản hồi nhanh chóng.

Kết quả và Đánh giá hiệu năng

Sau khi triển khai thực tế trên một VPS Ubuntu Server với 2 vCPU và 4GB RAM, hệ thống mang lại những kết quả cực kỳ ấn tượng:

  • Mức tiêu thụ tài nguyên nền (Idle): Tổng lượng RAM sử dụng cho cả cụm (Vector + ClickHouse + Grafana) chỉ dao động ở mức 800MB - 1.1GB RAM.
  • Khả năng xử lý (Throughput): Hệ thống dễ dàng xử lý từ 3,000 đến 5,000 log events mỗi giây (EPS) mà không làm CPU quá tải (duy trì dưới 30% CPU sử dụng).
  • Tỷ lệ nén dữ liệu: Nhờ cơ chế lưu trữ dạng cột của ClickHouse, 10GB log thô dạng text sau khi nén chỉ chiếm chưa đầy 1.2GB dung lượng ổ đĩa cứng.

Kết luận

Xây dựng một hệ thống thu thập log tập trung không nhất thiết phải đi đôi với hóa đơn hạ tầng đắt đỏ. Bằng cách thay thế các giải pháp nặng nề bằng Vector.dev và ClickHouse, bạn hoàn toàn có thể sở hữu một hệ thống logging chuẩn doanh nghiệp, tốc độ cực nhanh, lưu trữ thông minh ngay trên một VPS 4GB RAM giá rẻ.

Hy vọng bài viết này đã cung cấp cho bạn một cái nhìn tổng quan và các bước triển khai thực tế hữu ích. Chúc các bạn cấu hình hệ thống thành công!

Xây Dựng Hệ Thống Thu Thập Log Tập Trung Siêu Nhẹ Với Vector.dev Và ClickHouse Trên VPS 4GB RAM | DPTCloud