Uptime Kuma je samogostujoče orodje za spremljanje, ki pokriva isto področje kot plačljive storitve UptimeRobot, Pingdom in StatusCake, brez cen na monitor in brez odvisnosti od tretje strani. Teče kot en sam Docker kontejner, spremlja HTTP/HTTPS končne točke, TCP vrata, ping cilje, DNS zapise, potek SSL certifikatov, Docker kontejnerje in več, nato pa vas obvesti preko več kot 90 kanalov, ko se kaj pokvari. Ta vodnik pokriva postavitev, nastavitev obvestil za Slack, Telegram in e-pošto ter konfiguracijo javne status strani, primerne za deljenje s strankami ali člani ekipe.

Kaj boste zgradili

Uptime Kuma instanco za reverznim proxyjem s HTTPS, monitorje za ključne storitve, opozarjanje preko treh kanalov (en chat, en mobilen, en e-pošta kot rezerva) in javno status stran na poddomeni status.example.com.

Predpogoji

  • VPS z Debian 12 ali Ubuntu 24.04
  • Nameščena Docker in Docker Compose
  • Domena z dvema poddomenama (ena za nadzorno ploščo, ena za javno status stran)
  • SSH dostop kot root

Uptime Kuma porabi malo virov. Manjši Cloud VPS udobno prenese več sto monitorjev.

Korak 1: Namestite Docker

Če še niste:

apt update && apt upgrade -y
apt install -y ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg \
  -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) \
  signed-by=/etc/apt/keyrings/docker.asc] \
  https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo $VERSION_CODENAME) stable" \
  > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl enable --now docker

Korak 2: Ustvarite Compose sklad

mkdir -p /opt/uptime-kuma/{data,caddy-data,caddy-config}
cd /opt/uptime-kuma

Ustvarite /opt/uptime-kuma/docker-compose.yml:

services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    restart: unless-stopped
    volumes:
      - ./data:/app/data
    networks:
      - web

  caddy:
    image: caddy:2-alpine
    container_name: caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy-data:/data
      - ./caddy-config:/config
    networks:
      - web

networks:
  web:
    driver: bridge

Pripenjamo se na glavno oznako 1, ne na latest. Projekt Kuma je vložil veliko časa v predelavo 2.x; pripenjanje prepreči nenamerno selitev med rutinskim docker compose pull.

Korak 3: Konfigurirajte reverzni proxy

Ustvarite /opt/uptime-kuma/Caddyfile:

status.example.com {
    encode gzip
    reverse_proxy uptime-kuma:3001
}

monitor.example.com {
    encode gzip
    reverse_proxy uptime-kuma:3001

    @admin {
        path /dashboard /dashboard/* /add /edit /settings /settings/*
        path /api/* /socket.io/*
    }
    
    header @admin {
        Strict-Transport-Security "max-age=31536000; includeSubDomains"
        X-Frame-Options "DENY"
    }
}

Obe poddomeni kažeta na isto Kuma instanco. Kuma streže nadzorno ploščo, API in javne status strani iz istega zaledja; ločitev je na ravni proxyja zgolj kozmetična. Obe poddomeni potrebujeta A/AAAA zapise, usmerjene na VPS.

Korak 4: Zaženite sklad

docker compose up -d
docker compose logs -f

Počakajte, da Kuma zapiše Listening on 3001 in Caddy uspešno izda TLS certifikat. Obiščite https://monitor.example.com in pojavil se bo čarovnik prve nastavitve.

Korak 5: Ustvarite skrbniški račun

Prvi registriran uporabnik postane skrbnik. Izberite močno geslo in takoj v Settings → 2FA vklopite dvofaktorsko overitev. Kuma nima javne samoregistracije; samo prvi lastnik lahko ustvari dodatne uporabnike.

Korak 6: Dodajte prve monitorje

V nadzorni plošči kliknite Add New Monitor. Najuporabnejši tipi monitorjev za tipično infrastrukturo:

Tip monitorja Kaj preverja Priporočen interval
HTTP(s) Spletna stran vrne 2xx/3xx 60 sekund
HTTP(s) - Keyword Stran vsebuje pričakovan tekst 60 sekund
TCP Port Storitev dosegljiva na vratih 60 sekund
Ping Gostitelj odgovori na ICMP 60 sekund
DNS DNS zapis razreši na pričakovano vrednost 300 sekund
HTTP(s) Cert expiry Število dni do poteka SSL 86400 sekund
Docker Container Kontejner teče 60 sekund

Za tipično malo podjetje verjetno želite:

  • HTTPS keyword monitor za glavno spletno stran (iskanje niza, ki je prisoten le, ko stran v celoti deluje, npr. </body>)
  • TCP monitor za poštni strežnik na vratih 587
  • HTTPS cert expiry za vsako javno domeno
  • Ping ali HTTP monitor za morebitno backup ali staging okolje
  • DNS monitor za apex zapis

Keyword monitorji ujamejo prave napake, ki jih navadni HTTP 200 preverbe spregledajo, na primer bazo z napako, ki še vedno vrača status 200.

Korak 7: Konfigurirajte obvestila

Obvestila se vežejo na monitorje. Najprej konfigurirajte kanale v Settings → Notifications, nato jih dodelite pri ustvarjanju ali urejanju monitorjev.

Slack
  1. V Slacku ustvarite Incoming Webhook za kanal, ki bo prejemal opozorila
  2. Kopirajte URL webhooka
  3. V Kumi Settings → Notifications → Setup Notification
  4. Notification Type: Slack
  5. Friendly Name: Slack #alerts
  6. Webhook URL: prilepite
  7. Default Enabled: on (samodejno se uporabi za nove monitorje)
  8. Test
Telegram

Telegram je odličen za osebna opozorila, ker zanesljivo potiska na telefon brez dodatnih aplikacij.

  1. Pogovorite se z @BotFather na Telegramu, ustvarite novega bota, shranite žeton
  2. Pošljite poljubno sporočilo novemu botu
  3. Obiščite https://api.telegram.org/bot<VAŠ_ŽETON>/getUpdates in v JSON odgovoru poiščite svoj chat ID
  4. V Kumi dodajte Telegram obvestilo z žetonom in chat ID
  5. Test

Za ekipo bota usmerite v Telegram skupino. Bota dodajte v skupino, pošljite sporočilo v skupini in iz getUpdates uporabite negativni številčni chat ID.

E-pošta (SMTP)

E-pošta je prava rezerva, kadar so chat platforme same nedostopne. SMTP konfigurirajte skrbno, ker je e-poštno opozorilo tisto, ki ga najbolj želite, ko drugi kanali odpovedo.

  1. Settings → Notifications → Setup Notification → SMTP
  2. Hostname: vaš SMTP strežnik
  3. Port: 587 (STARTTLS) ali 465 (SMTPS)
  4. Uporabniško ime in geslo
  5. From: pravi naslov s pravilnim SPF/DKIM, sicer pristane v vsiljeni pošti
  6. To: kam prihajajo opozorila
  7. Test in preverite, da sporočilo zadene nabiralnik, ne vsiljene pošte

Vse tri kanale konfigurirajte z Default Enabled vklopljenim in vsak nov monitor bo samodejno opozarjal po vseh treh.

Korak 8: Konfigurirajte javno status stran

Status strani gostujejo na /status/<slug>. Za ustvarjanje:

  1. Status Page → New Status Page
  2. Title: Production Services
  3. Slug: main (končni URL: https://status.example.com/status/main)
  4. Add Group: Customer-Facing Services
  5. Dodajte monitorje v skupino
  6. Dodajte še eno skupino za Internal Services, če želite operativno vidnost ločeno
  7. Shranite

Da URL brez sluga (https://status.example.com/) preusmeri na glavno status stran, v Settings → General → Default Status Page nastavite privzeti slug.

Nasveti za status strani:

  • Monitorje logično razvrstite (stranke, infrastruktura, tretje strani)
  • V polje opisa na monitorju napišite ime, berljivo za stranke. prod-web-01 HTTP 200 check ni nekaj, kar naj vidi stranka; Dostopnost spletne strani je.
  • Pri načrtovanem vzdrževanju dodajte obvestilo o incidentu, da obiskovalci status strani vidijo kontekst, ne le rdeče pike

Korak 9: Vzdrževalna okna

Pri uvajanju ali načrtovanem delu monitorji sprožajo lažna opozorila. Z Maintenance načrtujte tiha okna:

  1. Maintenance → New Maintenance
  2. Title: Weekly deployment window
  3. Strategy: Recurring (npr. vsak torek 22:00 do 22:30)
  4. Uporabite za izbrane ali vse monitorje
  5. Shranite

Med oknom monitorji še naprej tečejo, opozorila pa so utišana. Zgodovinski zapis še vedno kaže, kaj se je zgodilo, kar je uporabno pri pregledu po uvedbi.

Korak 10: Strategija varnostnega kopiranja

Celotno stanje Kume živi v /opt/uptime-kuma/data. SQLite baza, konfiguracija in zgodovina monitorjev so v tem imeniku.

cat > /opt/uptime-kuma/backup.sh <<'EOF'
#!/bin/bash
set -euo pipefail
BACKUP_DIR=/opt/uptime-kuma/backups
DATE=$(date +%Y%m%d-%H%M%S)
mkdir -p "$BACKUP_DIR"

docker exec uptime-kuma sqlite3 /app/data/kuma.db \
  ".backup '/app/data/kuma-backup.db'"

tar -czf "$BACKUP_DIR/kuma-$DATE.tar.gz" \
    -C /opt/uptime-kuma data

find "$BACKUP_DIR" -name "kuma-*.tar.gz" -mtime +14 -delete

rclone copy "$BACKUP_DIR/kuma-$DATE.tar.gz" remote:kuma-backups/
EOF
chmod +x /opt/uptime-kuma/backup.sh

echo "0 4 * * * root /opt/uptime-kuma/backup.sh >> /var/log/kuma-backup.log 2>&1" \
  > /etc/cron.d/kuma-backup

Obnovitev preizkusite tako, da kontejner ustavite, imenik data zamenjate z razpakirano varnostno kopijo in zaženete znova. Če se nadzorna plošča vrne z vsemi monitorji, je vaš proces varnostnega kopiranja resničen.

Korak 11: Posodabljanje Uptime Kume

cd /opt/uptime-kuma
docker compose pull
docker compose up -d

Ker smo se pripenli na glavno oznako 1, prejemate 1.x popravke, ne pa selitve na 2.x. Ko se 2.x ustali, zamenjajte oznako, naredite varnostno kopijo in posodobite.

FAQ

Koliko monitorjev zmore ena Uptime Kuma instanca? Majhen VPS z 1 vCPU in 1 GB RAM udobno poganja 100 do 200 monitorjev z 60-sekundnim intervalom. Nad 500 monitorji spremljajte CPU in razmislite o daljših intervalih.

Lahko en instanco souporablja več uporabnikov? Da. Skrbnik ustvari dodatne uporabnike v Settings → Users. Vsi uporabniki imajo enak dostop; Kuma trenutno ne ponuja vlogno specifičnega nadzora dostopa.

Kaj se zgodi, če Uptime Kuma sama pade? Opozoril ne boste več prejemali. To velja za vsak sistem spremljanja, tudi plačljive SaaS. Blažitve: spremljajte Kumo z druge instance na drugem VPS, uporabite Kumin tip monitorja "Push" za potrditev, da deluje, ali sparite z zunanjim dead-man's-switch sistemom, ki opozori, ko od Kume ni več sporočil.

Lahko uvozim obstoječe monitorje iz UptimeRobot ali podobnih? Kuma podpira CSV uvoz za HTTP monitorje. V trenutnem orodju izvozite v CSV, prilagodite glave stolpcev Kuminemu formatu in uvozite preko Settings → Backup.

Kako je oblikovana javna status stran? Kuma vključuje čist privzet slog. Lasten CSS je podprt preko nastavitev status strani. Za tesno blagovno znamko je najpogostejši pristop uporaba privzete strani in povezava nanjo z glavne spletne strani.

Kje jo gostiti

Sistem spremljanja, ki ga upravljate sami, mora živeti nekje zanesljivo, najbolje ne na isti infrastrukturi, ki jo spremlja. Naš Cloud VPS je razumna podlaga: EU lokacija, predvidljiv I/O iz Ceph shrambe in vključeni Proxmox Backup Server posnetki, tako da vaši zgodovinski podatki monitorjev preživijo morebitno napako. Bistvo je, da spremljevalnik živi izven vaše glavne gruče; če produkcijski strežnik utihne, je monitor edina stvar, ki mora še naprej teči in vam povedati.

Vam je bil odgovor v pomoč? 0 uporabniku/om je bi članek v pomoč (0 glasov)