I registri: l’unica cosa che cresce senza che nessuno lo abbia deciso

Tutto ciò che riempie il disco lo hai aggiunto tu. Tranne i registri. E quando qualcosa si guasta la scrittura accelera: i registri crescono più in fretta proprio quando meno puoi guardare.

AtlasPVE ·

Questa voce risponde a

  • proxmox file di log cresciuti
  • proxmox il journal ha riempito il disco
  • proxmox logrotate
  • proxmox pulire var log
  • proxmox disco che si riempie causa

Gran parte di ciò che riempie il disco lo hai aggiunto tu: macchine virtuali, backup, immagini di installazione. Ognuna è stata una decisione.

I registri sono diversi. Crescono perché il sistema gira. Nessuno ha mai detto "che questo file diventi più grande".

La crescita è lenta ma senza limite

Un file di registro può crescere di qualche kilobyte al giorno. Per mesi non attira alcuna attenzione. Un anno dopo è ancora piccolo.

Ma non ha un tetto. E una crescita senza tetto, per quanto lenta, diventa un problema se aspetti abbastanza.

Il moltiplicatore che nessuno si aspetta: il guasto accelera la scrittura

Qui sta il punto vero dell’articolo.

Un sistema sano scrive poco. Se un controllo dà errore a ogni esecuzione, a ogni esecuzione cade una riga nello stesso file. Per un lavoro che gira ogni quindici minuti sono novantasei righe al giorno, e non si ferma.

Il registro cresce quindi più in fretta proprio quando meno puoi guardarlo: mentre un guasto è in corso.

E la sua versione peggiore

Compare un problema, i registri accelerano, il disco si riempie. Il disco pieno crea nuovi problemi. I nuovi problemi producono altri registri.

Da quel punto diventa più difficile trovare il guasto originale, perché la maggior parte degli errori sullo schermo non è conseguenza del primo problema ma del disco pieno.

La regola: tutto ciò che scrive deve avere un tetto

"Puliamo dopo" non è un piano. Serve un limite meccanico che funzioni senza che nessuno debba ricordarsene.

Questa regola non vale solo per i registri di sistema: vale per ogni file prodotto dai servizi che fai girare, dai lavori pianificati e dai raccoglitori.

Due errori frequenti nell’impostare la rotazione

Uno: la regola che si rompe per un file inesistente. Alcuni file compaiono solo quando la relativa funzione viene usata. La regola va scritta in modo da non dare errore quando un file manca; altrimenti una funzione che non usi mai blocca del tutto la rotazione.

Due: il metodo di rotazione sbagliato. Rinominare il file e mandare al servizio che scrive un segnale "riapri" è il metodo comune, ma funziona solo se esiste un servizio di lunga durata. Se chi scrive è un lavoro breve che apre e chiude ogni volta, non c’è nessuno a cui mandare il segnale; in quel caso il metodo giusto è copiare il contenuto e svuotare il file sul posto.

Entrambi sono guasti silenziosi: la regola c’è, il file continua a crescere, e nessuno si accorge che la regola non funziona.

E la domanda della macchina già installata

Se scrivi una regola di rotazione solo nello script di installazione, non raggiungerà mai le macchine installate prima che la regola esistesse. Quelle macchine girano per anni senza.

La via giusta è scrivere la regola a ogni avvio: così anche le installazioni più vecchie la ricevono quando passano a una nuova versione.

Che cosa fa Atlas

Tutto questo articolo nasce da una misura fatta da Atlas su se stesso, quindi va raccontato con onestà.

Atlas gira con i privilegi di root sulla macchina del cliente e scrive su più file di registro: il riepilogo della sentinella ogni quindici minuti, l’output degli aggiornamenti pianificati a ogni esecuzione, il proprio registro di autoaggiornamento. È stato misurato e nessuno di essi veniva ruotato, perché l’installazione non scriveva una regola di rotazione da nessuna parte. Su una macchina in esercizio il registro della sentinella aveva raggiunto centottanta kilobyte in trentadue giorni e non c’era alcun meccanismo per ridurlo.

Il numero sembra piccolo e quel giorno non era un problema. Il problema era che la crescita era senza limite, più l’accelerazione descritta sopra. I registri degli aggiornamenti pianificati catturano tutto l’output del gestore di pacchetti a ogni esecuzione, e possono arrivare a megabyte per esecuzione.

Ora la regola viene scritta, ed entrambe le trappole sopra sono trattate di proposito: i file mancanti sono tollerati, e la rotazione usa il metodo copia e poi svuota, perché chi scrive sono processi brevi lanciati da un lavoro pianificato.

E la regola viene scritta all’avvio, non nello script di installazione. Il motivo è esattamente la domanda di cui sopra: che anche le macchine installate prima ricevano la regola passando a una nuova versione.

Fonti

La documentazione ufficiale di Proxmox. In inglese, e su questo argomento l’ultima parola è la sua.

Voci collegate

Come si presenta questo dentro Atlas?

Vai alla pagina prodotto