lernst du etwas über generelles logging / logrotation unter linux?

13

Angenommen, neben den Apache-Webserver-Protokollen hatte ich auf keinem Betriebssystem Kontakt zu (professionellen) Protokollen. Obwohl ich einige Grundlagen verstehe, ist die Protokollierung insgesamt ein ziemlich neues Thema. Im Moment scheint die Investition, dieses Thema vollständig zu lernen, ziemlich groß zu sein, aber ich weiß noch nicht einmal, ob es sich überhaupt lohnt, mehr als die abstraktesten Konzepte zu kennen.

Welche Ressourcen würden Sie vorschlagen, wenn jemand in dieser Situation etwas über Protokollierung lernen möchte (Lernprogramme, Manpages, Bücher)?

Welche Protokolle sollte ein normaler Linux-Benutzer täglich / monatlich lesen? Ist die Annahme überhaupt richtig, dass sie für die menschliche Lesbarkeit geschrieben wurden, oder werden sie allgemein von anderen Tools ausgewertet und verwendet?

Was sollte der normale * nix-Benutzer und Softwareentwickler über diese Protokolle wissen?

Was müssen Sie über die Protokollrotation wissen, wenn nicht erwartet wird, dass Sie professionelle Webserver mit einer großen Anzahl von Ereignissen verwalten?

erikbwork
quelle
Stört es Sie, wenn ich (oder Sie) den Titel so bearbeite, dass er "unter Linux" statt "unter Ubuntu" lautet, da dies im Wesentlichen dieselbe Frage ist (siehe meine Antwort)? Auf diese Weise haben wir seltener geschlossene doppelte Fragen zum Thema "Logging auf Arch lernen", "Logging auf CentOS lernen" usw.
Goldlöckchen
Ich habe nichts gegen solche Änderungen, solange die Antworten gut sind :)
Erikbwork

Antworten:

18

[Dies wurde einige Jahre vor der weitverbreiteten Einführung von Journald auf systemd-Systemen geschrieben und berührt es nicht. Derzeit (Ende 2018) werden sowohl Journald als auch (R) Syslog, wie unten beschrieben, auf Distributionen wie Debian verwendet. Auf anderen Systemen müssen Sie möglicherweise rsyslog installieren, wenn Sie es nebeneinander verwenden möchten, aber die Integration mit journald ist unkompliziert.]

Ich werde die Protokollierung in Bezug auf Ubuntu nicht besonders diskutieren, da das Thema für Linux im Allgemeinen standardisiert ist (und ich glaube, dass das meiste oder alles, was ich zu sagen habe, auch für jeden Geschmack gilt * nix, aber nicht nimm mein Wort dafür). Ich werde auch nicht viel über das "Lesen von Protokollen" sagen, außer diese Frage zu beantworten:

Ist die Annahme überhaupt richtig, dass sie für die menschliche Lesbarkeit geschrieben wurden, oder werden sie allgemein von anderen Tools ausgewertet und verwendet?

Ich denke, das hängt von der Anwendung ab, aber im Allgemeinen sollten sie, zumindest in Bezug auf das, was in syslog (siehe unten) enthalten ist, für den Menschen lesbar sein. "Sinnvoll für mich" ist ein anderes Thema, lol. Sie können jedoch auch so strukturiert sein, dass sie für bestimmte Zwecke einfacher mit Standardwerkzeugen (grep, awk usw.) analysiert werden können.

Zunächst gibt es einen Unterschied zwischen Anwendungen, die ihre eigene Protokollierung durchführen, und Anwendungen, die den Systemlogger verwenden. Apache ist standardmäßig das erstere, obwohl es für das spätere konfiguriert werden kann (was meines Erachtens die meisten Leute als unerwünscht erachten). Anwendungen, die ihre eigene Protokollierung durchführen, können dies in beliebiger Weise unter Verwendung eines beliebigen Speicherorts für die Datei (en) tun. Daher gibt es nicht viel zu sagen. Der Systemlogger wird allgemein als bezeichnet syslog.

Syslog

"Syslog" ist wirklich ein Standard , der mit einem Dämonprozess implementiert wird, der allgemein als syslogd bezeichnet wird (d ist für Dämon!). Der vorherrschende Syslog-Daemon, der derzeit unter Linux verwendet wird, einschließlich Ubuntu, ist rsyslogd. Rsyslogd kann viel, aber wie in den meisten Distributionen standardmäßig konfiguriert, emuliert es ein traditionelles Syslog, das die Inhalte in reine Textdateien einsortiert /var/log. Möglicherweise finden Sie Dokumentation dazu in /usr/share/doc/rsyslog-doc-[version](Vorsicht, es gibt auch eine /usr/share/doc/rsyslog-[version], aber das sind nur Hinweise aus dem Quellpaket wie NEWSund ChangeLog). Wenn es da ist, ist es HTML, aber Stack Exchange erlaubt das Einbetten lokaler Dateilinks nicht:

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

Sie könnten also versuchen, das zu kopieren. Wenn es nicht vorhanden ist, ist es möglicherweise Teil eines separaten Pakets, das nicht installiert ist. Fragen Sie Ihr Verpackungssystem ab (z apt-cache search rsyslog | grep doc. B. ).

Die Konfiguration befindet sich in /etc/rsyslog.conf, hat eine Manual-Seite, man rsyslog.confobwohl die Manual-Seite zwar eine gute Referenz darstellt, als Einführung jedoch möglicherweise weniger durchdringbar ist. Glücklicherweise stimmen die Grundlagen der Datei rsyslog.conf mit denen der traditionellen Datei syslog.conf überein, für die es zahlreiche Einführungen und Tutorials gibt. Dieser zum Beispiel; was Sie wollen sich von dem wegzunehmen, während bei Ihrem örtlichen rsyslog.conf Peering, ein Verständnis ist Einrichtungen und Prioritäten ( „Priorität“ wird manchmal als loglevel), da diese Teil des oben genannten Syslog-Standards sind. Der Grund, warum dieser Standard wichtig ist, ist, dass rsyslog seine Inhalte tatsächlich über den Kernel erhält und was der Kernel implementiert, der Standard ist.

In Bezug auf die $Anweisungen in rsyslog.conf sind diese rsyslog-spezifisch. Wenn Sie dieses optionale Dokumentpaket installieren, finden Sie eine Anleitung dazu in rsyslog_conf_global.html.

Viel Spaß ... wenn Sie neugierig sind, wie Anwendungen den Systemlogger verwenden, schauen Sie sich man loggerund an man 3 syslog.

Protokollrotation

Das normative Mittel zum Rotieren von Protokollen ist über ein Tool namens logrotate(und es gibt ein man logrotate). Die normative Methode für die Verwendung von logrotate ist der Cron-Daemon. Dies muss jedoch nicht unbedingt so erfolgen. Wenn Sie beispielsweise dazu neigen, Ihren Desktop täglich auszuschalten, können Sie dies auch nur einmal beim Booten tun, bevor syslog startet . offensichtlich, nachdem das Dateisystem gemountet ist (rw).

Es gibt eine gute Einführung in logrotate hier . Beachten Sie, dass logrotate nicht nur für Syslog-Inhalte gedacht ist, sondern für alle Dateien verwendet werden kann. Die Basiskonfigurationsdatei ist /etc/logrotate.conf, aber da die Konfiguration eine "include" -Direktive hat, werden die meisten Daten in einzelne Dateien im /etc/logrotate.dVerzeichnis geschrieben (hier steht d für Verzeichnis, nicht für Daemon; logrotate ist kein Daemon).

Bei der Verwendung von logrotate ist es wichtig zu berücksichtigen, wie eine Anwendung reagiert, wenn ihre Protokolldatei während der Ausführung der Anwendung "gedreht", dh verschoben wird. WRT (r) syslogd, es wird einfach aufhören, in dieses Protokoll zu schreiben (ich denke, es gibt eine Sicherheitsberechtigung dafür). Die übliche Vorgehensweise besteht darin, syslog anzuweisen, neu zu starten (und alle postrotatezugehörigen Dateien erneut zu öffnen). Aus diesem Grund wird in logrotate conf-Dateien eine Direktive angezeigt, die SIGHUP an den syslog-Daemon sendet.

Goldlöckchen
quelle
2
Wenn Sie auch erwähnen syslog-ng, haben Sie alles geschrieben, was es über Linux-Logging zu sagen gibt. Hervorragende Antwort.
Nils
Ich habe viel gelernt und habe mehr Quellen zum Lesen. Vielen Dank! Btw. Warum wäre es schlecht, die Systemprotokollierung für Apache zu verwenden? Und welche Protokolle soll ich lesen wollen?
Erikbwork
@ erikb85 1) Hauptsächlich, weil Apache eine Menge Output generiert. Ich musste Apache schon lange nicht mehr konfigurieren, daher kann ich mich nicht erinnern, wie flexibel WRT ist, um bestimmte Dinge an Syslog zu senden (aber ich denke sehr flexibel). 2) WRT-Protokolle, die Sie lesen möchten, sehen Sie sich an an der Logik in Ihrem /etc/rsyslog.conf. Zum Beispiel: Oft geht es um Dinge über einer bestimmten Priorität /var/log/messagesund darunter /var/log/notice. Ich mag es auch, ein Protokoll zu haben, das alles enthält, was zu doppelter und dreifacher Überlappung führt, aber wenn man sie gedreht hält, ist das keine große Sache.
Goldlöckchen
Nur um zu bestätigen, rsysloggibt es keinen Daemon-Wrapper logrotate, oder? Warum so?
Thomas
@Thomas Sie führen unterschiedliche Zwecke aus, obwohl (r) syslog eine Rotation implementieren könnte, um die Notwendigkeit einer Logrotation zu vermeiden. Wenn Sie sie jedoch getrennt haben, können Sie logrotate für andere Dinge als Syslog-Dateien verwenden.
Goldlöckchen