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?
Antworten:
[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:
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 wieNEWS
undChangeLog
). Wenn es da ist, ist es HTML, aber Stack Exchange erlaubt das Einbetten lokaler Dateilinks nicht: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.conf
obwohl 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 inrsyslog_conf_global.html
.Viel Spaß ... wenn Sie neugierig sind, wie Anwendungen den Systemlogger verwenden, schauen Sie sich
man logger
und anman 3 syslog
.Protokollrotation
Das normative Mittel zum Rotieren von Protokollen ist über ein Tool namens
logrotate
(und es gibt einman 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.d
Verzeichnis 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
postrotate
zugehörigen Dateien erneut zu öffnen). Aus diesem Grund wird in logrotate conf-Dateien eine Direktive angezeigt, die SIGHUP an den syslog-Daemon sendet.quelle
syslog-ng
, haben Sie alles geschrieben, was es über Linux-Logging zu sagen gibt. Hervorragende Antwort./etc/rsyslog.conf
. Zum Beispiel: Oft geht es um Dinge über einer bestimmten Priorität/var/log/messages
und 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.rsyslog
gibt es keinen Daemon-Wrapperlogrotate
, oder? Warum so?