Uptime Kuma: Hướng dẫn Giám sát Server & Ứng dụng
I. Giới thiệu Uptime Kuma
Uptime Kuma là công cụ giám sát mã nguồn mở (open source) cho phép bạn theo dõi tình trạng hoạt động của các dịch vụ, server, và ứng dụng. Điều này rất hữu ích khi:
- Bạn cần biết khi nào dịch vụ bị down
- Muốn theo dõi uptime và response time
- Cần gửi alert (email, Slack, Telegram, ...)
- Muốn xem thống kê chi tiết về downtime
- Cần công cụ giám sát miễn phí và dễ sử dụng
Chức năng chính:
- Giám sát HTTP/HTTPS endpoints
- Giám sát TCP/UDP ports
- Kiểm tra DNS resolution
- Ping/ICMP monitoring
- SSH & Docker monitoring
- Database connectivity check
- Alert notifications (Email, Slack, Telegram, Discord, ...)
- Uptime statistics & reports
- Status page (chia sẻ trạng thái công khai)
II. Triển khai Uptime Kuma với Portainer
1. Docker Compose
version: '3.8'
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
volumes:
- /root/uptime-kuma-data:/app/data
ports:
- 3002:3001
restart: always
mem_limit: 1024m
cpus: 0.2
Giải thích cấu hình:
- image: louislam/uptime-kuma:1 (phiên bản ổn định)
- volumes: Lưu dữ liệu (database, cấu hình) vào /root
- ports: 3002 (host) → 3001 (container)
- restart: always: Tự động khởi động lại nếu bị crash
- mem_limit: Giới hạn RAM 1GB
- cpus: Giới hạn CPU 20%
2. Deploy qua Portainer
- Vào Portainer Dashboard
- Chọn Stacks → Add stack
- Đặt tên Stack:
uptime-kuma - Copy/paste docker-compose vào Web editor
- Click Deploy the stack
Container sẽ khởi động, truy cập http://your-ip:3002 để vào dashboard.
3. Cấu hình lần đầu
Khi mở lần đầu:
- Tạo tài khoản admin (username & password)
- Thiết lập timezone và ngôn ngữ
- Bắt đầu thêm monitors
III. Cấu hình Monitors (Giám sát)
1. Thêm Monitor HTTP/HTTPS
Để giám sát một website hoặc API:
- Vào Dashboard → Click Add New Monitor
- Chọn Monitor Type: HTTP(s)
- Điền thông tin:
- Friendly Name:
My Website - URL:
https://example.com - Heartbeat Interval: 60 (kiểm tra mỗi 60 giây)
- Retries: 2 (thử lại 2 lần trước khi báo down)
- Timeout: 10 (timeout 10 giây)
- Click Save
Monitor sẽ bắt đầu hoạt động, hiển thị status và uptime.
2. Giám sát TCP Port
Để kiểm tra xem port có mở không:
- Click Add New Monitor
- Chọn Monitor Type: TCP
- Điền thông tin:
- Friendly Name:
SSH Server - Hostname:
192.168.1.100 - Port:
22 - Heartbeat Interval: 60
- Click Save
3. Giám sát Ping
Để kiểm tra xem server có respond không:
- Click Add New Monitor
- Chọn Monitor Type: Ping
- Điền thông tin:
- Friendly Name:
Router Gateway - Hostname:
192.168.1.1 - Heartbeat Interval: 60
- Click Save
4. Giám sát DNS
Để kiểm tra DNS resolution:
- Click Add New Monitor
- Chọn Monitor Type: DNS Query
- Điền thông tin:
- Friendly Name:
Google DNS - Hostname:
google.com - DNS Server:
8.8.8.8 - Query Type: A
- Click Save
5. Giám sát Database
Để kiểm tra kết nối database (MySQL, PostgreSQL, ...):
- Click Add New Monitor
- Chọn Monitor Type: MySQL / PostgreSQL
- Điền thông tin:
- Friendly Name:
Main Database - Hostname:
db.local - Port:
3306 - Username:
admin - Password:
*** - Click Save
IV. Cấu hình Notifications (Cảnh báo)
1. Thêm Notification Channel
Để nhận cảnh báo qua email, Slack, Telegram, ...
- Vào Settings → Notifications
- Click Add Notification
- Chọn loại notification (Email, Slack, Telegram, Discord, ...)
2. Cấu hình Email Notification
- Chọn Notification Type: Email
- Điền thông tin:
- Notification Name:
Gmail Alert - SMTP Host:
smtp.gmail.com - SMTP Port:
587 - Secure: STARTTLS
- From Email:
[email protected] - To Email:
[email protected] - Username:
[email protected] - Password:
app-password(không phải mật khẩu Gmail) - Click Test để kiểm tra
- Click Save
Lưu ý Gmail: Cần tạo App Password thay vì dùng mật khẩu Gmail.
3. Cấu hình Telegram Notification
- Chọn Notification Type: Telegram
- Tạo Bot Telegram:
- Chat với @BotFather trên Telegram
- Gõ
/newbot - Đặt tên bot và username
- Copy Token
- Điền thông tin:
- Notification Name:
Telegram Alert - Bot Token:
Paste token từ @BotFather - Chat ID: (gõ /start với bot, sau đó gõ /getid để lấy chat ID)
- Click Test
- Click Save
4. Gắn Notification vào Monitor
Sau khi tạo notification channel:
- Vào Monitor → Click Edit
- Kéo xuống → Notification
- Chọn notification channels cần sử dụng
- Click Save
Khi monitor báo down, notification sẽ được gửi.
V. Cấu hình Status Page (Trang trạng thái công khai)
1. Tạo Status Page
Để chia sẻ trạng thái dịch vụ công khai:
- Vào Status Page → Create New Status Page
- Điền thông tin:
- Slug:
status(sẽ là URL: domain/status) - Title:
Service Status - Description:
Real-time status of our services - Click Create
2. Thêm Monitors vào Status Page
Sau khi tạo status page:
- Click vào status page vừa tạo
- Click Add Monitor
- Chọn monitors muốn hiển thị
- Click Save
Sau đó, bạn có thể chia sẻ link public (ví dụ: http://your-ip:3002/status/status) cho khách hàng.
VI. Cấu hình Advanced
1. Theo dõi Response Time
Uptime Kuma tự động ghi lại response time của mỗi monitor:
- Vào Monitor → Chart để xem biểu đồ response time
- Dữ liệu lưu trong database (SQLite) tại /app/data
2. Tích hợp với Proxy Manager
Để giám sát các ứng dụng qua Nginx Proxy Manager:
- Tạo monitor với URL:
https://app.yourdomain.com - Uptime Kuma sẽ kiểm tra thông qua proxy
- Nếu proxy down, tất cả apps sẽ báo down
3. Backup & Restore
Để backup dữ liệu monitors:
- Vào Settings → Backup & Restore
- Click Download Backup
- File JSON sẽ được tải về chứa toàn bộ cấu hình
Để restore:
- Click Upload Backup
- Chọn file JSON
- Cấu hình sẽ được khôi phục
4. Authentication & Access Control
Uptime Kuma hỗ trợ:
- Username/Password authentication
- 2FA (Two-Factor Authentication)
- API Token (để tích hợp với các tool khác)
Cấu hình trong Settings → Security.
VII. Lưu ý quan trọng
- Heartbeat Interval: Càng ngắn càng nhanh phát hiện down, nhưng tốn resources. Khuyến cáo 60 giây
- Retries: Tránh false positive (báo down khi tạm thời network lag). Khuyến cáo 2-3 retries
- Timeout: Nên set hợp lý tùy loại service (HTTP: 10s, SSH: 15s)
- Data Backup: Thư mục /root/uptime-kuma-data chứa database SQLite, nên backup định kỳ
- Notification Testing: Luôn test notification trước khi sử dụng để đảm bảo hoạt động
- Status Page: Được public, không cần authentication, nên không hiển thị thông tin nhạy cảm
- Resource Usage: Uptime Kuma rất nhẹ, phù hợp chạy trên VPS nhỏ hoặc Raspberry Pi
- API Docs: Uptime Kuma có REST API, có thể tích hợp với các tool khác
VIII. So sánh Uptime Kuma với các tool khác
| Tính năng | Uptime Kuma | Pingdom | UptimeRobot |
|---|---|---|---|
| Giá | Miễn phí (open source) | Trả phí ($10+/tháng) | Miễn phí (limited), Pro ($9+/tháng) |
| Tự host | Có (Docker) | Không | Không |
| Status Page | Có | Có | Có |
| Notifications | Email, Slack, Telegram, ... | Email, SMS, Slack | Email, SMS, Slack, Telegram |
| Ease of Use | Rất dễ | Trung bình | Dễ |
Vậy là bạn đã hoàn thành cấu hình Uptime Kuma để giám sát toàn bộ dịch vụ và nhận cảnh báo tự động!