[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Debian systemd maintainer resigns due to online bullying + risultati votazione DD



On 22/11/2014 01:25, gerlos wrote:
Il 20 novembre 2014 22:37, Davide Prina ha scritto:

On 20/11/2014 03:03, gerlos wrote:

E forse sono ingenuo, ma pensavo che per fare ricerche e filtrare i
contenuti di quei log potessi usare grep, awk, sec e vim. O al peggio i miei
occhi, scorrendo le righe dei log.


ma queste sono ricerche approssimative

Forse il mio punto di vista è limitato, e non capisco situazioni più
grandi/complesse, perché non capisco perché parli di ricerche
approssimative sul testo.
Proviamo con un esempio pratico. Quando guardo una riga di
/var/log/syslog vedo un timestamp, un hostname ed il nome del processo
che ha lasciato il messaggio, oltre ai dettagli del messaggio, che
ovviamente dipendono da "chi" li scrive.

ecco il punto, "i dettagli del messaggio, che ovviamente dipendono da chi lo scrive" e che, aggiungo io, contengono il punto centrale di tutto il discorso. In altre parole senza questi dettagli il resto del messaggio è inutile.

Filtrare sul timestamp è facile, per esempio con "grep -e '^Nov' "
vedo i messaggi registrati a novembre.
Similmente è facile filtrare sull'hostname o sul processo: uso per
esempio "grep -e 'hostname\ kernel:\ ' "
Queste sono ricerche molto precise.

esatto

Se ho sospetti "generici" poi posso sempre usare grep per cercare
messaggi che contengono parole come "error" o "warning".

però la stringa error potrebbe essere contenuta in una più lunga terror, ad esempio. O potrebbe essere nella parte descrittiva che dice: "L'error è codificato con EE" o nella descrizione che dice "questo non è un error"

Quindi ti puoi ritrovare dei falsi positivi... e di sicuro ti sarà capitato tante volte. Se invece tu dai la possibilità di fornirti o ricavarti dei messaggi strutturati, dove nel campo in posizione X c'è il tipo di messaggio: errore, warning, segnalazione, ... allora la ricerca risulta precisa anche in questo caso.

Poi i falsi positivi li puoi avere lo stesso perché magari ti viene segnalato come errore una cosa che in realtà non lo è, però questo è un falso positivo di livello più alto.

1. Come si fa a “spezzare” un file binario? “dove” si fa? Con che logica
dovrebbe funzionare un clone di logrotate che funziona su un log binario?


perché lo devi spezzare? a cosa serve questa operazione?
perché dovrebbe esserci un clone di logrotate per un file binario? a cosa
servirebbe?

Perché potrei non essere più interessato a log molto vecchi e potrei
volerli cancellare per liberare spazio su disco, o perché vorrei
spostarli altrove.

se non ti interessa più puoi cancellare le righe più vecchie di X tempo. Volendo potresti impostare anche delle regole più fini: se sono errori tienili 10 mesi, i warning 3 mesi, i messaggi 2 settimane. Se tutto è strutturato/indicizzato questa operazione la puoi fare a tempo zero e costo della CPU vicino allo zero.

Lo stesso puoi fare per gli spostamenti, li estrai dal file binario e li butti in un altro file binario che puoi archiviare... o magari li butti su un altro file binario su un'altra macchina che contiene tutto lo storico.

se dovessi usare syslog (ma in realtà i messaggi critici potrebbero essere
presenti su più log che vorrei analizzare) dovrei:
1) cercare di crearmi almeno un file (o flusso dati) che contiene almeno
tutti i log generati dall'ultimo boot e quindi prendere tutte le rotazioni
di syslog non compresse, quelle compresse (scomprimendole). Devo usare cat,
gunzip (o altro programma che devo usare per decomprimerli)

Sì, effettivamente serve un bel po' di expertise con strumenti per
manipolare flussi di testo come cat, zcat, grep, zgrep, sed, awk,
sort, etc. Ma non è quello che ci hanno detto di imparare quando ci
siamo avvicinati a gnu/linux? ;-)

fino ad un certo punto... certe cose sono molto complesse e ci vuole molto tempo per farle ogni volta da zero che non conviene... conviene delegare ad altri strumenti e sfruttare il risultato già pronto.

Per assurdo io posso crearmi un'immagine a 256 colori in un formato specifico scrivendo a mano i byte che la compongono... o posso usare un programma come Gimp per farlo...

Da un lato ci sono tanti piccoli tool in stile "KISS", e dall'altro
c'è un tool specifico (journalctl). Non conosco journalctl, ma spero
che sia almeno altrettanto versatile dei tool tradizionali nel
filtrare e reperire informazioni.

non conosco neanch'io systemd & C.
Per ora ho solo letto qualcosina.
La discussione qui è stata generalizzata molto, può essere che per alcuni aspetti systemd & C. sia più rigido/restrittivo o che offra soluzioni migliori in altre parti, rispetto a quello che si è ipotizzato qui.

2) buttare via da tale file (flusso dati) tutte le righe che non sono
dell'ultimo boot.

Io non la vedo così dura.

ok, ma è solo uno dei passi che ho indicato... per dire, non scrivi un comando e hai il risultato, anche approssimativo, qui devi crearti almeno un piccolo script, con il rischio di non aver considerato qualcosa e quindi non avere tutti i dati che ti potrebbero interessare o averne anche altri che non ti interessano.

3) a questo punto, se ho fatto le cose correttamente, devo cercare quali
sono i log che potrebbero visualizzarmi qualche criticità... e qui iniziano
i problemi più grossi, perché non esiste una regola facile per trovarli...
in pratica dovrei per ogni programma/demone/quant'altro che scrive sui log
che sto analizzando conoscere quali sono i messaggi critici, per poterli
estrarre ed estrarre solo quelli

Non lo devo fare lo stesso?
O in un log binario di systemd ci sarà scritto in grande "SONO IO
L'ERRORE CHE STAVI CERCANDO"? ;-)

:-)
certamente se stavi cercando quell'errore... ma se vuoi soltanto analizzare possibili errori, senza sapere cosa stai cercando?

4. Abbiate pazienza, non capisco neanche perché dovrebbe essere più
semplice o più efficiente appendere contenuti ad un file binario rispetto ad
appendere una riga ad un file testuale.


appendere?
In un file binario non aggiungi dati in fondo ad un file, ma li aggiungi in
una struttura.

OK. Aggiungo dati ad una struttura.
E' qualcosa più semplice o più complessa da fare rispetto ad appendere
dati ad un file di testo?

dipende da cosa intendi per "semplice" e "complesso".
Dal punto di vista dell'utente non c'è molta differenza, perché c'è una terza parte che si è occupata di semplificarti questa operazione: chi ha creato il programma che gestisce quel file. Dal punto di vista macchina, allora potrebbe essere che è un po' più oneroso dal punto di vista della CPU e memoria, magari meno del disco. Però questo punto dipende molto da cosa effettivamente si sta usando/facendo.

Ciao
Davide

--
Dizionari: http://linguistico.sourceforge.net/wiki
Database: http://www.postgresql.org
GNU/Linux User: 302090: http://counter.li.org
Non autorizzo la memorizzazione del mio indirizzo su outlook


Reply to: