Giới thiệu dự án

Sự bùng nổ của hạ tầng điện toán đám mây (Cloud Computing) và các hệ thống máy chủ biên đã định hình lại phương thức vận hành hạ tầng công nghệ thông tin toàn cầu. Theo báo cáo thị phần hạ tầng đám mây Q1/2021, các nhà cung cấp dịch vụ lớn như AWS chiếm tới 32%, Microsoft Azure chiếm 20%, Google Cloud chiếm 9% và Alibaba Cloud chiếm 6% trong tổng doanh thu 39 tỷ USD toàn ngành (tăng trưởng 37% so với cùng kỳ). Cùng với sự mở rộng quy mô hạ tầng, yêu cầu duy trì tính khả dụng với chỉ số Uptime đạt mức tiêu chuẩn viễn thông 99.999% (tương đương thời gian ngừng hoạt động cho phép không quá 52.56 phút/năm) trở thành bài toán sống còn đối với mọi tổ chức.

Tuy nhiên, việc vận hành máy chủ Linux trong thực tế đối mặt với nhiều thách thức nghiêm trọng:

  • Tắc nghẽn tài nguyên cục bộ: Các tiến trình nền (background processes), rò rỉ bộ nhớ (memory leaks) và xung đột luồng I/O dẫn đến hiện tượng quá tải CPU, cạn kiệt dung lượng Inode hoặc phân vùng Swap mà quản trị viên không thể phát hiện theo thời gian thực.
  • Chi phí sở hữu hạ tầng (TCO) cao: Các giải pháp giám sát thương mại độc quyền yêu cầu chi phí bản quyền lớn theo từng đầu node quản lý, tạo rào cản tài chính cho doanh nghiệp vừa và nhỏ.
  • Thiếu hụt khả năng trực quan hóa tập trung: Quản trị viên thường phải phân tích logs thủ công thông qua giao diện dòng lệnh (CLI), gây chậm trễ trong quy trình phản ứng sự cố (Mean Time to Detect - MTTD và Mean Time to Repair - MTTR).

Đồ án tốt nghiệp "Xây dựng Web Server quản lý tài nguyên máy chủ Linux" do sinh viên Nguyễn Hoàng Hà (Khoa Công nghệ Thông tin 1, Học viện Công nghệ Bưu chính Viễn thông) thực hiện dưới sự hướng dẫn của TS. Nguyễn Văn Thuỷ, tập trung giải quyết triệt để các vấn đề trên thông qua việc nghiên cứu, tích hợp và triển khai hệ sinh thái giám sát mã nguồn mở.

Mục tiêu cụ thể của dự án

  1. Thiết kế kiến trúc Web Server giám sát: Xây dựng hệ thống thu thập chỉ số hiệu năng máy chủ theo thời gian thực sử dụng kiến trúc Time-Series Database (TSDB).
  2. Triển khai hạ tầng thu thập số liệu đa chiều: Cấu hình Prometheus Server giao tiếp qua giao thức HTTP/HTTPS với cơ chế HTTP Pull Model để trích xuất trạng thái phần cứng và dịch vụ hệ điều hành.
  3. Trực quan hóa chỉ số quản trị chuyên sâu: Xây dựng dashboard tập trung với Grafana, hỗ trợ truy vấn biểu thức phân tích dữ liệu qua ngôn ngữ PromQL.
  4. Tối ưu hóa bảo mật và độ ổn định: Triển khai giải pháp trên nền tảng CentOS 7 ổn định, cấu hình tường lửa IPTables và phân định chính sách truy cập hệ thống.

Phạm vi và giới hạn của đề tài

  • Phạm vi nghiên cứu: Triển khai giải pháp giám sát tài nguyên hệ thống (CPU, RAM, Disk I/O, Network Throughput) trên hệ điều hành Linux (CentOS 7 x86_64) chạy trên môi trường ảo hóa VMware/Cloud Server.
  • Giới hạn kỹ thuật: Tập trung vào kiến trúc thu thập chỉ số qua giao thức HTTP tiêu chuẩn; chưa tích hợp giải pháp lưu trữ phân tán dài hạn (Thanos/Cortex) cho cụm máy chủ quy mô lớn trên 1,000 nodes.

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

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

Quá trình khảo sát các giải pháp quản lý tài nguyên máy chủ hiện nay cho thấy sự phân hóa rõ rệt giữa giải pháp thương mại độc quyền và nền tảng mã nguồn mở:

Tiêu chí đánh giá SolarWinds NPM ManageEngine OpManager Prometheus & Grafana Stack
Mô hình triển khai Thương mại (Proprietary) Thương mại (Freemium/Enterprise) Mã nguồn mở (Open-Source Core)
Giao thức thu thập SNMP, WMI, Packet Sniffing SNMP, WMI, CLI/SSH, Telnet HTTP/HTTPS Pull Model, Exporters
Cơ sở dữ liệu Microsoft SQL Server PostgreSQL / MS SQL Time-Series Database (TSDB) cục bộ
Chi phí bản quyền Rất cao (> $3,000/license) Cao (Miễn phí 3 thiết bị, gói Pro > $245) Hoàn toàn miễn phí ($0)
Khả năng tùy biến Theo plugin của hãng Giới hạn theo workflow tích hợp sẵn Không giới hạn qua PromQL, API, Plugins
Tài nguyên tiêu hao Nặng, đòi hỏi Windows Server Trung bình Cực kỳ nhẹ (Lightweight daemon)

Phân loại yêu cầu hệ thống theo mô hình MoSCoW

  • Must Have (Bắt buộc phải có):
    • Thu thập chỉ số CPU Utilization, Memory Usage, Disk Inode/Storage, Network I/O.
    • Lưu trữ dữ liệu chuỗi thời gian định dạng Time-Series với nhãn (key-value labels).
    • Giao diện trực quan hóa dạng đồ thị thời gian thực qua Web UI.
  • Should Have (Nên có):
    • Tích hợp công cụ đồng bộ thời gian máy chủ chuẩn hóa qua NTP.
    • Thiết lập chính sách lọc gói tin mạng với IPTables thay thế Firewalld.
  • Could Have (Có thể có):
    • Tích hợp module cảnh báo sự cố ngưỡng qua Alertmanager.
    • Hỗ trợ giám sát các container Docker hoặc máy chủ ảo VPS mở rộng.
  • Won't Have (Chưa thực hiện):
    • Tự động hóa auto-remediation (tự động restart dịch vụ lỗi qua AI/Machine Learning).

Thiết kế hệ thống

Kiến trúc hệ thống được xây dựng dựa trên mô hình phi tập trung, tách biệt giữa tầng thu thập (Data Scraping), tầng lưu trữ chuỗi thời gian (TSDB Engine) và tầng trực quan hóa (Visualization Layer).

+-------------------------------------------------------------------------+
|                              TARGET SERVER                              |
|   +-----------------------------------------------------------------+   |
|   |             Linux Kernel (CentOS 7 - x86_64 Architecture)       |   |
|   |             Resources: CPU / RAM / Disk Inodes / Network        |   |
|   +-----------------------------------------------------------------+   |
|                                   |                                     |
|                                   v                                     |
|   +-----------------------------------------------------------------+   |
|   |         Node Exporter Daemon (Port: 9100 / HTTP Metrics)        |   |
|   +-----------------------------------------------------------------+   |
+-----------------------------------|-------------------------------------+
                                    | (HTTP Pull: /metrics)
                                    v
+-------------------------------------------------------------------------+
|                         PROMETHEUS MONITORING ENGINE                    |
|   +-----------------------------------------------------------------+   |
|   |   Retrieval Engine <--> Storage Engine (TSDB Engine)            |   |
|   |   PromQL Engine    <--> Service Discovery / Static Target Conf  |   |
|   +-----------------------------------------------------------------+   |
|              |                                            |             |
|              v (Alert Routing)                            v (PromQL API)|
|   +---------------------+                     +---------------------+   |
|   |    Alertmanager     |                     |   Grafana Web UI    |   |
|   | (Email/Slack Alert) |                     |  (Port 3000 Web UI) |   |
|   +---------------------+                     +---------------------+   |
+-------------------------------------------------------------------------+

Ngăn xếp công nghệ (Technology Stack)

  • Hệ điều hành nền tảng: CentOS Linux Release 7.9.2009 (Core) 64-bit Kernel 3.10.x.
  • Lưu trữ dữ liệu: Prometheus Time-Series Database (TSDB) v2.x với cơ chế nén mmap chunks.
  • Engine thu thập số liệu: Prometheus Server v2.30.3 (Engine viết bằng Go).
  • Giao diện quản trị & Trực quan: Grafana Analytics & Monitoring Suite v8.x (Frontend: TypeScript, Backend: Go).
  • Tiện ích mạng & An ninh: IPTables Services, NTPdate daemon, GNU Wget.

Cơ chế an ninh và quản trị cổng

Hệ thống áp dụng chính sách Hardening cho máy chủ CentOS:

  • Vô hiệu hóa phân quyền can thiệp sâu của SELinux sang chế độ disabled nhằm tránh xung đột quyền socket binding của daemon giám sát.
  • Chuyển đổi từ daemon firewalld mặc định sang iptables-services để kiểm soát các chuỗi quy tắc (rules chain) trực tiếp tại tầng Kernel.
  • Thiết lập quy tắc tường lửa nghiêm ngặt chỉ mở 3 cổng dịch vụ tối thiểu:
    • Port 22/TCP: Quản trị từ xa bảo mật qua SSH.
    • Port 9090/TCP: Giao tiếp giao diện và API truy vấn Prometheus Server.
    • Port 3000/TCP: Cổng truy cập Web Client Dashboard của Grafana.

Implementation và kết quả

Quy trình triển khai (Development Process)

Hệ thống được triển khai qua 4 giai đoạn cụ thể trên hạ tầng ảo hóa máy chủ Linux:

Giai đoạn 1: Chuẩn hóa môi trường máy chủ CentOS 7

Khởi tạo máy ảo với thông số phần cứng tối thiểu: 2 vCPUs, 2GB RAM, 40GB Storage (định dạng LVM với phân vùng /boot 200MB, phân vùng swap và phân vùng root /). Thực hiện đồng bộ hóa nhãn thời gian qua giao thức NTP và vô hiệu hóa SELinux:

# Cập nhật các gói thư viện hệ thống
yum update -y

# Cài đặt và đồng bộ hóa thời gian máy chủ chuẩn xác cho TSDB
yum install ntpdate -y
ntpdate pool.ntp.org

# Vô hiệu hóa cơ chế SELinux để ngăn chặn chặn port binding nội bộ
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

Giai đoạn 2: Tái cấu trúc tường lửa với IPTables

Vô hiệu hóa toàn bộ firewalld, khởi tạo dịch vụ iptables-services và cấu hình các bộ quy tắc mở cổng dịch vụ chuyên biệt:

# Dừng và cô lập hoàn toàn firewalld
systemctl stop firewalld
systemctl disable firewalld
systemctl mask --now firewalld

# Cài đặt và kích hoạt iptables daemon
yum install iptables-services -y
systemctl start iptables
systemctl enable iptables

# Thiết lập mở các cổng kết nối quan trị và dịch vụ
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 9090 -j ACCEPT

# Lưu trạng thái và khởi động lại dịch vụ tường lửa
service iptables save
service iptables restart

Giai đoạn 3: Cài đặt và cấu hình Prometheus Engine

Tải gói phân phối nhị phân Prometheus dành cho kiến trúc Linux x86_64 qua công cụ wget, giải nén và cấu hình chu kỳ cào dữ liệu (Scrape Interval):

# Cài đặt công cụ truyền tải tệp tin
yum install wget -y

# Tải bản phát hành chính thức của Prometheus Core
wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz

# Giải nén gói nhị phân vào thư mục làm việc
tar -xvzf prometheus-2.30.3.linux-amd64.tar.gz
cd prometheus-2.30.3.linux-amd64

Cấu hình tệp prometheus.yml thiết lập kết nối tới các đích thu thập chỉ số (Targets):

global:
  scrape_interval: 15s     # Chu kỳ lấy mẫu định kỳ 15 giây
  evaluation_interval: 15s # Chu kỳ đánh giá quy tắc cảnh báo

scrape_configs:
  - job_name: 'prometheus_master'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'linux_node_exporter'
    static_configs:
      - targets: ['localhost:9100']

Giai đoạn 4: Xây dựng biểu thức truy vấn PromQL trên Grafana Dashboard

Sau khi Grafana kết nối thành công với Data Source Prometheus (http://localhost:9090), các đồ thị giám sát chuyên sâu được xây dựng dựa trên các câu lệnh PromQL chuẩn xác:

Truy vấn phần trăm tải CPU theo thời gian thực: $$\text{CPU Usage (%)} = 100 - \left(\text{avg by (instance)} \left(\text{irate}\left(\text{node_cpu_seconds_total}{\text{mode}="\text{idle}"}[5m]\right)\right) \times 100\right)$$

Truy vấn tỷ lệ tiêu hao bộ nhớ RAM khả dụng: $$\text{Memory Utilization (%)} = \left(1 - \frac{\text{node_memory_MemAvailable_bytes}}{\text{node_memory_MemTotal_bytes}}\right) \times 100$$

Kết quả thử nghiệm và đánh giá hiệu năng

Hệ thống sau khi cấu hình hoàn chỉnh được đưa vào thử nghiệm liên tục trong môi trường giả lập tải máy chủ web:

  • Chu kỳ cào dữ liệu (Scrape Duration): Trung bình đạt 12ms - 18ms cho mỗi chu kỳ 15 giây, không gây nghẽn băng thông mạng nội bộ.
  • Mức độ chiếm dụng tài nguyên của Monitoring Daemon:
    • Prometheus Server: Sử dụng ~1.2% CPU~65MB RAM khi quản lý 100 metrics chuỗi thời gian.
    • Grafana Web UI: Sử dụng ~0.4% CPU~42MB RAM khi render 8 đồ thị cùng lúc trên trình duyệt người dùng.
  • Tính ổn định của dữ liệu: Đạt tỷ lệ bắt mẫu thành công 100%, không xảy ra hiện tượng mất điểm dữ liệu (data drop) trong suốt quá trình đo lường 72 giờ liên tục.

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

  1. Ứng dụng công nghệ Time-Series Database vào quản lý hạ tầng: Thay thế mô hình cơ sở dữ liệu quan hệ (RDBMS) truyền thống vốn nặng nề trong việc xử lý dữ liệu gắn nhãn thời gian bằng cấu trúc TSDB nén đa chiều chuyên dụng của Prometheus.
  2. Loại bỏ hoàn toàn chi phí bản quyền giám sát (TCO = 0): Cung cấp giải pháp thay thế hoàn hảo cho các phần mềm thương mại đắt đỏ như SolarWinds NPM và ManageEngine OpManager mà vẫn đảm bảo tính năng theo dõi toàn diện phần cứng Linux.
  3. Mô hình kéo số liệu (Pull Model) tối ưu hóa băng thông: Khác với mô hình Push (các agent đẩy dữ liệu liên tục gây nghẽn máy chủ nhận), mô hình Pull của Prometheus cho phép máy chủ chủ động điều tiết tần suất lấy dữ liệu phù hợp với tải thực tế của hệ thống.
  4. Khả năng mở rộng không giới hạn: Cho phép tích hợp thêm hàng trăm exporter chuyên biệt (MySQL Exporter, Nginx Exporter, Redis Exporter) mà không cần cấu trúc lại lõi Web Server quản lý.

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

Kịch bản ứng dụng thực tế

  • Doanh nghiệp vừa và nhỏ (SMEs): Giám sát toàn bộ đội ngũ máy chủ Cloud VPS, Dedicated Servers chạy các ứng dụng ERP, CRM và E-commerce mà không tốn chi phí duy trì bản quyền giám sát hàng tháng.
  • Hạ tầng cung cấp dịch vụ Hosting/Data Center: Theo dõi tải CPU, I/O đĩa cứng và lưu lượng mạng của từng khách hàng để kịp thời nâng cấp dung lượng và ngăn chặn tấn công từ chối dịch vụ (DDoS).

Yêu cầu cấu hình triển khai hệ thống

  • Hạ tầng tối thiểu:
    • CPU: 2 Cores (kiến trúc x86_64).
    • RAM: 2GB (Khuyến nghị 4GB cho hệ thống trên 50 nodes).
    • Dung lượng ổ đĩa: 40GB SSD (định dạng EXT4/XFS).
    • Hệ điều hành: CentOS 7.x / RHEL 7.x / Rocky Linux / Ubuntu Server.

Lộ trình triển khai 4 bước cho doanh nghiệp

[Tuần 1: Chuẩn bị hạ tầng & Cài đặt CentOS] 
    --> [Tuần 2: Cấu hình Prometheus Core & Node Exporters]
        --> [Tuần 3: Thiết lập Grafana Dashboards & Phân quyền]
            --> [Tuần 4: Thiết lập Alertmanager & Đưa vào vận hành thực tế]

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

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

  • Lưu trữ cục bộ đơn node: Prometheus mặc định lưu trữ dữ liệu trên phân vùng cục bộ của máy chủ, chưa có cơ chế lưu trữ phân tán dài hạn (Long-term retention) khi dữ liệu vượt ngưỡng 1TB.
  • Chưa tích hợp tự động hóa cảnh báo đa kênh: Hiện tại đồ án mới dừng lại ở bước trực quan hóa chỉ số; module Alertmanager chưa được kết nối hoàn chỉnh với các webhook như Telegram Bot, Slack Channel hoặc SMS Gateway.

Hướng phát triển trong tương lai

  • Tích hợp thêm các bộ xuất dữ liệu chuyên dụng: mysqld_exporter cho cơ sở dữ liệu và cAdvisor để giám sát toàn diện hệ sinh thái container Docker/Kubernetes.
  • Xây dựng cụm giám sát sẵn sàng cao (High Availability Monitoring Cluster) sử dụng Thanos để hợp nhất dữ liệu từ nhiều cụm Prometheus phân tán.

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

  • Sinh viên & Học viên CNTT: Nắm vững kiến trúc Client-Server, cơ chế quản lý tài nguyên nhân Linux (Kernel, Inodes, Memory Allocation) và phương pháp luận thiết kế hệ thống giám sát.
  • Kỹ sư DevOps / Quản trị viên hệ thống (SysAdmin): Tiếp cận quy trình chuẩn hóa cấu hình hệ điều hành CentOS 7, kỹ thuật chuyển đổi tường lửa IPTables và phương pháp viết truy vấn PromQL phục vụ giám sát thực chiến.
  • Doanh nghiệp vận hành hệ thống: Tiết kiệm từ $3,000 - $10,000/năm chi phí bản quyền phần mềm quản trị hạ tầng, nâng cao chỉ số Uptime và giảm thiểu rủi ro gián đoạn dịch vụ.

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

1. Cấu hình phần cứng tối thiểu để triển khai hệ thống Web Server giám sát này là gì?

Hệ thống yêu cầu máy chủ chạy hệ điều hành Linux (CentOS 7 x86_64) với tối thiểu 2 vCPUs, 2GB RAM và 40GB không gian đĩa cứng khả dụng. Cấu hình này đáp ứng tốt cho việc giám sát từ 1 đến 20 máy chủ mục tiêu với chu kỳ lấy mẫu 15 giây.

2. Tại sao Prometheus lại sử dụng cơ chế HTTP Pull thay vì Push như các giải pháp truyền thống?

Cơ chế Pull giúp máy chủ Prometheus nắm quyền chủ động kiểm soát tần suất cào dữ liệu, tránh hiện tượng quá tải (DDoS nội bộ) khi hàng ngàn máy trạm gửi số liệu cùng lúc. Đồng thời, cơ chế này giúp phát hiện ngay lập tức tình trạng máy chủ trạm bị sập nếu kết nối HTTP Pull trả về lỗi timeout.

3. Làm thế nào để đảm bảo an toàn cho các cổng dịch vụ 9090 và 3000 khi đưa vào sản xuất?

Trong môi trường thực tế, quản trị viên nên cấu hình Reverse Proxy thông qua Nginx/Apache với chứng chỉ SSL/TLS (HTTPS), đồng thời kích hoạt tính năng xác thực người dùng (Basic Auth hoặc OAuth2) và giới hạn dải IP truy cập qua IPTables.

4. Hệ thống này có thể giám sát các dịch vụ khác ngoài tài nguyên hệ điều hành không?

Hoàn toàn có thể. Nhờ hệ sinh thái Exporter phong phú của cộng đồng mã nguồn mở, bạn chỉ cần cài đặt thêm các exporter tương ứng (ví dụ: blackbox_exporter cho website, nginx_exporter cho web server, mysqld_exporter cho cơ sở dữ liệu) và khai báo thêm mục target vào file prometheus.yml.

5. Chi phí đầu tư và thời gian thu hồi vốn (ROI) của giải pháp này như thế nào?

Do sử dụng hoàn toàn các giải pháp nguồn mở hàng đầu thế giới (Prometheus, Grafana, CentOS), chi phí mua bản quyền phần mềm là 0 VNĐ. Doanh nghiệp đạt điểm hòa vốn và thu hồi giá trị đầu tư ngay trong tháng đầu tiên triển khai nhờ giảm thiểu thời gian chết của hệ thống (downtime) và cắt giảm chi phí nhân sự trực ca thủ công.


Kết luận

Đồ án "Xây dựng Web Server quản lý tài nguyên máy chủ Linux" của sinh viên Nguyễn Hoàng Hà đã hoàn thành xuất sắc các mục tiêu nghiên cứu và thực nghiệm được đề ra. Bằng việc phân tích sâu sắc cấu trúc nhân Linux, tối ưu hóa chính sách bảo mật với IPTables trên nền CentOS 7, cùng với việc làm chủ công nghệ Time-Series Database của Prometheus và năng lực trực quan hóa trực quan của Grafana, đồ án đã mang đến một giải pháp quản trị tài nguyên toàn diện, tin cậy và có tính ứng dụng thực tiễn cao. Giải pháp không chỉ giúp quản trị viên chủ động nắm bắt sức khỏe hệ thống theo thời gian thực mà còn mở ra nền tảng vững chắc để tiếp tục mở rộng lên các mô hình điện toán đám mây và vi dịch vụ (microservices) phức tạp trong tương lai.