Quay lại danh sách
Tin tức công nghệ

Xây dựng hệ thống monitoring VPS với Grafana + Prometheus: Hướng dẫn giám sát real-time miễn phí

16 tháng 5, 2026

Giới thiệu về giám sát hệ thống VPS

Trong môi trường vận hành hiện đại, việc giám sát hiệu năng và tình trạng của VPS (Virtual Private Server) không còn là tùy chọn mà trở thành yêu cầu bắt buộc. Một hệ thống monitoring hiệu quả giúp bạn phát hiện sự cố trước khi chúng ảnh hưởng đến người dùng, tối ưu hóa tài nguyên và đảm bảo tính khả dụng của dịch vụ. Tuy nhiên, nhiều giải pháp monitoring chuyên nghiệp có chi phí cao, phức tạp trong triển khai hoặc không phù hợp với quy mô nhỏ.

May mắn thay, cộng đồng mã nguồn mở đã phát triển những công cụ mạnh mẽ như Prometheus và Grafana, cho phép xây dựng hệ thống monitoring chuyên nghiệp hoàn toàn miễn phí. Bài viết này sẽ hướng dẫn bạn từng bước thiết lập hệ thống giám sát real-time cho VPS, từ cài đặt cơ bản đến cấu hình nâng cao.

Tại sao cần hệ thống monitoring cho VPS?

VPS thường được sử dụng để host website, ứng dụng web, database và các dịch vụ khác. Khi không có hệ thống monitoring, bạn chỉ phát hiện sự cố khi người dùng báo cáo hoặc dịch vụ ngừng hoạt động hoàn toàn. Điều này dẫn đến thời gian downtime kéo dài và ảnh hưởng đến trải nghiệm người dùng.

Một hệ thống monitoring hiệu quả cung cấp:

  • Visibility (Khả năng quan sát): Hiểu rõ cách hệ thống hoạt động theo thời gian thực
  • Proactive Alerting (Cảnh báo chủ động): Nhận thông báo trước khi sự cố xảy ra
  • Performance Optimization (Tối ưu hiệu năng): Xác định bottleneck và tối ưu tài nguyên
  • Capacity Planning (Lập kế hoạch mở rộng): Dự đoán nhu cầu tài nguyên trong tương lai
  • Troubleshooting (Xử lý sự cố): Nhanh chóng xác định nguyên nhân khi có vấn đề

Kiến trúc hệ thống Prometheus + Grafana

Prometheus và Grafana hoạt động theo mô hình client-server với các thành phần chính:

Prometheus - Time Series Database

Prometheus là hệ thống monitoring và alerting mã nguồn mở, được thiết kế đặc biệt cho môi trường cloud-native. Prometheus thu thập và lưu trữ metrics dưới dạng time series data, với các đặc điểm nổi bật:

  • Pull-based model: Prometheus chủ động kéo metrics từ các target thay vì chờ push
  • Multi-dimensional data model: Metrics được xác định bằng tên và key-value pairs
  • Powerful query language (PromQL): Ngôn ngữ truy vấn linh hoạt cho phân tích metrics
  • Service discovery: Tự động phát hiện và monitoring các service mới

Grafana - Visualization Platform

Grafana là nền tảng visualization mã nguồn mở, cho phép tạo dashboard đẹp mắt và tương tác từ nhiều nguồn dữ liệu khác nhau. Grafana kết nối với Prometheus để hiển thị metrics dưới dạng biểu đồ, đồ thị và bảng điều khiển.

Exporters - Data Collectors

Exporters là các agent chạy trên VPS để thu thập metrics từ hệ thống và ứng dụng, sau đó expose chúng dưới định dạng mà Prometheus có thể scrape. Các exporters phổ biến bao gồm:

  • Node Exporter: Thu thập metrics hệ thống (CPU, RAM, disk, network)
  • cAdvisor: Giám sát container Docker
  • MySQL/PostgreSQL Exporter: Giám sát database
  • Nginx/Apache Exporter: Giám sát web server

Hướng dẫn cài đặt từng bước

Bước 1: Chuẩn bị môi trường

Yêu cầu hệ thống:

  • VPS chạy Ubuntu 20.04/22.04 hoặc CentOS 7/8
  • Quyền root hoặc sudo
  • Kết nối internet ổn định
  • Tối thiểu 1GB RAM, 2GB disk space

Cập nhật hệ thống và cài đặt dependencies:

sudo apt update && sudo apt upgrade -y
sudo apt install -y wget curl gnupg software-properties-common

Bước 2: Cài đặt Prometheus

Tạo user và group cho Prometheus:

sudo useradd --no-create-home --shell /bin/false prometheus
sudo mkdir /etc/prometheus /var/lib/prometheus

Tải và cài đặt Prometheus:

wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
tar xvf prometheus-2.45.0.linux-amd64.tar.gz
sudo cp prometheus-2.45.0.linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-2.45.0.linux-amd64/promtool /usr/local/bin/
sudo cp -r prometheus-2.45.0.linux-amd64/consoles /etc/prometheus/
sudo cp -r prometheus-2.45.0.linux-amd64/console_libraries /etc/prometheus/

Tạo file cấu hình Prometheus:

sudo nano /etc/prometheus/prometheus.yml

Thêm nội dung cấu hình cơ bản:

global:
  scrape_interval: 15s
  evaluation_interval: 15s

alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']

Tạo systemd service cho Prometheus:

sudo nano /etc/systemd/system/prometheus.service

Thêm nội dung:

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
    --config.file /etc/prometheus/prometheus.yml \
    --storage.tsdb.path /var/lib/prometheus/ \
    --web.console.templates=/etc/prometheus/consoles \
    --web.console.libraries=/etc/prometheus/console_libraries

[Install]
WantedBy=multi-user.target

Khởi động Prometheus:

sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus

Bước 3: Cài đặt Node Exporter

Node Exporter thu thập metrics hệ thống từ VPS:

wget https://github.com/prometheus/node_exporter/releases/download/v1.6.0/node_exporter-1.6.0.linux-amd64.tar.gz
tar xvf node_exporter-1.6.0.linux-amd64.tar.gz
sudo cp node_exporter-1.6.0.linux-amd64/node_exporter /usr/local/bin/
sudo useradd --no-create-home --shell /bin/false node_exporter

Tạo systemd service:

sudo nano /etc/systemd/system/node_exporter.service

Thêm nội dung:

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

Khởi động Node Exporter:

sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter

Bước 4: Cài đặt Grafana

Thêm repository Grafana:

sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Cài đặt Grafana:

sudo apt-get update
sudo apt-get install -y grafana

Khởi động và kích hoạt Grafana:

sudo systemctl start grafana-server
sudo systemctl enable grafana-server

Bước 5: Cấu hình Grafana kết nối Prometheus

Truy cập Grafana qua trình duyệt: http://your-vps-ip:3000

Đăng nhập với thông tin mặc định: username admin, password admin

Thêm datasource Prometheus:

  1. Vào Configuration → Data Sources
  2. Click Add data source
  3. Chọn Prometheus
  4. URL: http://localhost:9090
  5. Click Save & Test

Bước 6: Import dashboard mẫu

Grafana cung cấp hàng ngàn dashboard mẫu từ cộng đồng:

  1. Vào Dashboards → Browse
  2. Click New → Import
  3. Nhập ID dashboard: 1860 (Node Exporter Full)
  4. Chọn datasource Prometheus
  5. Click Import

Cấu hình nâng cao và tối ưu hóa

Thiết lập Alerting

Prometheus hỗ trợ alerting thông qua Alertmanager. Cấu hình alert rules để nhận cảnh báo khi:

  • CPU usage vượt quá 80% trong 5 phút
  • Memory usage vượt quá 90%
  • Disk space còn dưới 10%
  • Service không phản hồi

Tạo file alert rules:

sudo nano /etc/prometheus/rules.yml

Thêm nội dung mẫu:

groups:
- name: node_alerts
  rules:
  - alert: HighCPUUsage
    expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "High CPU usage on {{ $labels.instance }}"
      description: "CPU usage is above 80% for 5 minutes"

Cập nhật prometheus.yml để include rules file.

Bảo mật hệ thống

Mặc định, Prometheus và Grafana không có xác thực. Để bảo mật:

  1. Reverse Proxy với Nginx/Apache: Sử dụng SSL/TLS và basic auth
  2. Firewall Rules: Chỉ cho phép IP trusted truy cập port 3000/9090
  3. Grafana Authentication: Cấu hình OAuth, LDAP hoặc SAML
  4. Prometheus TLS: Bật TLS cho kết nối giữa Prometheus và exporters

Monitoring ứng dụng cụ thể

Tùy thuộc vào ứng dụng đang chạy trên VPS, bạn có thể thêm exporters tương ứng:

  • Web Server: Nginx/Apache exporter
  • Database: MySQL/PostgreSQL/MongoDB exporter
  • Message Queue: RabbitMQ/Kafka exporter
  • Cache: Redis/Memcached exporter

Tối ưu hiệu năng Prometheus

Khi số lượng metrics tăng lên, cần tối ưu Prometheus:

  • Retention Policy: Điều chỉnh thời gian lưu trữ metrics
  • Scrape Interval: Tăng interval cho metrics ít quan trọng
  • Label Management: Tránh sử dụng quá nhiều labels
  • Federation: Sử dụng Prometheus federation cho multi-server

Giải pháp thay thế và so sánh

Ngoài Prometheus + Grafana, có các giải pháp monitoring khác:

1. Zabbix

Ưu điểm: Mature, agent-based, hỗ trợ nhiều protocol, alerting mạnh mẽ
Nhược điểm: Cấu hình phức tạp, resource intensive, UI cũ

2. Nagios

Ưu điểm: Rất mature, plugin ecosystem rộng lớn
Nhược điểm: Configuration phức tạp, scaling khó, UI lỗi thời

3. Datadog/New Relic

Ưu điểm: SaaS, dễ sử dụng, tính năng phong phú
Nhược điểm: Chi phí cao, vendor lock-in

4. Netdata

Ưu điểm: Real-time, lightweight, auto-discovery
Nhược điểm: Limited historical data, alerting cơ bản

Prometheus + Grafana cung cấp sự cân bằng tốt giữa tính năng, hiệu năng và chi phí, đặc biệt phù hợp với môi trường cloud-native và containerized.

Kết luận

Xây dựng hệ thống monitoring với Prometheus và Grafana cung cấp giải pháp chuyên nghiệp, real-time hoàn toàn miễn phí cho VPS. Hệ thống này không chỉ giúp bạn giám sát tình trạng hệ thống mà còn cung cấp insights để tối ưu hiệu năng và dự đoán vấn đề trước khi chúng xảy ra.

Với kiến trúc mở rộng được, bạn có thể dễ dàng thêm monitoring cho nhiều VPS, container, và ứng dụng khác nhau. Cộng đồng active và ecosystem phong phú đảm bảo bạn luôn có sẵn exporters, dashboards và integrations cho hầu hết các công nghệ phổ biến.

Bắt đầu với cấu hình cơ bản trong bài viết này, sau đó mở rộng dần dần dựa trên nhu cầu cụ thể của bạn. Đừng để thiếu monitoring trở thành điểm yếu trong hệ thống của bạn - đầu tư thời gian thiết lập ngay hôm nay sẽ tiết kiệm hàng giờ xử lý sự cố trong tương lai.