Docker Homelab Series - Phần 8: Uptime Kuma: Hướng dẫn Giám sát Server & Ứng dụng

Hướng dẫn Uptime Kuma

Uptime Kuma: Hướng dẫn Giám sát Server & Ứng dụng

Uptime Kuma

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

  1. Vào Portainer Dashboard
  2. Chọn StacksAdd stack
  3. Đặt tên Stack: uptime-kuma
  4. Copy/paste docker-compose vào Web editor
  5. 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:

  1. Tạo tài khoản admin (username & password)
  2. Thiết lập timezone và ngôn ngữ
  3. 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:

  1. Vào Dashboard → Click Add New Monitor
  2. Chọn Monitor Type: HTTP(s)
  3. Đ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)
  4. 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:

  1. Click Add New Monitor
  2. Chọn Monitor Type: TCP
  3. Điền thông tin:
    • Friendly Name: SSH Server
    • Hostname: 192.168.1.100
    • Port: 22
    • Heartbeat Interval: 60
  4. Click Save

3. Giám sát Ping

Để kiểm tra xem server có respond không:

  1. Click Add New Monitor
  2. Chọn Monitor Type: Ping
  3. Điền thông tin:
    • Friendly Name: Router Gateway
    • Hostname: 192.168.1.1
    • Heartbeat Interval: 60
  4. Click Save

4. Giám sát DNS

Để kiểm tra DNS resolution:

  1. Click Add New Monitor
  2. Chọn Monitor Type: DNS Query
  3. Điền thông tin:
    • Friendly Name: Google DNS
    • Hostname: google.com
    • DNS Server: 8.8.8.8
    • Query Type: A
  4. Click Save

5. Giám sát Database

Để kiểm tra kết nối database (MySQL, PostgreSQL, ...):

  1. Click Add New Monitor
  2. Chọn Monitor Type: MySQL / PostgreSQL
  3. Điền thông tin:
    • Friendly Name: Main Database
    • Hostname: db.local
    • Port: 3306
    • Username: admin
    • Password: ***
  4. 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, ...

  1. Vào SettingsNotifications
  2. Click Add Notification
  3. Chọn loại notification (Email, Slack, Telegram, Discord, ...)

2. Cấu hình Email Notification

  1. Chọn Notification Type: Email
  2. Điền thông tin:
  3. Click Test để kiểm tra
  4. 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

  1. Chọn Notification Type: Telegram
  2. Tạo Bot Telegram:
    • Chat với @BotFather trên Telegram
    • /newbot
    • Đặt tên bot và username
    • Copy Token
  3. Đ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)
  4. Click Test
  5. Click Save

4. Gắn Notification vào Monitor

Sau khi tạo notification channel:

  1. Vào Monitor → Click Edit
  2. Kéo xuống → Notification
  3. Chọn notification channels cần sử dụng
  4. 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:

  1. Vào Status PageCreate New Status Page
  2. Điền thông tin:
    • Slug: status (sẽ là URL: domain/status)
    • Title: Service Status
    • Description: Real-time status of our services
  3. Click Create

2. Thêm Monitors vào Status Page

Sau khi tạo status page:

  1. Click vào status page vừa tạo
  2. Click Add Monitor
  3. Chọn monitors muốn hiển thị
  4. 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:

  1. Tạo monitor với URL: https://app.yourdomain.com
  2. Uptime Kuma sẽ kiểm tra thông qua proxy
  3. Nếu proxy down, tất cả apps sẽ báo down

3. Backup & Restore

Để backup dữ liệu monitors:

  1. Vào SettingsBackup & Restore
  2. Click Download Backup
  3. File JSON sẽ được tải về chứa toàn bộ cấu hình

Để restore:

  1. Click Upload Backup
  2. Chọn file JSON
  3. 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 SettingsSecurity.

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
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!

Post a Comment

Previous Post Next Post
QR Code
Quét mã QR để gọi miễn phí