Grafana và Prometheus cho VPS nhỏ: theo dõi CPU, RAM, disk và network

Cài Grafana và Prometheus trên VPS nhỏ để theo dõi CPU, RAM, disk, network, chọn interval, retention, alert và bảo vệ endpoint metrics an toàn. An toàn.

NHT
· 6 phút đọc
Grafana và Prometheus cho VPS nhỏ: theo dõi CPU, RAM, disk và network

Grafana và Prometheus thường được nhắc cùng nhau, nhưng hai công cụ đảm nhiệm hai lớp khác nhau. Prometheus scrape và lưu time series từ các endpoint metrics; Grafana truy vấn nguồn dữ liệu để tạo dashboard và biểu đồ. Trên một VPS nhỏ, bộ đôi này giúp nhìn thấy xu hướng CPU, RAM, disk và network trước khi người dùng báo lỗi, nhưng cũng tiêu tốn RAM, CPU và dung lượng. Cài được chưa phải là vận hành đúng.

Prometheus và Grafana khác nhau ở đâu?

Prometheus là hệ thống monitoring dựa trên time series. Nó định kỳ gọi HTTP endpoint của target, gắn label cho mẫu dữ liệu và lưu kết quả để truy vấn bằng PromQL. Node Exporter là một static binary phổ biến để expose metric của Linux host, thường tại cổng 9100.

Grafana không thay thế Prometheus. Grafana kết nối tới Prometheus như data source, chạy truy vấn rồi trình bày dashboard. Vì vậy khi biểu đồ trống, cần phân biệt lỗi exporter, lỗi scrape, lỗi query và lỗi giao diện thay vì chỉ restart Grafana.

Thành phầnVai tròĐiểm cần theo dõi
Node ExporterExpose metric hostPort, quyền, tiến trình
PrometheusScrape và lưu time seriesRetention, disk, scrape errors
GrafanaDashboard và queryDatasource, quyền, dashboard
AlertingBáo tín hiệu bất thườngNgưỡng, routing, chống spam

Cài Node Exporter và kiểm tra endpoint

Node Exporter nên chạy với user riêng, expose trên loopback hoặc mạng monitoring thay vì mở cổng 9100 cho toàn Internet. Trước khi nối Prometheus, hãy dùng curl kiểm tra endpoint và xác nhận metric có prefix node_. Nếu endpoint không phản hồi, Grafana chắc chắn không thể tự tạo dữ liệu.

Với VPS có Nginx hoặc firewall, hãy cho phép Prometheus truy cập 9100 bằng allowlist. Không nên coi endpoint metrics là bí mật tuyệt đối, nhưng nó có thể tiết lộ hostname, filesystem mount và thông tin tài nguyên hữu ích cho người dò quét.

Cấu hình scrape interval và retention cho VPS nhỏ

scrape_interval quyết định tần suất Prometheus lấy dữ liệu; khoảng 15 giây phù hợp cho demo nhưng không phải lúc nào cũng cần thiết trên VPS ít RAM hoặc disk. Monitoring website nhỏ thường bắt đầu ở 30 hoặc 60 giây, sau đó giảm interval chỉ cho metric cần phản ứng nhanh.

Retention càng dài thì dữ liệu càng nhiều. Hãy đặt giới hạn theo dung lượng disk, kiểm tra thư mục TSDB và để lại khoảng trống an toàn cho log, database và backup. scrape_timeout không được lớn hơn scrape_interval; cấu hình sai có thể khiến reload không được áp dụng.

Đọc CPU, RAM, disk và network bằng PromQL

CPU nên nhìn theo thời gian bận thay vì chỉ lấy một counter thô. RAM cần phân biệt available với free; disk phải theo dõi dung lượng còn lại và inode; network nên dùng rate trên counter nhận/gửi để thấy tốc độ thay đổi. Mỗi biểu đồ nên có đơn vị, label và khoảng thời gian hợp lý.

Một dashboard không nên nhồi mọi metric. Với VPS nhỏ, hãy tạo nhóm overview gồm load, CPU, memory available, filesystem quan trọng, network throughput và trạng thái scrape. Dashboard thứ hai có thể đi sâu vào process hoặc HTTP nếu thật sự cần.

Bảo vệ Prometheus, Grafana và Node Exporter

Đừng public trực tiếp cổng 9090 và 9100 chỉ để xem nhanh. Có thể bind service ở loopback, dùng reverse proxy có HTTPS và authentication cho Grafana, còn Prometheus/Node Exporter chỉ cho phép mạng quản trị. Firewall và VPN bổ sung lớp bảo vệ khi dashboard nằm trong homelab.

Monitoring cũng cần backup cấu hình và dashboard. Dữ liệu time series có thể tái tạo một phần, nhưng rule, datasource, dashboard và notification thường là phần tốn công phục hồi. Tách monitoring khỏi workload chính nếu ngân sách cho phép để khi website quá tải, kênh quan sát vẫn còn hoạt động.

Khi nào VPS nhỏ không nên chạy cả stack?

Nếu VPS chỉ có 1 GB RAM, disk gần đầy hoặc workload database đã sát giới hạn, Grafana và Prometheus có thể làm tình hình xấu hơn. Có thể đặt monitoring trên máy khác, dùng managed service hoặc chỉ chạy exporter rồi scrape từ một node trung tâm.

Hãy đo overhead thực tế sau khi bật monitoring: RSS của process, tốc độ tăng TSDB, số series và thời gian query dashboard. Mục tiêu là phát hiện sự cố mà không biến hệ thống quan sát thành một nguồn sự cố mới.

  • Giữ endpoint exporter không public.
  • Đặt retention và kiểm tra dung lượng TSDB.
  • Tạo cảnh báo disk/inode trước khi tạo dashboard đẹp.
  • Kiểm tra reload cấu hình và backup Grafana định kỳ.
Prometheus thu thập metrics bằng cách scrape các HTTP endpoint; tần suất scrape, timeout và retention phải phù hợp với tài nguyên thực tế của VPS.Prometheus Configuration và Node Exporter Guide

Checklist áp dụng nhanh

  1. Xác định mục tiêu vận hành, ngân sách tài nguyên và người chịu trách nhiệm trước khi cài thêm dịch vụ.
  2. Tách dữ liệu, secret, cấu hình và quyền truy cập khỏi lifecycle của container hoặc máy ảo; ghi rõ đường khôi phục.
  3. Đo bằng log, metric, thời gian phản hồi, dung lượng và restore test thay vì chỉ nhìn lệnh cài đặt chạy thành công.
  4. Thử trên staging hoặc một node nhỏ, lưu output thực tế rồi mới mở rộng sang toàn bộ homelab hoặc production.

Lệnh và cấu hình tham khảo

sudo systemctl enable --now node_exporter
curl http://127.0.0.1:9100/metrics | head
cat >/etc/prometheus/prometheus.yml <<'YAML'
global:
  scrape_interval: 30s
scrape_configs:
  - job_name: node
    static_configs:
      - targets: ["127.0.0.1:9100"]
YAML
promtool check config /etc/prometheus/prometheus.yml

Liên kết nội bộ nên đọc tiếp

Nguồn chính thống

Các tài liệu dưới đây là nguồn tham khảo chính thống cho khái niệm và cú pháp trong bài. Phiên bản phần mềm và cách đóng gói có thể thay đổi, vì vậy hãy kiểm tra tài liệu gốc trước khi áp dụng vào hệ thống thật.

Kết luận

Grafana và Prometheus phù hợp khi bạn cần quan sát xu hướng và điều tra sự cố, nhưng trên VPS nhỏ phải giới hạn interval, retention, số series và phạm vi public. Hãy bắt đầu bằng vài tín hiệu quan trọng rồi mở rộng khi số liệu chứng minh cần thiết.

Đặt ngưỡng cảnh báo thay vì chỉ dựng dashboard

Dashboard giúp quan sát, còn cảnh báo phải trả lời được câu hỏi khi nào người vận hành cần hành động. Với VPS nhỏ, nên bắt đầu bằng disk gần đầy, inode thấp, scrape target down và memory available giảm kéo dài. CPU cao trong vài phút chưa chắc là sự cố nếu đó là thời điểm backup; cảnh báo tốt cần có thời gian giữ ngưỡng, nhãn rõ ràng và đường dẫn xử lý.

Hãy ghi lại runbook ngắn cho từng alert: kiểm tra process, log, disk, connection và thay đổi gần nhất. Tránh gửi cảnh báo cho mọi metric vì notification quá dày sẽ làm người nhận bỏ qua cả tín hiệu quan trọng.

Kiểm thử monitoring trước khi tin vào số liệu

Sau khi cấu hình, hãy tạo một phép thử có kiểm soát: dừng Node Exporter trong thời gian ngắn, tạo file tạm để kiểm tra disk hoặc dùng một endpoint test trả lỗi. Xác nhận Prometheus đổi trạng thái target và Grafana hiển thị đúng khoảng thời gian. Cuối cùng khôi phục dịch vụ, kiểm tra alert tự đóng và ghi lại chi phí CPU, RAM, disk của stack.