Uptime Kuma: thiết lập hệ thống giám sát website riêng trên VPS
Website có thể hỏng nhưng vẫn tiếp tục trả về 200 OK. Một bản sao lưu cũng có thể dừng mà không hiển thị lỗi rõ ràng. Uptime Kuma phát hiện cả hai trường hợp: kiểm tra website, API, port và job nền, sau đó gửi thông báo khi có sự cố.
Chúng ta sẽ xem nên host hệ thống giám sát ở đâu, cần VPS như thế nào và cách cài Uptime Kuma 2, bật HTTPS, kết nối Telegram và tạo trang trạng thái.
Uptime Kuma trong bảy bước
- Cấp một VPS nhỏ riêng với các dự án được giám sát.
- Trỏ tên miền phụ như
monitor.example.comtới đó. - Cài Docker và khởi động Uptime Kuma 2.
- Đóng port nội bộ
3001và bật HTTPS. - Tạo monitor HTTP, DNS, TCP hoặc push.
- Cấu hình Telegram và khi cần, một trang trạng thái.
- Thiết lập cập nhật và bản sao lưu bên ngoài của thư mục dữ liệu.
Uptime Kuma là gì?
Uptime Kuma là công cụ miễn phí, mã nguồn mở và self-hosted. Dashboard cùng lịch sử kiểm tra được lưu trên máy chủ của bạn.
Nó có thể giám sát HTTP(S), port TCP, ping, DNS, WebSocket, văn bản và JSON trong phản hồi, tín hiệu push và Docker container. Khoảng thời gian kiểm tra tối thiểu là 20 giây. Công cụ cũng cung cấp hàng chục kênh thông báo, 2FA, biểu đồ độ trễ, giám sát chứng chỉ TLS và nhiều trang trạng thái.
Cách phát hiện lỗi ẩn sau 200 OK
Kiểm tra HTTP cơ bản chỉ nhìn thấy mã phản hồi. Tuy nhiên, web server có thể hiển thị trang trắng hoặc màn hình lỗi ứng dụng mà vẫn trả về trạng thái thành công.
Để giám sát chính xác hơn, hãy dùng:
- Keyword — tìm cụm từ mong đợi, chẳng hạn tên website hoặc văn bản “Account dashboard”;
- JSON Query — kiểm tra một giá trị trong phản hồi API, ví dụ
status: healthy.
Nhờ vậy, monitor xác nhận không chỉ port có thể truy cập mà ứng dụng còn hiển thị ít nhất một dấu hiệu mong đợi của hoạt động đúng.
Push monitor cho bản sao lưu và cron job
Push monitor không thăm dò dịch vụ. Thay vào đó, nó chờ tín hiệu định kỳ từ dịch vụ đó. Script sao lưu hoặc cron job gọi một URL duy nhất sau khi hoàn tất thành công. Nếu tín hiệu không đến đúng hạn, Uptime Kuma báo lỗi.
Điều này giúp phát hiện vấn đề “im lặng”: website vẫn hoạt động nhưng bản sao lưu hằng ngày đã không được tạo trong vài ngày.
Uptime Kuma không thay thế điều gì?
Uptime Kuma chủ yếu theo dõi khả năng sẵn sàng và thời gian phản hồi. Với CPU, RAM, đĩa, log và metric container, hãy bổ sung Prometheus, Netdata, Zabbix hoặc hệ thống giám sát khác: Kuma nhận thấy vấn đề từ bên ngoài, còn metric giúp xác định nguyên nhân.
Vì sao nên chạy giám sát trên VPS riêng?
Nếu Uptime Kuma được cài cạnh website, lỗi VPS, mạng hoặc trung tâm dữ liệu có thể làm cả dự án lẫn hệ thống giám sát ngừng hoạt động. Thông báo có thể không bao giờ được gửi.
Hãy host dashboard trên VPS riêng; với dự án quan trọng, nên đặt ở vị trí khác hoặc dùng nhà cung cấp khác. Cũng nên giám sát chính Kuma bằng dịch vụ bên ngoài: hệ thống giám sát cũng cần có người theo dõi.
Yêu cầu máy chủ Uptime Kuma
Dự án không quy định mức tối thiểu chính thức cứng nhắc cho CPU và RAM. Cấu hình khởi đầu thực tế cho bản cài đặt nhỏ là:
- 1 vCPU;
- 1 GB RAM;
- 10 GB SSD;
- Ubuntu 24.04 LTS;
- IPv4;
- tên miền hoặc tên miền phụ cho HTTPS.
Cấu hình này thường đủ cho vài chục kiểm tra đơn giản. Với hàng trăm monitor, lưu lịch sử lâu hoặc kiểm tra dựa trên trình duyệt, hãy chọn từ 2 GB RAM.
Cách cài Uptime Kuma trên VPS
Ví dụ này dùng Ubuntu 24.04 và tên miền phụ monitor.example.com.
1. Cấu hình DNS và firewall
Tạo bản ghi DNS A trỏ tới địa chỉ IPv4 của VPS. Kết nối qua SSH và mở các port cần thiết:
ssh root@SERVER_IP
apt update && apt upgrade -y
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enableKhông đóng phiên SSH hiện tại cho đến khi kiểm tra xong kết nối mới.
2. Cài Docker và Docker Compose
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
docker compose version3. Khởi động Uptime Kuma 2
mkdir -p /opt/uptime-kuma
cd /opt/uptime-kuma
cat > compose.yaml <<'EOF'
services:
uptime-kuma:
image: louislam/uptime-kuma:2
restart: unless-stopped
ports:
- "127.0.0.1:3001:3001"
volumes:
- ./data:/app/data
EOF
docker compose up -d
docker compose psDùng tag :2: latest vẫn được gán cho nhánh v1 đã lỗi thời. Thư mục /app/data phải được lưu trên đĩa cục bộ hoặc Docker volume thông thường. NFS và hệ thống lưu trữ không có cơ chế khóa tệp phù hợp có thể làm hỏng cơ sở dữ liệu.
Port 3001 chỉ truy cập được trên 127.0.0.1. Reverse proxy có HTTPS sẽ công khai dashboard ra bên ngoài.
4. Bật HTTPS bằng Caddy
apt install -y caddy
cat > /etc/caddy/Caddyfile <<'EOF'
monitor.example.com {
reverse_proxy 127.0.0.1:3001
}
EOF
caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddyNếu DNS trỏ tới VPS, Caddy sẽ tự động yêu cầu chứng chỉ TLS và proxy kết nối WebSocket. Host dashboard ở gốc tên miền hoặc tên miền phụ; địa chỉ như example.com/kuma không được hỗ trợ.
5. Tạo tài khoản quản trị
Mở https://monitor.example.com, tạo tài khoản với mật khẩu dài, duy nhất và bật xác thực hai yếu tố.
Cách thêm monitor đầu tiên
Nhấp Add New Monitor và chọn HTTP(s):
- Nhập tên và URL đầy đủ.
- Đặt khoảng thời gian, chẳng hạn 60 giây.
- Thêm hai lần thử lại để xử lý lỗi mạng không thường xuyên.
- Chọn một kênh thông báo.
- Lưu monitor và xác nhận các lần kiểm tra thành công bắt đầu xuất hiện.
Với website chính, HTTP và Keyword monitor hữu ích. Với API, dùng health endpoint và JSON Query. Không mở database hoặc port quản trị ra internet chỉ để giám sát; hãy dùng mạng đáng tin cậy hoặc VPN.
Ví dụ Push monitor cho bản sao lưu
Sau khi tạo monitor Push, thêm URL duy nhất của nó vào cuối script:
backup-command && \
curl -fsS "https://monitor.example.com/api/push/SECRET_TOKEN?status=up&msg=backup-ok"Request chỉ chạy sau khi sao lưu thành công. Hãy bảo vệ push token như mật khẩu: bất kỳ ai biết URL đều có thể gửi tín hiệu giả.
Cách kết nối Telegram
Tạo bot qua @BotFather, gửi bot một tin nhắn, sau đó mở Settings → Notifications → Telegram. Nhập Bot Token và Chat ID, nhấn Test rồi gán kênh cho các monitor. Với dịch vụ quan trọng, thêm kênh thứ hai như email.
Cách tạo trang trạng thái
Trong Status Pages, bạn có thể nhóm các monitor, hiển thị trạng thái hiện tại và lịch sử uptime, gán tên miền và thông báo công việc theo kế hoạch qua Maintenance. Không công khai IP nội bộ hoặc URL kỹ thuật: khách hàng chỉ cần các thành phần như “Website”, “API”, “Account dashboard” và “Payments”.
Cập nhật và sao lưu Uptime Kuma
Trước khi cập nhật lớn, dừng container và lưu thư mục dữ liệu:
cd /opt/uptime-kuma
docker compose down
tar -czf /root/uptime-kuma-$(date +%F).tar.gz \
data compose.yaml
docker compose up -dChuyển kho lưu trữ tới thiết bị khác hoặc bộ nhớ bên ngoài. Bản sao trên cùng VPS không bảo vệ khỏi việc xóa máy chủ hoặc lỗi đĩa.
Để cập nhật thường xuyên:
cd /opt/uptime-kuma
docker compose pull
docker compose up -d --force-recreateSau khi khởi động, kiểm tra docker compose ps, mở dashboard và gửi một thông báo thử nghiệm.
Nên chọn VPS nào cho Uptime Kuma?
Bản cài đặt nhỏ chỉ cần VPS Linux với 1 vCPU và 1 GB RAM. Tính độc lập quan trọng hơn hiệu năng thô: monitor phải tiếp tục chạy khi dự án chính không khả dụng.
Bạn có thể host Uptime Kuma trên VPS của tropic.host khi các dịch vụ được giám sát chạy trên nền tảng khác hoặc node độc lập. Ubuntu, Docker và IP tĩnh giúp khởi chạy dashboard nhanh; có thể tăng tài nguyên khi số kiểm tra tăng.
Nếu production đã chạy trong cùng hạ tầng, hãy chọn node khác hoặc thêm monitor sao lưu bên ngoài. Tách biệt các miền lỗi hữu ích hơn thêm một lõi CPU.
Lỗi thường gặp
| Lỗi | Vì sao là vấn đề | Cách tốt hơn |
|---|---|---|
| Giám sát chạy cạnh dự án | Sự cố chung làm cả dịch vụ và thông báo ngừng hoạt động | Dùng VPS hoặc vị trí riêng |
Port 3001 được mở công khai | Dashboard có thể truy cập không cần reverse proxy hoặc HTTPS | Bind port vào 127.0.0.1 |
Chỉ kiểm tra mã trạng thái 200 | Lỗi ứng dụng có thể trông như thành công | Thêm Keyword hoặc JSON Query |
Dùng tag latest | Trỏ tới nhánh v1 lỗi thời | Dùng louislam/uptime-kuma:2 |
| Bản sao lưu nằm trên cùng VPS | Nó sẽ biến mất cùng máy chủ | Sao chép thư mục data sang nơi khác |
Tóm tắt
Uptime Kuma biến VPS nhỏ thành trung tâm giám sát riêng cho website, API, DNS, port, chứng chỉ và job nền. Keyword giúp phát hiện trang hỏng, JSON Query bắt phản hồi API sai và Push cho biết bản sao lưu hoặc cron job đã dừng.
Để thiết lập đáng tin cậy, host hệ thống giám sát tách biệt với production, đóng port 3001, bật HTTPS và 2FA, đồng thời cấu hình hai kênh thông báo. Sau đó, thiết lập sao lưu bên ngoài của thư mục dữ liệu và kiểm tra độc lập chính Uptime Kuma.
Câu hỏi thường gặp
Uptime Kuma có miễn phí không?
Có. Dự án là mã nguồn mở và được phân phối theo giấy phép MIT. Bạn chỉ trả tiền cho hạ tầng, tên miền và bản sao lưu bên ngoài.
Uptime Kuma cần bao nhiêu RAM?
Với bản cài đặt nhỏ, 1 GB RAM là điểm khởi đầu hợp lý. Với hàng trăm kiểm tra, lưu lịch sử lâu hoặc Browser Engine, hãy cấp từ 2 GB RAM.
Có thể cài Uptime Kuma mà không cần Docker không?
Có, bằng Node.js và PM2. Tuy nhiên, Docker Compose thường dễ cập nhật, di chuyển và khôi phục hơn trên VPS.
Có thể dùng Uptime Kuma mà không cần tên miền không?
Về kỹ thuật là có—qua địa chỉ IP hoặc SSH tunnel. Với truy cập internet lâu dài, tên miền phụ cùng HTTPS an toàn hơn.
Uptime Kuma có hiển thị CPU, RAM và mức dùng đĩa không?
Không như một hệ thống metric máy chủ đầy đủ tính năng. Để giám sát tài nguyên máy chủ, hãy bổ sung Prometheus, Netdata, Zabbix hoặc công cụ chuyên dụng khác.
