Skip to content

Tổng quan ​

Trang này tóm lược kiến trúc tổng thể của G‑BlackHole: cách các thành phần như Agent, Forwarder cùng các mô-đun giám sát, thu thập, biến đổi và chuyển phát dữ liệu phối hợp với nhau; đồng thời mô tả cách hệ thống tích hợp với các dịch vụ bên ngoài.

Thành phần chính ​

  • Registry: Điểm điều phối trung tâm (API/MQTT) lưu thông tin cấu hình, đăng ký thiết bị/tác nhân và phát hành lệnh điều khiển.
  • Agent(s): Chạy trên máy/điểm cuối, bao gồm:
    • Supervisor: Giám sát vòng đời tiến trình, tải cấu hình từ Registry, kích hoạt/khởi động collectors và shippers.
    • Collectors: Thu thập dữ liệu từ nhiều nguồn: Files, Windows Events, APM, Rsyslog, Kafka, MQTT... theo chế độ sự kiện hoặc định kỳ.
    • Shippers: Đóng gói và gửi dữ liệu ra ngoài (TCP/UDP, MQTT, HTTP…) đến Forwarder hoặc trực tiếp đến đích cấu hình.
  • Forwarder: Lớp trung gian tiếp nhận, biến đổi và chuyển phát:
    • Supervisor: Quản lý vòng đời các dịch vụ thu/cấp phát dữ liệu.
    • Selectors: Các điểm vào dữ liệu: Rsyslog Server, Kafka Consumer, MQTT Client.
    • Transformers: Chuẩn hoá/biến đổi/enrich sự kiện trước khi chuyển phát.
    • Shippers: Gửi ra MQTT Broker, HTTP Proxy Server hoặc các đích khác (BlackHole, Kafka, v.v.).
  • External Services / Sinks: MQTT Broker, BlackHole, Kafka Broker, hoặc dịch vụ HTTP bên ngoài.

Luồng dữ liệu điển hình ​

  1. Collectors trên Agent đọc dữ liệu theo cơ chế sự kiện hoặc định kỳ và đẩy cho Shipper nội bộ.
  2. Shipper của Agent gửi sự kiện qua các kênh: TCP/UDP, subscribe/consume (MQTT/Kafka), hoặc chuyển thẳng tới Forwarder.
  3. Forwarder tiếp nhận qua Rsyslog Server/Kafka Consumer/MQTT Client, sau đó chuyển qua Transformers để chuẩn hoá.
  4. Shipper của Forwarder chuyển kết quả tới điểm đích: MQTT Broker, HTTP Proxy Server, hoặc dịch vụ BlackHole/Kafka bên ngoài.
  5. Registry trao đổi điều khiển/cấu hình với Agent và Forwarder qua API hoặc MQTT.

Gợi ý triển khai ​

  • Ưu tiên gửi dữ liệu từ Agent tới Forwarder khi cần chuẩn hoá/tích hợp nhiều nguồn đích; có thể gửi trực tiếp tới đích khi pipeline đơn giản.
  • Dùng MQTT làm kênh pub/sub cho cấu hình động và phản hồi trạng thái; Kafka thích hợp cho thông lượng cao và lưu vết lâu dài.
  • Transformers nên tách rule theo loại sự kiện để dễ mở rộng và kiểm thử.

Released under the MIT License.