Uptime monitoring miễn phí là thứ mà mọi website doanh nghiệp cần có — và bạn hoàn toàn có thể setup với chi phí 0 đồng. Bài viết này hướng dẫn từng bước cài đặt hệ thống monitoring hoàn chỉnh: UptimeRobot cho external uptime check, Prometheus + Node Exporter cho server metrics, Grafana cho dashboard, và Telegram cho alerting. Tổng thời gian setup: khoảng 2–3 giờ.
Lead magnet: Tải miễn phí Monitoring & Alerting Setup Guide — hướng dẫn chi tiết + Grafana dashboard templates.
Tổng quan stack monitoring miễn phí
| Tool | Chức năng | Chi phí | Cài ở đâu |
|---|---|---|---|
| UptimeRobot | Kiểm tra website sống/chết | Free (50 monitors) | Cloud (không cần cài) |
| Prometheus | Thu thập metrics | Free (open source) | Trên VPS |
| Node Exporter | Export metrics hệ thống | Free (open source) | Trên VPS |
| Grafana | Dashboard visualization | Free (open source) | Trên VPS |
| Telegram Bot | Gửi alert | Free | Cloud |
Yêu cầu server: Thêm ~200MB RAM và ~1GB disk cho monitoring stack. VPS 2GB RAM trở lên là đủ.
Phần 1: UptimeRobot — External Uptime Check
Tại sao cần external monitoring?
Nếu monitoring chạy trên cùng server với website, khi server sập → monitoring cũng sập → không có alert. UptimeRobot chạy trên cloud riêng, kiểm tra website từ bên ngoài.
Bước 1: Tạo tài khoản
- Truy cập uptimerobot.com
- Sign up free
- Xác nhận email
Bước 2: Thêm monitor
Click “Add New Monitor”:
| Field | Giá trị | Ghi chú |
|---|---|---|
| Monitor Type | HTTP(s) | Kiểm tra HTTPS |
| Friendly Name | Website ABC | Tên dễ nhớ |
| URL | https://yourdomain.com | URL trang chủ |
| Monitoring Interval | 5 minutes | Free plan tối đa 5 phút |
Bước 3: Thêm các monitor bổ sung
Nên monitor nhiều endpoint:
| Monitor | URL | Lý do |
|---|---|---|
| Homepage | https://yourdomain.com | Trang chủ |
| API/Backend | https://yourdomain.com/api/health | Backend hoạt động |
| Admin | https://yourdomain.com/admin | Admin panel |
| Payment | https://yourdomain.com/checkout | Checkout không lỗi |
| SSL check | https://yourdomain.com | Monitor type: SSL (check expiry) |
Bước 4: Setup Telegram alerting
Tạo Telegram Bot:
- Mở Telegram, tìm @BotFather
- Gửi
/newbot - Đặt tên bot: “Website Monitor Bot”
- Nhận Bot Token (ví dụ:
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11) - Tạo group Telegram và thêm bot vào group
- Gửi 1 tin nhắn bất kỳ trong group
- Truy cập:
https://api.telegram.org/bot<TOKEN>/getUpdates→ lấy Chat ID
Kết nối với UptimeRobot:
- UptimeRobot → My Settings → Alert Contacts → Add Alert Contact
- Type: Telegram
- Nhập Bot Token và Chat ID
- Kích hoạt cho tất cả monitors
Bước 5: Tạo Status Page (tùy chọn)
UptimeRobot Free cho phép tạo public status page:
- My Settings → Public Status Pages → Add
- Chọn monitors muốn hiển thị
- Nhận URL:
https://stats.uptimerobot.com/xxxxx
Chia sẻ URL này cho team hoặc khách hàng để theo dõi uptime.
Phần 2: Prometheus + Node Exporter — Server Metrics
Bước 1: Cài Node Exporter
Node Exporter thu thập metrics hệ thống (CPU, RAM, disk, network):
# Download Node Exporter
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xzf node_exporter-1.7.0.linux-amd64.tar.gz
sudo mv node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
# Tạo systemd service
sudo tee /etc/systemd/system/node_exporter.service > /dev/null <<EOF
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=nobody
ExecStart=/usr/local/bin/node_exporter
Restart=always
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter
Verify: curl http://localhost:9100/metrics → phải thấy metrics output.
Bảo mật: Không mở port 9100 ra internet. Node Exporter chỉ nên accessible từ localhost hoặc private network.
Bước 2: Cài Prometheus
# Download Prometheus
cd /tmp
wget https://github.com/prometheus/prometheus/releases/download/v2.48.0/prometheus-2.48.0.linux-amd64.tar.gz
tar xzf prometheus-2.48.0.linux-amd64.tar.gz
sudo mv prometheus-2.48.0.linux-amd64/prometheus /usr/local/bin/
sudo mv prometheus-2.48.0.linux-amd64/promtool /usr/local/bin/
# Tạo thư mục config và data
sudo mkdir -p /etc/prometheus /var/lib/prometheus
Bước 3: Cấu hình Prometheus
sudo tee /etc/prometheus/prometheus.yml > /dev/null <<EOF
global:
scrape_interval: 15s
evaluation_interval: 15s
rule_files:
- "alert_rules.yml"
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
- job_name: 'nginx'
static_configs:
- targets: ['localhost:9113']
- job_name: 'mysql'
static_configs:
- targets: ['localhost:9104']
EOF
Bước 4: Tạo alert rules
sudo tee /etc/prometheus/alert_rules.yml > /dev/null <<EOF
groups:
- name: server_alerts
rules:
- alert: HighCPU
expr: 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: "CPU usage > 80% for 5 minutes"
- alert: HighMemory
expr: (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 > 85
for: 5m
labels:
severity: warning
annotations:
summary: "Memory usage > 85%"
- alert: DiskSpaceLow
expr: (1 - node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}) * 100 > 85
for: 5m
labels:
severity: critical
annotations:
summary: "Disk usage > 85%"
- alert: HighLoadAverage
expr: node_load1 > 4
for: 5m
labels:
severity: warning
annotations:
summary: "Load average > 4"
EOF
Bước 5: Chạy Prometheus
sudo tee /etc/systemd/system/prometheus.service > /dev/null <<EOF
[Unit]
Description=Prometheus
After=network.target
[Service]
User=nobody
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus \
--storage.tsdb.retention.time=30d
Restart=always
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus
Verify: curl http://localhost:9090/-/ready → Prometheus Server is Ready.
Phần 3: Grafana — Dashboard
Bước 1: Cài Grafana
# Thêm Grafana repository
sudo apt install -y software-properties-common
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 /etc/apt/sources.list.d/grafana.list
sudo apt update
sudo apt install grafana -y
sudo systemctl enable grafana-server
sudo systemctl start grafana-server
Bước 2: Truy cập Grafana
- URL:
http://YOUR_SERVER_IP:3000 - Login mặc định: admin / admin (đổi ngay!)
Bảo mật: Đừng mở port 3000 ra internet. Dùng Nginx reverse proxy + password hoặc SSH tunnel.
# /etc/nginx/sites-available/grafana
server {
listen 443 ssl;
server_name grafana.yourdomain.com;
ssl_certificate /etc/ssl/cert.pem;
ssl_certificate_key /etc/ssl/key.pem;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Bước 3: Thêm Prometheus data source
- Grafana → Settings (gear icon) → Data Sources → Add data source
- Chọn “Prometheus”
- URL:
http://localhost:9090 - Click “Save & Test”
Bước 4: Import dashboard templates
Grafana có sẵn hàng nghìn dashboard templates:
- Grafana → Dashboards → Import
- Nhập Dashboard ID:
- 1860 — Node Exporter Full (CPU, RAM, Disk, Network)
- 14031 — MySQL Overview
- 12708 — Nginx
| Dashboard | ID | Metrics |
|---|---|---|
| Node Exporter Full | 1860 | CPU, RAM, Disk, Network |
| MySQL Overview | 14031 | Connections, queries, replication |
| Nginx | 12708 | Requests, connections, response time |
Bước 5: Cấu hình Grafana alerting → Telegram
- Grafana → Alerting → Contact points → New contact point
- Name: “Telegram”
- Type: Telegram
- Bot API Token:
your-bot-token - Chat ID:
your-chat-id - Test → gửi thử
Phần 4: Alertmanager — Quản lý alert
Cài Alertmanager
cd /tmp
wget https://github.com/prometheus/alertmanager/releases/download/v0.26.0/alertmanager-0.26.0.linux-amd64.tar.gz
tar xzf alertmanager-0.26.0.linux-amd64.tar.gz
sudo mv alertmanager-0.26.0.linux-amd64/alertmanager /usr/local/bin/
Cấu hình Alertmanager
sudo mkdir -p /etc/alertmanager
sudo tee /etc/alertmanager/alertmanager.yml > /dev/null <<'EOF'
global:
resolve_timeout: 5m
route:
receiver: 'telegram'
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
routes:
- match:
severity: critical
receiver: 'telegram'
repeat_interval: 1h
receivers:
- name: 'telegram'
telegram_configs:
- bot_token: 'YOUR_BOT_TOKEN'
chat_id: YOUR_CHAT_ID
message: |
{{ range .Alerts }}
🚨 {{ .Labels.alertname }}
{{ .Annotations.summary }}
Severity: {{ .Labels.severity }}
{{ end }}
EOF
Tổng kết: Chi phí vs Giá trị
Chi phí setup
| Hạng mục | Chi phí | Thời gian |
|---|---|---|
| UptimeRobot Free | 0 VND | 15 phút |
| Node Exporter + Prometheus | 0 VND (open source) | 30 phút |
| Grafana | 0 VND (open source) | 30 phút |
| Alertmanager + Telegram | 0 VND | 30 phút |
| Dashboard setup | 0 VND | 30 phút |
| Tổng | 0 VND | ~2.5 giờ |
Tài nguyên sử dụng trên VPS
| Component | RAM | CPU | Disk |
|---|---|---|---|
| Node Exporter | ~10MB | < 1% | — |
| Prometheus (30 ngày data) | ~100MB | < 2% | ~500MB |
| Grafana | ~100MB | < 1% | ~200MB |
| Tổng | ~210MB | < 4% | ~700MB |
Giá trị nhận được
| Khả năng | Không monitoring | Có monitoring |
|---|---|---|
| Phát hiện website sập | Khi khách báo (15–60 phút) | Trong 1–5 phút |
| Phát hiện server quá tải | Khi website chậm/sập | Trước khi ảnh hưởng |
| Phát hiện disk full | Khi database crash | Trước khi đầy |
| Phát hiện SSL hết hạn | Khi Chrome báo “Not Secure” | 14 ngày trước |
| Phân tích performance | Không có data | Historical data 30 ngày |
FAQ — Câu hỏi thường gặp
UptimeRobot Free đủ dùng không?
Đủ cho hầu hết SME. Free plan: 50 monitors, check mỗi 5 phút, unlimited alert contacts. Chỉ cần upgrade Pro ($7/tháng) khi cần check mỗi 1 phút hoặc > 50 monitors.
Prometheus vs Zabbix vs Nagios — dùng cái nào?
Prometheus: hiện đại, pull-based, tốt cho cloud/container, Grafana integration tuyệt vời. Zabbix: enterprise-grade, có GUI quản lý, agent-based. Nagios: cũ nhất, ổn định, nhưng khó cấu hình. Cho SME: Prometheus + Grafana là lựa chọn tốt nhất — hiện đại, nhẹ, miễn phí, cộng đồng lớn.
Monitoring có thay thế backup không?
Tuyệt đối không. Monitoring phát hiện sự cố, backup khôi phục dữ liệu. Cần cả hai. Monitoring không giúp gì khi database bị xóa — chỉ backup mới cứu được.
Kết luận
Setup monitoring miễn phí mất 2–3 giờ, chi phí 0 đồng, nhưng có thể tiết kiệm hàng chục triệu đồng từ việc phát hiện sự cố sớm. Bắt đầu với UptimeRobot (15 phút), sau đó mở rộng với Prometheus + Grafana khi sẵn sàng.
Nếu bạn cần hỗ trợ setup monitoring chuyên nghiệp hoặc dịch vụ giám sát hệ thống 24/7, hãy liên hệ Trinh Digital.