conoscere la registrazione / logrotation generale su Linux?


13

Supponiamo che accanto ai registri del web server Apache non ho mai avuto alcun contatto con nessun tipo di registro (professionale) su alcun sistema operativo. Quindi la registrazione, anche se ho capito alcune nozioni di base, è un argomento piuttosto nuovo. Al momento l'investimento per conoscere appieno questo argomento sembra essere piuttosto grande, eppure non so ancora, se vale la pena conoscere più dei concetti più astratti.

Quali risorse suggeriresti se qualcuno in quella situazione dovesse consumare (tutorial, pagine man, libri) per conoscere la registrazione?

Quali registri dovrebbe leggere un normale utente Linux su base giornaliera / mensile? È forse corretto supporre che siano scritti per la leggibilità umana o che siano generalmente valutati e utilizzati da altri strumenti?

Che cosa dovrebbero sapere l'utente normale * nix e lo sviluppatore software su questi registri?

Cosa è necessario sapere sulla rotazione dei registri, se non si prevede di gestire server Web professionali con enormi eventi?


Ti dispiace se io (o tu) modifichi il titolo per leggere "su Linux" anziché "su Ubuntu" poiché queste sono essenzialmente la stessa domanda (vedi la mia risposta)? In questo modo ci sono meno probabilità di finire con duplicati chiusi domande sul "learning registrazione sul arco", "imparare la registrazione su CentOS", ecc
Goldilocks

Non mi importa questo tipo di cambiamenti, purché le risposte siano buone :)
erikbwork

Risposte:


18

[Questo è stato scritto alcuni anni prima dell'adozione diffusa di journald su sistemi systemd e non ci tocca. Attualmente (fine 2018) sia journald che (r) syslog, descritti di seguito, sono utilizzati su distro come Debian. Su altri, potrebbe essere necessario installare rsyslog se si desidera utilizzarlo insieme, ma l'integrazione con journald è semplice.]

Non discuterò del logging per quanto riguarda Ubuntu in particolare, dal momento che l'argomento è standardizzato per Linux in generale (e credo che la maggior parte o tutto ciò che ho da dire sia vero anche in generale per qualsiasi sapore * nix, ma non prendi la mia parola per quello). Inoltre non dirò molto su "come leggere i registri" oltre a rispondere a questa domanda:

È forse corretto supporre che siano scritti per la leggibilità umana o che siano generalmente valutati e utilizzati da altri strumenti?

Immagino che dipenda dall'applicazione, ma in generale, almeno per quanto riguarda ciò che va nel syslog (vedi sotto), dovrebbero essere leggibili dall'uomo. "Significativo per me" è un altro problema, lol. Tuttavia, possono anche essere strutturati in modo da semplificarne l'analisi con strumenti standard (grep, awk, ecc.) Per scopi specifici.

Tuttavia, in primo luogo, esiste una distinzione tra applicazioni che eseguono la propria registrazione e applicazioni che utilizzano il registratore di sistema. Apache per impostazione predefinita è il primo, anche se può essere configurato per fare il successivo (che penso che la maggior parte delle persone considererebbe indesiderabile). Le applicazioni che eseguono la propria registrazione potrebbero farlo in qualsiasi modo utilizzando qualsiasi posizione per i file, quindi non c'è molto da dire al riguardo. Il logger di sistema è generalmente indicato come syslog.

syslog

"Syslog" è in realtà uno standard implementato con un processo daemon genericamente chiamato syslogd (d è per demone!). Il demone syslog predominante attualmente in uso su Linux, incluso Ubuntu, è rsyslogd. Rsyslogd può fare molto, ma come configurato immediatamente sulla maggior parte delle distro emula un syslog tradizionale, che ordina le cose in semplici file di testo /var/log. È possibile trovare la documentazione per esso in /usr/share/doc/rsyslog-doc-[version](attenzione, c'è anche un /usr/share/doc/rsyslog-[version], ma questo è solo avvisi dal pacchetto sorgente come NEWSe ChangeLog). Se è lì, è html, ma Stack Exchange non consente l'incorporamento di collegamenti di file locali:

file://usr/share/doc/rsyslog-doc/index.html

Quindi potresti provare a copiarlo. Se non è presente, potrebbe far parte di un pacchetto separato che non è installato. Interroga il tuo sistema di imballaggio (ad es apt-cache search rsyslog | grep doc.).

La configurazione è in /etc/rsyslog.conf, che ha una pagina di manuale man rsyslog.conf, anche se mentre la pagina di manuale fa un riferimento preciso, potrebbe essere meno penetrabile come introduzione. Fortunatamente, i fondamenti dello stock rsyslog.conf sono conformi a quelli del tradizionale syslog.conf, per i quali ci sono molte introduzioni e tutorial in giro. Questo , per esempio; quello che vuoi togliere da questo, mentre scruti sul tuo rsyslog.conf locale, è una comprensione delle strutture e delle priorità (la "priorità" viene talvolta definita come loglevel), poiché fanno parte del suddetto standard syslog. Il motivo per cui questo standard è importante è perché rsyslog ottiene effettivamente i suoi contenuti tramite il kernel e ciò che il kernel implementa è lo standard.

Per quanto riguarda le $direttive in rsyslog.conf, queste sono specifiche di rsyslog e se installi quel pacchetto di documenti opzionale troverai una guida in esse rsyslog_conf_global.html.

Divertiti ... se sei curioso di sapere come le applicazioni usano il logger di sistema, guarda man loggere man 3 syslog.

Rotazione del registro

Il mezzo normativo per ruotare i tronchi è tramite uno strumento chiamato logrotate(e c'è un man logrotate). Il metodo normativo di utilizzo di logrotate è tramite il demone cron , anche se non deve essere fatto in questo modo (ad esempio, se si tende a spegnere il desktop ogni giorno, è possibile farlo anche una volta all'avvio prima dell'inizio di syslog , ma ovviamente, dopo che il filesystem è montato rw).

C'è una buona introduzione a logrotate qui . Nota che logrotate non è solo per roba di syslog , può essere usato con qualsiasi file. Il file di configurazione di base è /etc/logrotate.conf, ma poiché la configurazione ha una direttiva "include", generalmente la maggior parte delle cose va nei singoli file nella /etc/logrotate.ddirectory (qui d sta per directory, non daemon; logrotate non è un demone).

Una cosa importante da considerare quando si utilizza logrotate è come un'applicazione reagirà quando il suo file di registro viene "ruotato" - in altre parole, spostato - mentre l'applicazione è in esecuzione. WRT (r) syslogd, smetterà di scrivere su quel registro (penso che ci sia una giustificazione della sicurezza per questo). Il solito modo di gestirlo è dire a syslog di riavviarsi (e riaprire tutti i suoi file), motivo per cui vedrai una postrotatedirettiva nei file conf logrotate che inviano SIGHUP al demone syslog.


2
Se menzionerai syslog-nganche tu, avrai scritto tutto quello che c'è da dire sulla registrazione di Linux. Risposta eccellente.
Nils,

Ho imparato molto e ho più fonti da leggere. Grazie! Btw. Perché sarebbe male usare la registrazione del sistema per apache? E quali registri dovrei voler leggere?
erikbwork

@ erikb85 1) Principalmente perché apache genera molto output. Non ho dovuto configurare Apache da molto tempo, quindi non ricordo quanto sia flessibile WRT per inviare cose specifiche a syslog (ma immagino molto flessibile) 2) Log WRT che vuoi leggere, dai un'occhiata alla logica nel tuo /etc/rsyslog.conf. Ad esempio: spesso le cose al di sopra di una certa priorità andranno in /var/log/messages, e le cose al di sotto che andranno a finire /var/log/notice. Mi piace anche avere un registro che contenga tutto, il che comporta una sovrapposizione doppia e tripla, ma se li tieni ruotati non è un grosso problema.
Riccioli d'oro

Solo per confermare, rsyslognon è un wrapper demone in giro logrotate, giusto? Perchè così ?
Thomas,

@Thomas Eseguono scopi diversi, sebbene (r) syslog potrebbe implementare la rotazione per risparmiare la necessità di logrotate. Tuttavia, averli separati significa che è possibile utilizzare logrotate su cose diverse dai file syslog.
Riccioli d'oro,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.