SIEM/Log Management Triển khai Hệ thống Giám sát Hạ tầng (Infrastructure Monitoring) với Prometheus và OpenSearch

1. Mục tiêu bài thực hành

Bài thực hành nhằm xây dựng một luồng giám sát hạ tầng hoàn chỉnh :
  • Bao gồm thu thập metric từ môi trường ảo hóa VMware vSphere, endpoint Linux và endpoint Windows
  • Lưu trữ và xử lý metric thông qua Prometheus
  • Chuyển đổi và tính toán các chỉ số có ý nghĩa (CPU %, RAM %, Disk %) trước khi đẩy vào OpenSearch
  • Trực quan hóa dữ liệu giám sát thông qua Dashboard xây dựng bằng Vega Visualization.

2. Kiến trúc dự án

Hệ thống được xây dựng theo mô hình thu thập đa nguồn, trong đó Prometheus đóng vai trò trung tâm lưu trữ metric, còn OpenSearch đảm nhận việc lưu trữ dài hạn và trực quan hóa dữ liệu.

Ở tầng thu thập, ba loại endpoint được giám sát đồng thời. Đối với môi trường ảo hóa VMware, Telegraf được cài đặt trên máy Linux với plugin inputs.vsphere để kết nối trực tiếp vào vCenter, thu thập metric của toàn bộ ESXi Host, máy ảo, Cluster và Datastore, sau đó expose ra endpoint HTTP tại port 9273 để Prometheus scrape. Đối với endpoint Linux, Node Exporter được triển khai trên chính máy Kali Linux, đọc dữ liệu trực tiếp từ hệ thống tại port 9100. Đối với endpoint Windows, Windows Exporter được cài đặt trên laptop cá nhân, expose metric tại port 9182 và Prometheus kết nối vào qua đường tunnel VPN FortiClient.

Ở tầng xử lý, Prometheus định kỳ scrape metric từ cả ba nguồn trên theo các interval khác nhau tùy mức độ ưu tiên. Một script Python chạy nền đóng vai trò cầu nối, định kỳ truy vấn Prometheus API, tính toán các chỉ số có ý nghĩa như CPU %, RAM %, Disk % bằng PromQL rồi đẩy vào OpenSearch qua Bulk API mỗi 60 giây.

Ở tầng hiển thị, OpenSearch Dashboards cung cấp giao diện trực quan với các biểu đồ gauge và time series được xây dựng bằng Vega Visualization, cho phép theo dõi trạng thái toàn bộ hệ thống theo thời gian thực.

3. Thu thập metric

3.1 — vSphere với Telegraf

Cài Telegraf trên máy Kali Linux, cấu hình plugin inputs.vsphere kết nối vào vCenter tại https://10.120.100.100/sdk bằng tài khoản read-only. Telegraf expose metric ra endpoint localhost:9273/metrics thông qua outputs.prometheus_client.

3.2 — Linux với Node Exporter

Cài Node Exporter trên máy Kali Linux, chạy tại port 9100. Node Exporter tự động thu thập toàn bộ metric của hệ điều hành Linux bao gồm CPU, RAM, Disk theo mount point, Network theo interface và Load Average.

3.3 — Windows với Windows Exporter

Cài Windows Exporter trên laptop Windows, chạy tại port 9182. Prometheus scrape qua VPN (FortiClient SSL VPN) vào địa chỉ 10.120.253.9:9182.

4. Cấu hình Prometheus​

Thêm 3 scrape job vào prometheus.yml
1781157658256.png

Hình 1 :Thêm scrape job vào prometheus.yml​
-Job telegraf-vsphere scrape metric vSphere từ Telegraf tại localhost:9273 với interval 60s, timeout 30s — chọn 60s vì vCenter có giới hạn tốc độ API, không nên scrape quá nhanh.
-Job windows-exporter scrape metric từ máy Windows tại 10.120.253.9:9182 với interval 30s, timeout 10s, có thêm label os: windows để phân biệt với các job khác.
-Job node-exporter scrape metric Linux từ Node Exporter tại localhost:9100 với interval 15s — chọn 15s vì metric Linux thay đổi nhanh hơn, cần độ chính xác cao hơn.

5. Tính toán chỉ số và đẩy vào OpenSearch​

1781157869137.png

Hình 2 :Query chuyển đổi dữ liệu thô​
Thay vì lưu số liệu thô vào OpenSearch, script Python sử dụng danh sách COMPUTED_METRICS - mỗi item gồm 3 trường: name (tên metric lưu vào OpenSearch), query (công thức PromQL để tính) và unit (đơn vị).
Script tính toán và chuyển đổi các số liệu thô như số bytes hay số giây CPU thành các chỉ số có ý nghĩa thực tế như CPU Usage %, RAM Usage %, Disk Usage % trước khi lưu vào, giúp tầng dashboard chỉ cần lấy số ra vẽ trực tiếp mà không cần tính toán thêm.

6. Xây dựng Dashboard bằng Vega Visualization​

1781158118029.png

Hình 3 :Windows Endpoint Monitor

1781158165761.png

Hình 4 :Linux Endpoint Monitor

1781158341715.png

Hình 5 :ESXi Host - vCenter lab​

7. Kết quả

Hệ thống đã giám sát thành công:
  • 5 ESXi Host trong cluster DEV&INFRA của vCenter lab
  • 1 endpoint Linux
  • 1 endpoint Windows
Dashboard cập nhật real-time, phát hiện được các host đang sử dụng tài nguyên cao và hiển thị xu hướng network traffic theo thời gian.

8. Kết luận​

Bài thực hành đã chứng minh khả năng xây dựng hệ thống giám sát hạ tầng hoàn chỉnh với bộ công cụ mã nguồn mở. Việc tính toán sẵn các chỉ số bằng PromQL trước khi lưu vào OpenSearch giúp đơn giản hóa quá trình xây dựng dashboard và tăng hiệu suất truy vấn.
Qua quá trình thực hành, em cũng có một số kinh nghiệm thực tế được đúc kết như sau.
  • Về thiết kế kiến trúc, việc tách biệt rõ ràng ba tầng thu thập, xử lý và hiển thị giúp hệ thống dễ mở rộng và dễ xử lý sự cố khi một tầng gặp vấn đề không kéo theo toàn bộ hệ thống sập.
  • Về cấu hình scrape interval, không nên đặt interval quá thấp vì sẽ gây quá tải nguồn dữ liệu.
  • Về xử lý dữ liệu, việc tính toán sẵn các chỉ số có ý nghĩa trước khi lưu vào OpenSearch là cách tiếp cận đúng đắn - giúp dashboard đơn giản hơn và dễ bảo trì hơn về lâu dài.
  • Về Vega Visualization, đây là công cụ linh hoạt nhưng đòi hỏi hiểu rõ cấu trúc dữ liệu trong OpenSearch trước khi viết code, đặc biệt cần chú ý đến cách xử lý timestamp và cách lọc dữ liệu theo metric_name.
  • Về vận hành thực tế, các dịch vụ như Prometheus, Node Exporter và script Python cần được cấu hình khởi động tự động để tránh mất dữ liệu khi máy khởi động lại.
 
Back
Top