T
Trinh Digital
Xây dựng Hệ thống

Setup Uptime Monitor miễn phí: UptimeRobot + Grafana cho SME

Trinh Digital · · 9 phút đọc

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í

ToolChức năngChi phíCài ở đâu
UptimeRobotKiểm tra website sống/chếtFree (50 monitors)Cloud (không cần cài)
PrometheusThu thập metricsFree (open source)Trên VPS
Node ExporterExport metrics hệ thốngFree (open source)Trên VPS
GrafanaDashboard visualizationFree (open source)Trên VPS
Telegram BotGửi alertFreeCloud

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

  1. Truy cập uptimerobot.com
  2. Sign up free
  3. Xác nhận email

Bước 2: Thêm monitor

Click “Add New Monitor”:

FieldGiá trịGhi chú
Monitor TypeHTTP(s)Kiểm tra HTTPS
Friendly NameWebsite ABCTên dễ nhớ
URLhttps://yourdomain.comURL trang chủ
Monitoring Interval5 minutesFree plan tối đa 5 phút

Bước 3: Thêm các monitor bổ sung

Nên monitor nhiều endpoint:

MonitorURLLý do
Homepagehttps://yourdomain.comTrang chủ
API/Backendhttps://yourdomain.com/api/healthBackend hoạt động
Adminhttps://yourdomain.com/adminAdmin panel
Paymenthttps://yourdomain.com/checkoutCheckout không lỗi
SSL checkhttps://yourdomain.comMonitor type: SSL (check expiry)

Bước 4: Setup Telegram alerting

Tạo Telegram Bot:

  1. Mở Telegram, tìm @BotFather
  2. Gửi /newbot
  3. Đặt tên bot: “Website Monitor Bot”
  4. Nhận Bot Token (ví dụ: 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11)
  5. Tạo group Telegram và thêm bot vào group
  6. Gửi 1 tin nhắn bất kỳ trong group
  7. Truy cập: https://api.telegram.org/bot<TOKEN>/getUpdates → lấy Chat ID

Kết nối với UptimeRobot:

  1. UptimeRobot → My Settings → Alert Contacts → Add Alert Contact
  2. Type: Telegram
  3. Nhập Bot Token và Chat ID
  4. 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:

  1. My Settings → Public Status Pages → Add
  2. Chọn monitors muốn hiển thị
  3. 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/-/readyPrometheus 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

  1. Grafana → Settings (gear icon) → Data Sources → Add data source
  2. Chọn “Prometheus”
  3. URL: http://localhost:9090
  4. Click “Save & Test”

Bước 4: Import dashboard templates

Grafana có sẵn hàng nghìn dashboard templates:

  1. Grafana → Dashboards → Import
  2. Nhập Dashboard ID:
    • 1860 — Node Exporter Full (CPU, RAM, Disk, Network)
    • 14031 — MySQL Overview
    • 12708 — Nginx
DashboardIDMetrics
Node Exporter Full1860CPU, RAM, Disk, Network
MySQL Overview14031Connections, queries, replication
Nginx12708Requests, connections, response time

Bước 5: Cấu hình Grafana alerting → Telegram

  1. Grafana → Alerting → Contact points → New contact point
  2. Name: “Telegram”
  3. Type: Telegram
  4. Bot API Token: your-bot-token
  5. Chat ID: your-chat-id
  6. 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ụcChi phíThời gian
UptimeRobot Free0 VND15 phút
Node Exporter + Prometheus0 VND (open source)30 phút
Grafana0 VND (open source)30 phút
Alertmanager + Telegram0 VND30 phút
Dashboard setup0 VND30 phút
Tổng0 VND~2.5 giờ

Tài nguyên sử dụng trên VPS

ComponentRAMCPUDisk
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ăngKhông monitoringCó monitoring
Phát hiện website sậpKhi khách báo (15–60 phút)Trong 1–5 phút
Phát hiện server quá tảiKhi website chậm/sậpTrước khi ảnh hưởng
Phát hiện disk fullKhi database crashTrước khi đầy
Phát hiện SSL hết hạnKhi Chrome báo “Not Secure”14 ngày trước
Phân tích performanceKhông có dataHistorical 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.

#Grafana#miễn phí#monitoring#UptimeRobot
Chia sẻ: Z

Sẵn sàng chuyển đổi số cùng Trinh Digital?

Liên hệ ngay để nhận tư vấn miễn phí. Đội ngũ chuyên gia sẽ phân tích nhu cầu và đề xuất giải pháp tối ưu.

Zalo