Každý správca počítačovej siete, alebo aj bežný užívateľ, ktorý disponuje nejakými IoT zariadeniami, chce mať svoje zariadenie pod kontrolou. Preto potrebuje svoje zariadenia nejakým spôsobom monitorovať. Najjednoduchší spôsob ako monitorovať zariadenia v sieti je využitie ICMP protokolu a služby ping. Nedávno som natrafil na veľmi zaujímavý projekt pod názvom Uptime Kuma.
Jedná sa o veľmi šikovný nástroj, ktorý sa až podozrivo podobá na monitor Uptime Robot. Demo verzia projektu Uptime Kuma je na tejto adrese a na otestovanie máme 10 minút. Testovací server sa nachádza v Tokiu preto to môže mať dlhšiu odozvu. Inštalácia a popis je na githube. Na výber je pripravený docker, alebo natívna inštalácia. Poďme si ale povedať aké funkcie poskytuje Uptime Kuma monitor:
- Monitorovanie: HTTP(s) / TCP / HTTP(s) Keyword / Ping / DNS Record / Push / Steam Game Server.
- Notifikácie: Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP) + ďalšich 70 služieb
- Interval monitorovania od 20 sekúnd
- Na výber viac jazykov (SK a CZ zatiaľ nie)
- Výsledky v grafoch
- Nastavenie tmavého, alebo svetlého vzhľadu
- 2 faktorová autentizácia (2FA)
- Zálohovanie konfigurácie (export/Import)
Ja som to inštaloval do linuxového kontajnera Debian 11 netinstall, takže ešte som musel doinštalovať viacero drobnosti (oproti oficiálnemu návodu). Prihlásime sa do kontajnura cez SSH.
sudo apt update && sudo apt upgrade -y
sudo apt install curl -y git -y
Debian 11 má v oficiálnych repozitároch Node.js ver. 12 a Uptime Kuma vyžaduje min. ver. 14, takže nebudeme inštalovať z repozitárov. Tym pádom nemusíme inštalovať npm, pretože Node.js to nainštaluje. Stačí, keď npm aktualizujeme
curl -sL https://deb.nodesource.com/setup_16.x | sudo bash -
sudo apt -y install nodejs
node -v
v16.14.0
npm --version
8.3.1
sudo npm install npm -g
npm --version
8.5.0
Príprava je hotová a teraz môžeme z gitu inštalovať Uptime Kuma.
git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
npm run setup
Službu môžeme spustiť priamo v terminály, kde bude bežať v popredí, ale odporúča sa spúšťať ju na pozadí
node server/server.js
Spustenie na pozadí vyžaduje doinštalovať PM2
sudo npm install pm2 -g
Službu môžeme spustiť na pozadí
pm2 start server/server.js --name uptime-kuma

V debian 11 NetInstall nemôže bežný užívateľ spúšťať ani ping, čiže Uptime Kuma by nám vôbec nefungoval ak by sme chceli monitorovať zariadenia na ping. Preto musíme službe ping nastaviť práva na 711. Najprv zistíme cestu k službe a nastavíme jej práva.
which ping
sudo chmod 4711 /bin/ping
Teraz sa môžeme cez webový prehliadač prihlásiť na Uptime Kuma. Vzhľadom k tomu, že Uptime Kuma ja nastavená defaultne na port 3001, tak za IP adresou servera zadáme tento port. Následne si vytvoríme admin konto a môžeme službu plne využívať.

Po vytvorení konta sa dostaneme na Dashboard a hneď môžeme pridávať zariadenia. Zariadenia sa pridávaju veľmi jednoducho. Vyberieme zo zoznamu aký typ služby chceme monitorovať (http(s), DNS, TCP port …), zvolíme názov pre monitorovanú službu, IP/Hostname, interval monitorovania atď. a nastavenia uložíme. Pozrime sa na niekoľko screenshotov.




Veľmi dôležitou funkciou aplikácie Uptime Kuma je notifikácia dostupnosti zariadenia. Ako som už spomenul vyššie, notifikovať môžeme rôznymi spôsobmi. Ja som si veľmi obľúbil aplikáciu telegram, takže notifikácie si nechávam zasielať na telegram. Na smartfóne mám tak isto nainštalovaný telegram, takže aj keď som mimo svojej siete, notifikáciu o výpadku sa dozviem okamžite. Ak chceme dostávať notifikácie na telegram, potrebujeme Bot Token a Chat ID. O tom ako tieto údaje získame som písal v tomto blogu v časti Snapshot na Telegram. Z tohto článku vyplíva, že do telegramu si pridáme robota pod menom BotFather. Najprv sa robota opýtame ako nám vie pomôcť a potom začneme vytvárať našeho vlastného robota.
/help
/newbot
Ďalej sa riadime podľa inštrukcii, ktoré nám robot zasiela. Po úspešnom vytvorení robota, nám BotFather zagratuluje aj s vygenerovaným Bot Tokenom. Následne získame aj Chat ID, tým spôsobom, že náš vygenerovaný Bot Tokenom vložíme do nasledujúceho linku a xxx:yyyyy nahradíme naším tokenom.
https://api.telegram.org/botxxx:yyyyy/getUpdates
Ak sme zadali správny Bot Token a Chat ID, môžeme skúsiť test a okamžite by sme mali obdržať správu v telegrame. Následne označíme položky Default enabled a Aply on all existing monitors a uložíme kliknutím na button Save. Notifikácie cez telegram som reálne overil, pretože monitorované zariadenie som fyzicky odpojil od ethernetovej siete a do niekoľkých sekúnd som obdržal správu, že zariadenie je offline. Keď som zariadenie pripojil znova do siete, tak som obdržal ďalšiu správu, že zariadenie je online.
Záver
Z monitorovacími službami nemám veľké skúsenosti. Naposledy som používal cacti (asi 5-6 rokov späť), ale to bolo trocha zložitejšie a na základe šablón sa dalo toho monitorovať mnoho (vyťaženie CPU a RAM serverov, dostupnosť wifi klientov, spotreba dát atď.). Aplikácia Uptime Kuma takmer vôbec nezaťažuje procesor a RAM. CPU sa drží na úrovni 1-2% a RAM je pod 100MB vrátane celého kontajnera. Je síce pravda, že monitorujem 6 zariadení, ale pri tisícke zariadení by to bolo o niečo viac. Jedine čo by som na tejto aplikácii privítal je vytváranie klientov aspoň na prehliadanie výsledkov monitora. Inak môžem povedať, že je to super aplikácia. Nemôžem zase tvrdiť, že je to lepšie ako Zabbix, Nagios, Cacti, ale na taký ľahký monitoring super.