Salta ai contenuti

Sorvegliare DumbMonit stesso

Chi sorveglia il sorvegliante? DumbMonit risponde in due parti:

  • un heartbeat in uscita, per ciò che non può vedere dall’interno: l’host spento, il container fermo, il motore bloccato;
  • regole integrate sulla propria salute, per ciò che può vedere: il volume dei dati che si riempie, il database delle metriche che si riavvia in loop, i poll che si bloccano, le scritture che falliscono, il database che cresce in modo anomalo.

Entrambi si trovano in Impostazioni → Sistema → DumbMonit stesso, che mostra anche lo stato del motore in questo momento.

DumbMonit chiama un tuo URL a intervalli regolari (60 secondi per impostazione predefinita), solo finché il motore sta bene:

  • il pianificatore è in esecuzione (ha completato un giro negli ultimi due minuti);
  • il database SQLite risponde;
  • VictoriaMetrics risponde.

Quando uno di essi fallisce, non viene inviato nulla. Un servizio “dead man’s switch” attende queste chiamate e ti avvisa quando si interrompono, che la causa sia l’intero host, il container o un solo componente.

  1. Crea un check sul servizio che preferisci e copia il suo URL di ping:
    • Healthchecks.io (o un Healthchecks auto-ospitato): un check con un periodo pari all’intervallo e un tempo di tolleranza un po’ più lungo (https://hc-ping.com/<uuid>);
    • Uptime Kuma: un monitor di tipo Push (https://kuma.example.com/api/push/<token>?status=up&msg=OK&ping=);
    • Better Stack: un heartbeat (https://uptime.betterstack.com/api/v1/heartbeat/<token>);
    • qualsiasi servizio che accetti un semplice GET e avvisi quando smette di arrivare (Cronitor, Dead Man’s Snitch…).
  2. In Impostazioni → Sistema → DumbMonit stesso, incolla l’URL, scegli l’intervallo (da 30 a 3600 secondi), attiva Invia un heartbeat e salva.
  3. Premi Prova: una chiamata parte subito e il risultato viene mostrato. Il servizio dovrebbe segnare il check come attivo.

La chiamata è un GET con un timeout di 10 secondi. Segue la stessa protezione dei canali di notifica: non viene mai inviata all’interfaccia web di DumbMonit stesso né al suo VictoriaMetrics.

Per impostazione predefinita, un motore malato smette semplicemente di chiamare, e il servizio avvisa una volta trascorso il suo tempo di tolleranza. Attiva Segnala i guasti per chiamare invece l’URL di errore, che il servizio segnala subito:

ServizioURL di errore
Healthchecks.io, Better Stack/fail aggiunto al percorso: https://hc-ping.com/<uuid>/fail
Uptime Kumastatus=up sostituito da status=down nella query

Lascialo disattivato per qualsiasi altro servizio: un URL sconosciuto con /fail in fondo risponderebbe con ogni probabilità 404, il che equivale comunque a non inviare nulla.

Un URL di ping contiene di solito un proprio token: chiunque lo conosca può far sembrare sano il tuo check. DumbMonit lo memorizza cifrato con il segreto dell’istanza, non lo restituisce mai tramite l’API (viene mostrato solo il suo host), e lo esclude dai log e dai messaggi di errore. Per cambiarlo, digita il nuovo; per mantenerlo, lascia il campo vuoto. Rimuovi l’URL lo dimentica e disattiva l’heartbeat.

L’impostazione non fa parte del bundle di configurazione cifrato: impostala di nuovo dopo il ripristino su una nuova istanza.

Ogni minuto DumbMonit scrive su VictoriaMetrics alcune misure su se stesso, e le regole integrate del gruppo DumbMonit stesso le leggono. Si comportano come ogni altra regola: stessi canali, stessi silenziamenti, stesse soglie per regola in Avvisi → Regole.

RegolaScatta quandoPredefinito
Volume dei dati di DumbMonit quasi pienoMeno del 10% libero sul volume che contiene /data15 min, avviso
Database delle metriche di DumbMonit che si riavvia in loopIl VictoriaMetrics incorporato è stato riavviato 3 volte o più in 30 minuti1 min, critico
Pianificatore di DumbMonit bloccatoNessun giro di pianificazione da più di due minuti5 min, critico
Poll di DumbMonit in ritardoI monitor restano in ritardo dopo ogni giro per 15 minuti15 min, avviso
Scritture delle metriche di DumbMonit che fallisconoBatch rifiutati da VictoriaMetrics, o campioni scartati, negli ultimi 15 minuti5 min, avviso
Database di DumbMonit in rapida crescitadumbmonit.db più che raddoppiato in un giorno e oltre 100 MB1 h, avviso
Backup di DumbMonit non eseguitoNessun backup locale riuscito da due giorni (dettagli)1 h, avviso

Queste regole richiedono VictoriaMetrics per essere valutate. Quando VictoriaMetrics stesso è fuori uso in modo permanente, o lo è l’intero host, nessuna regola può scattare: è il compito dell’heartbeat.

MetricaSignificato
dumbmonit_instance_data_free_bytesSpazio libero sul volume che contiene /data, per un utente non privilegiato.
dumbmonit_instance_data_size_bytesDimensione di quel volume.
dumbmonit_instance_database_bytesDimensione di dumbmonit.db e del suo write-ahead log.
dumbmonit_instance_scheduler_lag_secondsSecondi dall’ultimo giro completato dal pianificatore (normalmente meno di 2).
dumbmonit_instance_scheduler_backlogMonitor ancora da interrogare dopo l’ultimo giro.
dumbmonit_instance_sample_writes_failed_totalBatch che VictoriaMetrics ha rifiutato o a cui non ha risposto, dall’avvio del server.
dumbmonit_instance_samples_dropped_totalCampioni scartati prima di raggiungere il buffer di scrittura, dall’avvio del server.
dumbmonit_instance_vm_restarts_totalRiavvii del VictoriaMetrics incorporato dall’avvio del server (solo incorporato).

Non portano l’etichetta target: gli avvisi che sollevano non sono associati a un monitor. Per un Prometheus tuo, GET /metrics espone lo stesso tipo di cifre, vedi Raccogliere le metriche di DumbMonit.

MetodoRotta
GET/api/self-monitoringStato del motore, volume dei dati, dimensione del database, impostazione dell’heartbeat e ultimo heartbeat.
PUT/api/self-monitoring/heartbeat{ "enabled", "interval_seconds", "send_fail", "url" }. url omesso lo mantiene, "" lo cancella.
POST/api/self-monitoring/heartbeat/testUna chiamata subito, a { "url" } o all’URL memorizzato.

Le due scritture sono riservate agli amministratori (o a un token con lo scope write).