SIEM/Log Management Triển khai hệ thống giám sát mạng với SNMP Exporter 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 hệ thống giám sát mạng hoàn chỉnh theo mô hình SNMP-based monitoring, bao gồm các mục tiêu cụ thể sau:
  • Nghiên cứu và tìm hiểu giao thức SNMP - cơ chế hoạt động, cấu trúc OID, các phiên bản SNMPv1/v2c/v3, vai trò của MIB (Management Information Base) và cách thiết bị mạng expose thông tin qua SNMP.
  • Thu thập trạng thái và hiệu năng các network interface thông qua giao thức SNMP bằng cách triển khai snmpd trên máy Linux làm SNMP agent và SNMP Exporter làm cầu nối chuyển đổi dữ liệu.
  • Tích hợp với hệ thống Prometheus để scrape và lưu trữ metric SNMP dưới dạng time series, từ đó thực hành viết các câu truy vấn PromQL phù hợp với đặc tính Counter và Gauge của metric mạng.
  • Lưu trữ dài hạn và xử lý metric thông qua OpenSearch bằng script Python tự động hóa quá trình thu thập và đẩy dữ liệu.
  • Trực quan hóa trạng thái mạng thông qua dashboard xây dựng bằng Vega Visualization trên OpenSearch Dashboards, hiển thị trạng thái từng interface theo thời gian thực.

2. Tổng quan về SNMP và kiến trúc hệ thống​

2.1 - SNMP là gì?​

SNMP (Simple Network Management Protocol) là giao thức chuẩn quốc tế dùng để giám sát và quản lý thiết bị mạng. Hầu hết các thiết bị mạng như router, switch, firewall, access point đều hỗ trợ SNMP sẵn có. Giao thức hoạt động theo mô hình hỏi-đáp: manager gửi request đến agent trên thiết bị, agent trả về giá trị của các OID (Object Identifier) tương ứng.
Mỗi thông tin trong SNMP được định danh bằng một OID - một chuỗi số phân cấp theo chuẩn MIB (Management Information Base). Ví dụ .1.3.6.1.2.1.2.2.1.8 là OID của trạng thái interface (ifOperStatus), .1.3.6.1.2.1.31.1.1.1.6 là OID của số bytes nhận vào (ifHCInOctets).

2.2 - Các phiên bản SNMPv1, SNMPv2c và SNMPv3​

Các phiên bản giao thức khác nhau chủ yếu ở cách quản lý thông báo và bảo mật:
  • SNMPv1: Phiên bản đầu tiên, cơ bản. Xác thực bằng mật khẩu dạng văn bản thuần túy (Community String), truyền dữ liệu không mã hóa nên không an toàn.
  • SNMPv2c: Hỗ trợ thêm gói tin GetBulk (truy xuất dữ liệu bảng lớn hiệu quả hơn). Cơ chế bảo mật vẫn sử dụng Community String dạng văn bản nên dễ bị đánh cắp.
  • SNMPv3: Phiên bản bảo mật cao nhất, giải quyết triệt để lỗ hổng của v1 và v2c. Cung cấp khả năng xác thực (Authentication) và mã hóa dữ liệu (Encryption) bằng MD5 hoặc SHA và DES/AES, đồng thời hỗ trợ kiểm soát truy cập phân quyền người dùng (Role-based access).

2.3 - Kiến trúc hệ thống​

Hệ thống được xây dựng theo luồng 4 tầng:
1781773367683.png

Hình 1 : Mô hình hệ thống
Điểm khác biệt so với Node Exporter hay Windows Exporter là SNMP Exporter không cài trực tiếp lên thiết bị cần giám sát mà hoạt động như một proxy - nhận request từ Prometheus, dịch sang SNMP query, gửi đến thiết bị mục tiêu, nhận kết quả rồi trả về cho Prometheus. Điều này cho phép giám sát bất kỳ thiết bị nào hỗ trợ SNMP mà không cần cài thêm phần mềm lên thiết bị đó.

3. Triển khai​

3.1 — Cài đặt và cấu hình snmpd​

Snmpd là SNMP agent - phần mềm chạy trên thiết bị cần giám sát, lắng nghe các truy vấn SNMP và trả về thông tin của hệ thống.
1781773708254.png

Hình 2 : Cài đặt snmpd
1781774129271.png

Hình 3 : Cấu hình conf snmpd
-agentAddress udp:161 : Bảo snmpd lắng nghe kết nối SNMP tại port 161 qua giao thức UDP - đây là port chuẩn của SNMP, giống như web dùng port 80/443.
-rocommunity public default
  • ro = read-only, chỉ cho phép đọc, không cho sửa
  • community public = mật khẩu để truy cập SNMP, đặt là "public" - đây là mật khẩu mặc định phổ biến
  • default = cho phép tất cả địa chỉ IP kết nối vào
-view all included .1 : Cho phép đọc toàn bộ dữ liệu SNMP từ OID gốc .1 trở xuống - tức là không giới hạn, đọc được tất cả thông tin.

3.3 — Cấu hình Prometheus scrape SNMP​

Thêm scrape job vào prometheus.yml đê thu thập data SNMP :
1781774672215.png

Hình 4 : Thêm scrape job vào prometheus.yml để Prometheus thu thập data SNMP
Cấu hình này khác với scrape job thông thường ở chỗ sử dụng relabeling để tách địa chỉ thiết bị mục tiêu (target) khỏi địa chỉ SNMP Exporter. Prometheus sẽ scrape SNMP Exporter tại 127.0.0.1:9116, đồng thời truyền tham số target=127.0.0.1 để SNMP Exporter biết cần query SNMP đến thiết bị nào.

1781774920452.png

Hình 5 : Kiểm tra metric SNMP đã vào Prometheus​
Kết quả trả về:
  • status: success - query thành công
  • resultType: vector - kết quả là vector (giá trị tại thời điểm hiện tại)

4. Xây dựng Dashboard SNMP Monitoring​

Dashboard được xây dựng bằng Vega Visualization trên OpenSearch Dashboards, hiển thị trạng thái từng network interface dưới dạng card:
  • Thanh màu bên trái: xanh lá khi UP, đỏ khi DOWN
  • Tên interface và mô tả thiết bị
  • Trạng thái UP/DOWN rõ ràng
Dashboard tích hợp với time picker của OpenSearch, tự động cập nhật theo khoảng thời gian được chọn.
1781775795318.png

Hình 6 : Dashboards trực quan
* :
-Inbound - tốc độ nhận data, đơn vị tự đổi bps/Kbps/Mbps
-Outbound - tốc độ gửi data
-Errors - số lỗi/giây ở cả 2 chiều, hiện 0.0/s nghĩa là không có lỗi đường truyền

-Thay vì giám sát tài nguyên hệ thống (CPU, RAM, Disk) ở mức host
-Bài này em tập trung làm hệ thống SNMP giám sát toàn bộ các interface mạng trên máy chủ Kali, bao gồm:
  • interface vật lý (eth0) phục vụ kết nối ra ngoài
  • các interface ảo do Docker tạo (docker0, br-..., veth...) phục vụ giao tiếp giữa các container chạy dịch vụ giám sát (Prometheus, OpenSearch, các exporter)
  • interface loopback (lo) phục vụ giao tiếp nội bộ giữa các tiến trình trên host
-Việc giám sát toàn diện này giúp phát hiện sớm các bất thường về kết nối hoặc traffic ở mọi tầng của hệ thống.

5. Kết quả​

Hệ thống đã giám sát thành công 6 network interface của máy Kali Linux qua SNMP:
  • eth0 (card mạng vật lý Intel 82545EM)
  • docker0, br-012d189362dd
  • lo và các virtual interface của Docker
Tất cả đang ở trạng thái UP và data được cập nhật real-time vào OpenSearch mỗi 60 giây.

7. Kết luận​

Về giao thức SNMP: Điểm mạnh của SNMP là tính phổ biến - hầu hết thiết bị mạng đều hỗ trợ sẵn, không cần cài thêm agent. Tuy nhiên community string dạng plain text (như "public") là điểm yếu bảo mật nghiêm trọng. Trong môi trường production cần dùng SNMPv3 với authentication và encryption thay vì SNMPv2c.
Về OID và MIB: Việc hiểu cấu trúc OID giúp mở rộng giám sát sang các thông số khác ngoài interface như CPU (1.3.6.1.4.1.2021.11), RAM (1.3.6.1.4.1.2021.4), hoặc các OID riêng của từng hãng thiết bị (Cisco, Juniper, HP...).
Bài thực hành đã chứng minh SNMP vẫn là giao thức giám sát mạng hiệu quả và phổ biến. Kết hợp với SNMP Exporter và Prometheus, hệ thống có thể giám sát bất kỳ thiết bị mạng nào hỗ trợ SNMP mà không cần cài thêm phần mềm lên thiết bị. Đây là nền tảng để xây dựng hệ thống NOC (Network Operations Center) hoàn chỉnh trong tương lai.
 
Back
Top