SIEM/Log Management Xây dựng Hệ thống giám sát toàn diện với OpenSearch, DSL, SQL, Vega, PPL, Docker và Python

1. TẠI SAO CHÚNG TA PHẢI DÙNG OPENSEARCH?​

Trong kỷ nguyên Microservices và Cloud Native, việc quản lý log không chỉ đơn thuần là lưu trữ mà còn là khả năng quan sát Observability. OpenSearch – mã nguồn mở của Elasticsearch – đã trở thành một công cụ mạnh mẽ giúp chúng ta tìm kiếm, phân tích và cảnh báo dữ liệu theo thời gian thực.

Vừa qua, mình đã thực hiện một bài Lab "end-to-end": Từ việc dựng hạ tầng trên Docker, viết script giả lập dữ liệu thực tế, cho đến thiết lập cảnh báo tự động và vẽ Dashboard bằng code Vega. Bài viết này sẽ hướng dẫn chi tiết từng bước để các bạn có thể tự xây dựng một hệ thống tương tự chỉ trong 30 phút.



2. QUY TRÌNH TRIỂN KHAI CHI TIẾT​

Bước 1: Chuẩn bị môi trường (Hệ điều hành Ubuntu)​

Mình sử dụng Ubuntu để demo bài lab này có thể chạy trên VMware Workstation để có hiệu năng tốt nhất và tránh các lỗi ảo hóa phức tạp trên Windows hoặc máy thật của các bạn.

Cài đặt Docker & Docker Compose:
- sudo apt update
- sudo apt install docker.io docker-compose -y

Cấu hình hệ thống (Bắt buộc): OpenSearch yêu cầu bộ nhớ ảo cao hơn mặc định.

- sudo sysctl -w vm.max_map_count=262144
1777285823315.png

1777285873413.png

Bước 2: Dựng OpenSearch Core bằng Docker Compose​

Tạo file docker-compose.yml để khởi chạy cụm OpenSearch và Dashboards.
Nội dung cấu hình: (Sử dụng cấu hình Single-node để tiết kiệm tài nguyên lab).
Lệnh khởi chạy: sudo docker-compose up -d
---> Nếu bạn gặp lỗi bind: address already in use tại cổng 9200, hãy kiểm tra các tiến trình đang chạy ngầm bằng lệnh sudo ss -tulpn | grep 9200 và kill chúng trước khi chạy Docker.


1777286023953.png



Bước 3: Giả lập dữ liệu Log thực tế bằng Python​

Thay vì dùng dữ liệu tĩnh, mình sử dụng một Script Python để bơm log (Status 200, 404, 500) liên tục vào hệ thống, mô phỏng các request của người dùng trên website.

Thư viện cần thiết: requests.
Logic: Script sẽ ngẫu nhiên tạo ra các IP, URL và mã lỗi để chúng ta có dữ liệu sống để phân tích.
1777286093178.png



Bước 4: Làm chủ các ngôn ngữ truy vấn (DQL, PPL & DSL)​

Khi dữ liệu đã đổ về http://localhost:5601, đây là lúc chúng ta khai thác sức mạnh của OpenSearch:

  1. DQL (Discover): Tìm kiếm nhanh các lỗi Server.

    Câu lệnh: status: 500 and response_time_ms > 2000
  2. PPL (Query Workbench): Thống kê IP nào đang gặp nhiều lỗi nhất.

    Câu lệnh: source = web-logs | stats count() by client_ip
  3. Query DSL (Alerting): Thiết lập cảnh báo tự động bằng cấu trúc JSON. Đây là trái tim của hệ thống giám sát, giúp tự động phát hiện bất thường mà không cần nhìn màn hình 24/7.

    1777286237054.png
1777286304786.png

Bước 5: Data Visualization nâng cao với Vega​

Điểm khác biệt của một kỹ sư hệ thống giỏi là khả năng trực quan hóa dữ liệu. Thay vì các biểu đồ kéo-thả đơn giản, mình sử dụng Vega-Lite để vẽ biểu đồ phân tích thời gian phản hồi trung bình theo từng URL.

Sử dụng mã JSON để định nghĩa trục X (URL), trục Y (Response Time) và màu sắc.
Kết quả là một biểu đồ tương tác cực kỳ chuyên nghiệp.

1777286386025.png



3. TẦM QUAN TRỌNG CỦA TƯ DUY OBSERVABILITY​

Qua bài Lab này, chúng ta thấy rằng việc xây dựng một hệ thống giám sát không quá khó nếu nắm vững các công cụ cốt lõi. OpenSearch không chỉ là một kho chứa log, mà là một hệ sinh thái mạnh mẽ cho phép chúng ta:
  1. Chủ động phát hiện lỗi trước khi người dùng phàn nàn.
  2. Tối ưu hóa hiệu năng hệ thống dựa trên dữ liệu thực tế.
  3. Tự động hóa quy trình vận hành thông qua cảnh báo thông minh.
 

Đính kèm

  • 1777286216620.png
    1777286216620.png
    277.1 KB · Lượt xem: 0
Back
Top