JustJeff

Uptime Kuma!

Monitoriamo siti web, e non solo, con Uptime Kuma!

A girl looking outside

Volevo chiamare l’articolo monitorando il corpo umano perché da giorni avevo in mente Nabot 1 e volevo un suo cameo in questo articolo. Poi ho pensato che non c’entrava molto con il monitoring. Ci riproverò la prossima volta.

Il problema

Ti sei dato alla programmazione e dopo millemila ore sei riuscito a mettere online il tuo blog Wordpress con tema di default.
Non vedi l’ora di farlo vedere a tuo cuggino.

Ovviamente vuoi vedere la sua espressione piacevolmente stupita delle tue capacità informatiche.

Lo incontri al baretto, gli mandi il link su whatsapp, guardi il suo volto incuriosito mentre apre il link…

Quel “Che è sta mmerd…” rimarrà indelebile nella tua memoria.

iPhone Caso 1

Sei un nomade digitale a cui piace lavorare solo in luoghi all’aperto, dove il sole è allo zenit per 16 ore al giorno in modo da far risaltare il colore mezzanotte del tuo Macbook.

Dopo tante ore, i riflessi del sole sul monitor più vetroso e riflettente di sempre ti hanno generato un’emicrania tale da dimenticarti di verificare manualmente lo stato dei siti web dei tuoi clienti.

Nel cuore della notte il tuo telefono inizia a vibrare come un pazzo.

iPhone Caso 2

Hai un homelab, magari dei server remoti o dei siti web di clienti che hai bisogno di monitorare perché ti sei stufato di cadere dal pero quando sono gli altri a farti notare che qualcosa non sta funzionando come dovrebbe.

Ovviamente ti sei già guardato in giro e soluzioni come Nagios, Zabbix, checkmk, UptimeRobot, ToolDiMonitoringMagico&Complicatissimo, sono talmente overkill o costose che non puoi prenderle nemmeno in considerazione.

Ovviamente anche tu hai Macbook mezzanotte, ma hai capito che quel dannato schermo in vetro è più figo che efficiente.

La soluzione

Hero Uptime

È molto simile ad Uptime Robot.
L’usabilità è immediata.
Fa poche cose ma, quelle che fa, le fa discretamente bene.
È supportato e ha un sacco di stelline 2 su GitHub.
Non è paragonabile agli altri tool citati sopra, ma inutile usare un bazooka per uccidere una formichina3.

Quello che faremo è utilizzare Uptime Kuma per monitorare tutto il nostro ambaradan di servizi.

Per rendere le cose un po’ più reali e divertenti utilizzeremo anche:

  • Docker Compose: per gestire il nostro container
  • Un paio di servizi, tra sitarelli e VPS per testare la bontà del tool

Prerequisiti:

Iniziamo dal dire che bisognerebbe conoscere:

  • qualcosina di Linux,
  • qualcosina di Docker,
  • qualcosina in più di Docker Compose.

Sarebbe utile avere anche:

  • un server Linux esposto su internet, con il suo bell’indirizzo IP pubblico, in questo caso utilizzerò una VM su Azure.
  • un meraviglioso dominio che dovrà puntare all’IP del nostro coccolato server Linux
  • Docker e Docker Compose installati sul sopra citato meraviglioso server Linux.

Nel caso non abbiate un server Linux esposto su internet e il relativo dominio, è possibile seguire una parte della guida e utilizzare Uptime Kuma in locale. Uffa, però.

No VM no party

Se vi state chiedendo: Perché non hai utilizzato un servizio ggiovane come Azure App Service o il fratellino di AWS?
Perché non funziona. Semplice.

Iniziamo!

Personalmente preferisco utilizzare docker compose piuttosto che eseguire dei docker run perché mi permette di rendere il tutto più organizzato e manutenibile nel caso di modifiche e integrazioni.

Quindi iniziamo creando la folder che conterrà il nostro docker-compose.yml e i dati di Uptime Kuma:

Terminal window
mkdir uptimekuma
cd uptimekuma
touch docker-compose.yml

A questo punto la nostra folder di progetto sarà completa.

Andiamo quindi a modificare il nostro file docker-compose.yml aggiungendo tutto il necessaire :

docker-compose.yml
services:
uptime-kuma:
image: louislam/uptime-kuma:1
deploy:
resources:
limits:
cpus: '0.15'
memory: 100M
container_name: uptime-kuma
volumes:
- ./uptime-kuma-data:/app/data
ports:
- 3001:3001
restart: always

Non è obiettivo di questa guida addentrarsi nel mondo di docker compose ma l’unico punto di attenzione è la parte volumes.

Per evitare di perdere tutti i dati e le configurazioni ad ogni restart del container, facciamo si che venga montata sul container la folder /uptime-kuma-data che verrà creata alla prima esecuzione nella nostra folder di partenza.

Quindi, nel caso ve lo stiate chiedendo, sì, è quella la folder da backuppare!

Eseguiamo il comando magico e aspettiamo la fine dell’esecuzione:

Terminal window
docker compose up -d
Docker Compose Done

Ora non ci rimane che provare a raggiungere tramite browser il nostro serverino sulla porta 3001 che abbiamo impostato precedentemente e incrociare le dita.

Se tutto funziona come sperato ci troveremo davanti il form per inserire le credenziali che vogliamo utilizzare per accedere al tool.

Uptime Landing

Una volta impostate le credenziali ci troveremo nella dashboard di Uptime Kuma pronta per essere configurata.

L’usabilità è davvero molto semplice e lineare e in pochi click possiamo configurare tutti i monitoraggi di cui abbiamo bisogno.

Ora non vi rimane che spippolare un po’ tra le varie configurazioni e andare a impostare il sistema di notifica che preferite dalle impostazioni.

Io ho scelto Telegram ma il tool mette a disposizione una miriade di sistemi, troverete sicuramente quello che fa al caso vostro.

Extra Bonus

Un’altra funzionalità molto figa che mette a disposizione Uptime Kuma è la possibilità di avere più status page accessibili pubblicamente.
Funzionalità molto interessante se c’è bisogno di dare evidenza a terzi dello stato dei sistemi monitorati.

Status Page

Con estrema facilità abbiamo messo in piedi un sistema di monitoraggio che, per la maggior parte dei casi, copre un buon numero di esigenze.

Ça va sans dire che la soluzione vista è solo l’inizio per un eventuale utilizzo in produzione, non abbiamo parlato né di DNS né di alta affidabilità.

Sipario!

Footnotes

  1. Smiling Virus

  2. A tutti piaceva quando la maestra dava le stelline.

  3. Tranne in questo caso.