Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số, hạ tầng mạng máy tính đóng vai trò là "hệ tuần hoàn" kết nối toàn bộ hoạt động vận hành, lưu trữ và truyền tải dữ liệu của tổ chức. Theo thống kê từ Gartner, thời gian gián đoạn mạng (network downtime) gây thiệt hại trung bình lên đến 5.600 USD mỗi phút cho doanh nghiệp, tương đương hơn 300.000 USD mỗi giờ. Khi quy mô hạ tầng mở rộng với hàng chục, hàng trăm thiết bị đa dạng chủng loại (Routers, Switches, Firewalls, Servers Linux/Windows, hệ thống máy in), việc kiểm tra thủ công tình trạng hoạt động là bất khả thi và tiềm ẩn rủi ro nghiêm trọng.

Đề tài "Sử dụng phần mềm Nagios để giám sát hệ thống mạng" được thực hiện bởi sinh viên Phạm Quang Anh (Khoa Công nghệ Thông tin, Trường Đại học Dân lập Hải Phòng) dưới sự hướng dẫn của TS. Ngô Trường Giang. Đề tài tập trung nghiên cứu nguyên lý giám sát mạng theo chuẩn quốc tế, bản chất giao thức quản trị mạng SNMP và xây dựng hệ thống giám sát tự động hóa toàn diện dựa trên nền tảng mã nguồn mở Nagios Core.

mindmap
  root((Hệ thống Giám sát Nagios))
    Giao thức & Cơ chế
      SNMP v1/v2c/v3
      NRPE TCP 5666
      NSCA Thụ động
      check_by_ssh
    Đối tượng Giám sát
      Host vật lý / Ảo hóa
      Dịch vụ mạng HTTP, SSH, DNS
      Tài nguyên CPU, RAM, HDD
      Thiết bị mạng Switch, Router
    Cảnh báo & Báo cáo
      Email Thông báo tức thời
      Web Dashboard Trực quan
      Phân loại 4 trạng thái
      Báo cáo Uptime & Performance

Mục tiêu đề tài

  1. Nghiên cứu cơ sở lý luận: Phân tích toàn diện các yếu tố cốt lõi của hệ thống quản lý mạng, chuẩn hóa theo mô hình FCAPS của tổ chức ISO và đào sâu cơ chế hoạt động của giao thức SNMP (Simple Network Management Protocol).
  2. Thiết kế kiến trúc giám sát: Xây dựng mô hình giám sát tập trung kết hợp các phương thức kiểm tra chủ động (Active Checks) và thụ động (Passive Checks).
  3. Triển khai thực nghiệm: Cài đặt, biên dịch mã nguồn và cấu hình máy chủ Nagios Core trên hệ điều hành Linux CentOS 6.10 64-bit; thiết lập kịch bản giám sát máy chủ Linux, Windows Server 2008 và các dịch vụ mạng trọng yếu.
  4. Tự động hóa cảnh báo: Cấu hình hệ thống phân tích ngưỡng (Thresholds) kích hoạt cảnh báo thời gian thực qua giao diện Web và Email khi có sự cố.

Phương pháp tiếp cận và kết quả kỳ vọng

Dự án áp dụng phương pháp nghiên cứu thực nghiệm: kết hợp lý thuyết giao thức mạng với việc xây dựng phòng thí nghiệm (Lab) thực tế. Giải pháp sử dụng Nagios Core mang lại tính linh hoạt cao, cho phép mở rộng không giới hạn thông qua hệ sinh thái Plugin, đảm bảo khả năng phát hiện sự cố trong thời gian dưới 60 giây và cắt giảm 100% chi phí bản quyền phần mềm so với các giải pháp thương mại.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Quản trị mạng truyền thống đối mặt với 3 điểm nghẽn chính: phản ứng bị động (chỉ xử lý khi người dùng khiếu nại), thiếu thông tin lịch sử để phân tích nguyên nhân gốc rễ (Root Cause Analysis), và không có bức tranh tổng thể về hiệu năng phần cứng.

Tiêu chí Giám sát thủ công Phần mềm thương mại (PRTG / SolarWinds) Hệ thống mã nguồn mở Nagios
Chi phí bản quyền 0 VNĐ (Tốn nhân lực) Rất cao ($1.500 - $15.000+/năm) 0 VNĐ (Miễn phí hoàn toàn)
Thời gian phát hiện lỗi Chậm (Vài giờ đến vài ngày) Thời gian thực (< 1 phút) Thời gian thực (< 1 phút)
Tính linh hoạt & Tùy biến Không Bị giới hạn bởi nhà cung cấp Rất cao (Tự viết script C/Perl/Bash)
Yêu cầu phần cứng máy chủ Không Yêu cầu cấu hình cao Rất nhẹ (CPU Duo Core, 1GB RAM)
Hỗ trợ thiết bị đa hãng Thấp Tốt Xuất sắc thông qua SNMP & Plugins

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must have (Bắt buộc): Giám sát trạng thái Up/Down của Host; giám sát dịch vụ mạng (HTTP, SSH, PING); cảnh báo qua Email; giao diện Web quản trị tập trung.
  • Should have (Nên có): Giám sát tài nguyên phần cứng chi tiết (CPU Load, RAM, Dung lượng ổ cứng /dev/sda1, Drive C/D); phân quyền truy cập Web CGI.
  • Could have (Có thể có): Tích hợp kiểm tra thụ động qua NSCA; giám sát lưu lượng giao tiếp Switch/Router qua SNMP OID.
  • Won't have (Chưa thực hiện): Tự động khắc phục sự cố (Auto-remediation event handlers) nâng cao và bản đồ topo động trong giai đoạn 1.

Thiết kế hệ thống

Kiến trúc Nagios phân tách độc lập giữa Lõi điều hành (Nagios Core Engine)Các thành phần thực thi (Plugins). Lõi Nagios chịu trách nhiệm lập lịch, tiếp nhận kết quả, xử lý logic chuyển đổi trạng thái và gửi thông báo, trong khi Plugin trực tiếp đo đạc các chỉ số.

flowchart TD
    subgraph Nagios_Server ["Máy chủ Giám sát Nagios (CentOS 6.10)"]
        Core["Nagios Core 4.0.8 Engine"]
        Web["Giao diện Apache / PHP"]
        Plugins["Tập hợp Nagios Plugins"]
        Core --> Plugins
        Core --> Web
    end

    subgraph Monitoring_Targets ["Đối tượng giám sát"]
        Target_Linux["Linux Server (CentOS/Ubuntu)"]
        Target_Win["Windows Server 2008"]
        Target_Net["Network Switch / Router"]
    end

    Plugins -- "check_ping / check_http / check_ssh" --> Target_Linux
    Plugins -- "check_nrpe (Port TCP 5666)" --> Target_Linux
    Plugins -- "check_nt (Port TCP 12489)" --> Target_Win
    Plugins -- "check_snmp (Port UDP 161/162)" --> Target_Net

Công nghệ và Phiên bản sử dụng

  • Hệ điều hành máy chủ: CentOS 6.10 64-bit (Linux Kernel 2.6.32).
  • Core Engine: Nagios Core phiên bản 4.0.8.
  • Plugin Package: Nagios Plugins phiên bản 2.2.1 / 1.4.16.
  • Web Server & Runtime: Apache HTTP Server (httpd 2.2.15), PHP 5.3.3, GCC Compiler, GD Graphics Library.
  • Giao thức & Phụ trợ: Net-SNMP 5.5, NRPE (Nagios Remote Plugin Executor), Mailx/Sendmail cho cảnh báo SMTP.

Kiến trúc dữ liệu và Giao thức SNMP

Hệ thống tuân thủ mô hình FCAPS (Fault, Configuration, Accounting, Performance, Security) của ISO. Trong đó, SNMP hoạt động dựa trên cấu trúc MIB (Management Information Base) với cây định danh OID (Object Identifier):

$$\text{SNMP PDU Structure} = [\text{Version}] + [\text{Community String}] + [\text{PDU Type}] + [\text{Request ID}] + [\text{Error Status}] + [\text{Variable Bindings (OID : Value)}]$$

Cơ chế bảo mật SNMP được thiết lập đa lớp thông qua Community String (public cho Read-Only, private cho Read-Write), kết hợp SNMP View và SNMP Access Control List (ACL) để khóa cứng địa chỉ IP của Nagios Server.


Implementation và kết quả

Quy trình triển khai và Cài đặt kỹ thuật

Quá trình xây dựng máy chủ Nagios Core trên Linux CentOS 6.10 được thực hiện chuẩn hóa qua các bước biên dịch mã nguồn trực tiếp:

1. Cài đặt các gói phụ thuộc và thư viện biên dịch

yum install -y httpd php gcc glibc glibc-common gd gd-devel net-snmp make wget

2. Thiết lập tài khoản và phân quyền thực thi ngoại trú

/usr/sbin/useradd -m nagios
passwd nagios
/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -a -G nagcmd nagios
/usr/sbin/usermod -a -G nagcmd apache

3. Biên dịch và cấu hình Nagios Core

cd /home/source
tar xzf nagios-4.0.8.tar.gz
cd nagios-4.0.8
./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf

4. Biên dịch Nagios Plugins

cd /home/source
tar xzf nagios-plugins-2.2.1.tar.gz
cd nagios-plugins-2.2.1
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make && make install

5. Định nghĩa đối tượng giám sát (Object Definitions)

Cấu hình máy chủ được module hóa trong thư mục /usr/local/nagios/etc/objects/:

/* Định nghĩa Host Linux mục tiêu */
define host {
    use                     linux-server
    host_name               centos-target
    alias                   CentOS 6 Production Node
    address                 192.168.1.50
    max_check_attempts      5
    check_period            24x7
    notification_interval   30
    notification_period     24x7
}

/* Định nghĩa giám sát dung lượng ổ cứng qua check_disk */
define service {
    use                     generic-service
    host_name               centos-target
    service_description     Disk Space /dev/sda1
    check_command           check_local_disk!20%!10%!/dev/sda1
    max_check_attempts      5
    check_interval          5
    retry_interval          3
    check_period            24x7
    notification_interval   30
    notification_options    w,c,r
    contact_groups          admins
}
stateDiagram-v2
    [*] --> OK : Service Running Normal
    OK --> WARNING : Metric exceeds Warning Threshold (Soft State)
    WARNING --> CRITICAL : Metric exceeds Critical Threshold (Soft State)
    WARNING --> OK : Metric Recovers
    CRITICAL --> HARD_CRITICAL : Failed max_check_attempts (5/5)
    HARD_CRITICAL --> Send_Email_Alert : Trigger Notification
    HARD_CRITICAL --> OK : Service Recovers (Send Recovery Alert)

Kịch bản thử nghiệm và Đánh giá hiệu năng

Hệ thống được đưa vào thử nghiệm liên tục từ ngày 02/12/2019 đến ngày 09/12/2019 với các kịch bản sự cố giả lập:

STT Kịch bản kiểm thử Hành động kích hoạt Trạng thái ghi nhận Thời gian phát hiện Trạng thái cảnh báo
1 Kiểm tra kết nối mạng Giả lập mất gói / Trễ mạng cao WARNING / CRITICAL < 15 giây Giao diện Web đổi màu, ghi log
2 Đánh sập Web Server Tắt dịch vụ service httpd stop CRITICAL (Connection Refused) 30 giây (1 check cycle) Gửi Email cảnh báo tới quản trị viên
3 Tắt cổng quản trị từ xa Dừng tiến trình SSH daemon CRITICAL (Socket Timeout) 30 giây Gửi Email cảnh báo tức thời
4 Quá tải RAM Windows Chạy script chiếm dụng > 85% RAM WARNING $\rightarrow$ CRITICAL < 60 giây Email cảnh báo ngưỡng bộ nhớ
5 Phục hồi dịch vụ Khởi động lại dịch vụ HTTP/SSH OK (Recovery) 30 giây Gửi Email thông báo hệ thống bình thường
[04-12-2019 14:22:10] SERVICE ALERT: centos-target;HTTP;CRITICAL;SOFT;1;Connection refused
[04-12-2019 14:24:10] SERVICE ALERT: centos-target;HTTP;CRITICAL;HARD;5;Connection refused
[04-12-2019 14:24:11] SERVICE NOTIFICATION: nagiosadmin;centos-target;HTTP;CRITICAL;notify-service-by-email;Connection refused
[04-12-2019 14:28:45] SERVICE ALERT: centos-target;HTTP;OK;HARD;1;HTTP OK: HTTP/1.1 200 OK - 4250 bytes in 0.003 second response time
[04-12-2019 14:28:46] SERVICE NOTIFICATION: nagiosadmin;centos-target;HTTP;OK;notify-service-by-email;HTTP OK: HTTP/1.1 200 OK

Đổi mới và đóng góp

Điểm cải tiến kỹ thuật

  1. Phối hợp 5 phương thức kiểm tra linh hoạt: Thay vì chỉ áp dụng một kỹ thuật duy nhất, đồ án tích hợp hoàn chỉnh cả 5 phương thức: Kiểm tra dịch vụ trực tiếp (Active Direct), SSH Tunneled Check (check_by_ssh), NRPE Agent chuyên dụng, giám sát thiết bị qua SNMP chuẩn hóa và cơ chế Passive Checks thông qua NSCA.
  2. Cơ chế lọc nhiễu cảnh báo (Flap Detection & Soft/Hard States): Thiết lập chu kỳ kiểm tra thông minh với tham số max_check_attempts = 5, check_interval = 5, retry_interval = 3. Giảm thiểu hơn 40% tình trạng cảnh báo rác (False Alarms) do suy hao mạng cục bộ tức thời.
  3. Mô hình hóa quản lý theo đối tượng kế thừa: Ứng dụng kỹ thuật cấu hình kế thừa thông qua file mẫu templates.cfg, giúp rút ngắn 70% số dòng lệnh cấu hình khi thêm mới thiết bị vào mạng.
graph LR
    subgraph SoSanh ["So sánh hiệu năng phát hiện sự cố"]
        A[Giám sát thủ công: 120 - 360 phút] -->|Giảm 99.8%| B[Nagios Automation: 0.5 - 2 phút]
    end

So sánh với các giải pháp trên thị trường

Tính năng Nagios Core Zabbix Cacti PRTG Network Monitor
Mô hình kiến trúc Modular Plugins Monolithic Core + Agent RRDTool Poller All-in-One Proprietary
Mức chiếm dụng RAM Siêu nhẹ (~50-100MB) Trung bình (500MB - 2GB) Thấp (100-300MB) Nặng (2GB - 8GB+)
Thế mạnh chính Giám sát trạng thái & Cảnh báo Giám sát hiệu năng đa năng Vẽ đồ thị băng thông (Graphing) Giao diện người dùng sẵn có
Hệ sinh thái Plugins Rất lớn (>5.000 community plugins) Trung bình Thấp (chủ yếu mẫu đồ thị) Khép kín
Chi phí triển khai 0 USD 0 USD 0 USD Trả phí theo Sensor ($$$)

Ứng dụng thực tế và triển khai

Trường hợp sử dụng thực tế (Real-World Use Cases)

  1. Hạ tầng Trung tâm Dữ liệu Doanh nghiệp vừa và nhỏ (SMEs): Giám sát cụm máy chủ dịch vụ Web, Mail, Database nội bộ; kiểm soát ngưỡng dung lượng ổ cứng để ngăn ngừa sự cố dừng hệ thống do tràn log.
  2. Mạng Campus Trường Đại học / Bệnh viện: Giám sát liên tục trạng thái hoạt động của hàng trăm Access Point, Core Switch, Router liên phòng ban và máy in mạng qua giao thức SNMP.
gantt
    title Lộ trình Triển khai Hệ thống Giám sát Nagios
    dateFormat  YYYY-MM-DD
    section Khảo sát & Thiết kế
    Khảo sát danh mục thiết bị và IP           :a1, 2019-10-14, 14d
    Thiết kế mô hình kiến trúc và ngưỡng đo     :a2, after a1, 14d
    section Cài đặt & Cấu hình
    Cài đặt CentOS, Apache, Nagios Core       :b1, after a2, 14d
    Biên dịch Plugins, cấu hình Host/Service   :b2, after b1, 21d
    section Kiểm thử & Vận hành
    Chạy thử nghiệm, kích hoạt sự cố giả lập   :c1, after b2, 14d
    Nghiệm thu, hoàn thiện tài liệu đồ án      :c2, after c1, 10d

Phân tích Hiệu quả Đầu tư (ROI Analysis)

  • Chi phí phần mềm: 0 VNĐ (sử dụng hoàn toàn mã nguồn mở Nagios Core, CentOS, Apache, Net-SNMP).
  • Chi phí phần cứng: Tận dụng lại máy chủ cũ hoặc tạo máy ảo với cấu hình tối thiểu 1 vCPU, 1GB RAM, 50GB HDD.
  • Hiệu quả kinh tế: Tiết kiệm chi phí đầu tư ban đầu ước tính từ 50.000.000 VNĐ đến 150.000.000 VNĐ chi phí mua license phần mềm thương mại mỗi năm; giảm thời gian gián đoạn mạng (MTTR - Mean Time To Resolution) lên tới 60%.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Giao diện cấu hình thủ công: Nagios Core thuần túy yêu cầu chỉnh sửa các tệp .cfg bằng dòng lệnh (CLI), chưa có giao diện đồ họa (GUI Web) trực tiếp để thêm/xóa Host.
  • Chưa tự động vẽ bản đồ động: Bản đồ mạng (Network Map) cần được định nghĩa mối quan hệ cha-con (parents) bằng tay, không có tính năng Auto-Discovery.
  • Bảo mật SNMPv1: Việc truyền bản tin SNMPv1 với Community String dạng Cleartext tiềm ẩn nguy cơ bị bắt gói tin (Sniffing) trong mạng nội bộ.

Hướng phát triển tiếp theo

  • Nâng cấp triển khai SNMPv3 với các thuật toán xác thực SHA và mã hóa gói tin AES để tăng cường an toàn thông tin.
  • Tích hợp công cụ PNP4Nagios hoặc Grafana để trực quan hóa dữ liệu hiệu năng thành các biểu đồ thời gian thực chuyên sâu.
  • Xây dựng cụm giám sát phân tán (Distributed Monitoring) sử dụng Mod-Gearman hoặc NSCA để mở rộng năng lực quản lý hàng chục nghìn thiết bị phân tán theo vị trí địa lý.

Đối tượng hưởng lợi

quadrantChart
    title Phân bổ Giá trị cho các Nhóm Đối tượng
    x-axis Thấp --> Giá trị Thực tiễn Cao
    y-axis Thấp --> Khả năng Ứng dụng Học thuật Cao
    quadrant-1 "Doanh nghiệp & Quản trị viên"
    quadrant-2 "Sinh viên & Giảng viên"
    quadrant-3 "Người dùng phổ thông"
    quadrant-4 "Kỹ sư DevOps / Lập trình viên"
    "Sinh viên CNTT": [0.75, 0.88]
    "Doanh nghiệp SMEs": [0.92, 0.45]
    "Kỹ sư Quản trị mạng": [0.88, 0.65]
    "Nhà nghiên cứu An toàn mạng": [0.60, 0.78]
  • Sinh viên ngành Mạng & Quản trị Hệ thống: Tiếp cận tài liệu chuẩn mực về nguyên lý hoạt động của SNMP, kiến trúc client-server trong giám sát mạng và kỹ năng quản trị Linux nâng cao.
  • Kỹ sư Quản trị Hệ thống (System Admins / DevOps): Sở hữu tài liệu hướng dẫn từng bước (Step-by-Step) để biên dịch, tối ưu hóa và làm chủ công cụ giám sát mã nguồn mở chuẩn công nghiệp.
  • Doanh nghiệp vừa và nhỏ: Nhận được giải pháp giám sát mạng 0 đồng hoàn chỉnh, độ ổn định cao, sẵn sàng triển khai thực tế để bảo vệ an toàn cho hạ tầng công nghệ.

Câu hỏi thường gặp (FAQ)

1. Yêu cầu cấu hình phần cứng tối thiểu để triển khai máy chủ Nagios Core là gì?

Máy chủ chỉ cần cấu hình khiêm tốn: CPU Dual Core 2.0 GHz, RAM từ 1GB đến 2GB, dung lượng ổ đĩa HDD/SSD tối thiểu 50GB. Với cấu hình này, Nagios có thể giám sát ổn định hơn 100 hosts và 500 services.

2. Sự khác biệt giữa Active Check và Passive Check trong Nagios là gì?

  • Active Check: Máy chủ Nagios chủ động khởi tạo kết nối hoặc chạy script theo chu kỳ (được lập lịch bởi bộ đếm thời gian) để kiểm tra thiết bị/dịch vụ.
  • Passive Check: Thiết bị ngoại vi hoặc ứng dụng bên thứ ba tự động đo đạc và chủ động đẩy (push) kết quả về máy chủ Nagios thông qua daemon trung gian NSCA.

3. Làm thế nào để giám sát máy chủ nằm sau tường lửa hoặc vùng mạng NAT?

Quản trị viên có thể cài đặt NRPE và mở cổng TCP 5666 trên Firewall, hoặc sử dụng SSH Tunneling (check_by_ssh), hoặc thiết lập NSCA để máy chủ mục tiêu chủ động gửi dữ liệu ra ngoài qua cổng TCP được bảo mật.

4. Giao thức SNMPv1/v2c và SNMPv3 khác nhau như thế nào trong giám sát?

SNMPv1/v2c xác thực bằng chuỗi community string dạng bản rõ (cleartext), không có tính năng mã hóa dữ liệu. SNMPv3 bổ sung lớp bảo mật vượt trội với mô hình USM (User-based Security Model), cung cấp xác thực người dùng (MD5/SHA) và mã hóa nội dung gói tin (DES/AES).

5. Nagios xử lý thế nào để tránh gửi hàng loạt email khi Switch trung tâm bị sập?

Nagios sử dụng cơ chế định nghĩa quan hệ phụ thuộc mạng (Network Reachability / Parent-Child Relationships). Khi Switch cha bị đánh dấu là DOWN, toàn bộ các máy chủ con kết nối qua Switch đó sẽ được chuyển sang trạng thái UNREACHABLE thay vì DOWN, ngăn chặn hiện tượng "bão cảnh báo" (Alert Storm).


Kết luận

Đồ án tốt nghiệp "Sử dụng phần mềm Nagios để giám sát hệ thống mạng" của sinh viên Phạm Quang Anh đã hoàn thành xuất sắc các mục tiêu đề ra cả về mặt lý luận khoa học lẫn năng lực triển khai thực tiễn. Nghiên cứu đã làm sáng tỏ kiến trúc giao thức SNMP, tiêu chuẩn quản trị mạng FCAPS và chứng minh tính hiệu quả vượt trội của giải pháp mã nguồn mở Nagios Core trong việc tối ưu hóa vận hành, tự động hóa phát hiện sự cố và bảo vệ hạ tầng công nghệ thông tin. Hệ thống thử nghiệm hoạt động ổn định, cung cấp bức tranh giám sát đa chiều, chính xác và có giá trị ứng dụng cao cho các doanh nghiệp và tổ chức giáo dục.