Monitoraggio della Flotta
Il monitoraggio è a strati: metriche host e salute container dalla CLI, campionamento di lungo periodo per i trend di capacità, un hub beszel per la cronologia a colpo d'occhio, e avvisi tramite control plane e osservatori di failover.
Hub Beszel e agent
La flotta riporta a un hub beszel con un agent per host. Hub e quattro
agent sono allineati a 0.20.0; Mon è registrato come MON-FR-flo-primary con
soglie disco e memoria a 80%. L'hub fornisce le serie temporali di flotta
(CPU, memoria, disco, rete) che i comandi CLI campionano su richiesta.
flo vps stats — vista host e container
flo vps stats # profilo VPS predefinito
flo vps stats production # profilo nominato
flo --json vps stats # formato macchina
Il comando riporta:
- Host: hostname, uptime, load average, core CPU, memoria (usata/totale/%) disco (usato/totale/%) con livelli di pressione disco (warning ≥ 70%, critical ≥ 80%).
- Docker: container in esecuzione/totali, container fermi e non sani.
- Istanze: container raggruppati per tenant con cap CPU/RAM live letti dal
demone (
docker inspect), stato/salute autorevoli, container blue/green e infra. - Volumi di log: dimensione
/logsper tenant, roll più vecchio e verdetto di rotazione (prima prod, poi test). Questo è il consueto divoratore di disco — un tenant con roll Serilog senza cap è segnalato qui prima che riempia il disco.
Salute container e istanze
flo instance health <id> # DB, API, disco, container
flo instance stats <id> # CPU/memoria/stato (-w 5m, -i 15s; watch max 2h)
flo logs errors <id> --hours 6 # errori recenti da blue, green, Traefik
flo logs days <id> # roll Serilog giornalieri
flo logs day <id> 2026-07-20 # log applicativo di un giorno
Gli health check a livello applicativo provengono da Docker Compose: l'app Flo espone
/health sulla porta interna 10001 e PostgreSQL usa pg_isready. Nginx dipende
dallo stato healthy dell'app ma non ha un health check dedicato (vedi
Deploy Singolo-Tenant).
Monitoraggio risorse di lungo periodo
flo instance monitor start <id> --interval 5m
flo instance monitor status
flo instance monitor report <id> --from 2026-05-10 --to 2026-05-16
flo instance monitor stop <id> --clean
instance monitor installa un cron job che campiona le statistiche container a intervallo fisso
(60 s predefinito), le memorizza sull'host e riporta aggregati, trend
orari e avvisi di soglia su giorni o settimane. --all punta ogni istanza
del VPS.
flo doctor — controlli di sistema
flo doctor # target locale o --vps
flo doctor --fix # provisiona il toolchain di sviluppo locale mancante
flo doctor --fix --dry-run
flo doctor cache-headers https://api.example.com
I controlli girano contro il target risolto ed escono non-zero se qualcosa fallisce:
| Categoria | Controlli |
|---|---|
| Docker | demone in esecuzione, Compose disponibile, versione server |
| Traefik | container in esecuzione, rete traefik-public esistente |
| Sicurezza | master key presente e 0600 (POSIX), scadenza certificato SSL (warn < 30 giorni, fail se scaduto), OpenSSL disponibile |
| Config | ~/.flo/config.json valida, directory dati scrivibile |
| Sistema | spazio disco (fail < 1 GB, warn < 5 GB), memoria, riavvio in sospeso |
| Tenant | registry valido, container attivo per tenant sano/in avvio/non in esecuzione |
| Toolchain | .NET/Node locali, immagine Postgres, cablaggio PATH per ~/.flo/toolchains (solo locale) |
--fix installa il toolchain locale mancante in ~/.flo/toolchains
(solo locale; un VPS gira container precompilati). doctor cache-headers <base-url>
verifica Cache-Control sugli endpoint critici di flusso (config admin, feature flag)
per intercettare bug di cache stantia dopo un deploy.
Journal e igiene disco
flo vps journal status production
flo vps journal vacuum production --dry-run
flo vps journal vacuum production -y
flo vps cleanup production --dry-run
flo vps cleanup production --logs --older-than 7
flo strapi maintenance docker-cleanup -a
flo vps provisioninstalla una policy systemd-journal limitata:SystemMaxUse=500M,RuntimeMaxUse=200M,MaxRetentionSec=30daytramite drop-in/etc/systemd/journald.conf.d/50-flo-journal.conf.journal vacuumruota e compatta alla policy fissa 500M/30 giorni (nessun limite arbitrario); il registry remoto espone la stessa forma fissa.- L'host MON gira inoltre con cap journal a 200M e prune docker
settimanale;
flo control doctor <vps>legge le righe journald attive (non i default commentati) per triage in sola lettura. flo vps cleanuprimuove container, immagini, volumi e cache di build Docker inutilizzati, e con--logspota i roll Serilog datati dal volume log di ogni tenant (mai il file live).
Avvisi
- Telegram (control plane): il demone valuta le soglie di produzione ogni
minuto e invia avvisi in batch con cooldown per issue (predefinito 6 h) e
messaggi di recovery. Configura con
flo control alerts mon --provision --token-stdin --chat <id> -y; verifica con--test. Vedi Control Plane. - Email (failover):
flo failover monitor --all --notify -yeflo failover watch --notifyinviano email su replica degradata o sospetta interruzione del primario, usando la config notifiche gestita daflo config notify(SMTP o Cloudflare). - Backup:
flo backup statusvaluta freschezza e salute cron; la dashboard di controllo espone l'età reale dei backup tramite credenziali R2 in sola lettura. - Watchdog auto-deploy:
flo watchdog statuseflo watchdog logsmostrano lo stato del watchdog auto-deploy guidato da CI.