lnav - Beobachten und Analysieren von Apache-Protokollen von einem Linux-Terminal aus
Vor weniger als zwei Wochen kompromittierte der Wannacry-Ransomware-Angriff Tausende von Computern und verursachte erhebliche Verluste für große Unternehmen und Einzelpersonen gleichermaßen. Dies, zusammen mit anderen weit verbreiteten Schwachstellen, die in den letzten Jahren entdeckt wurden (wie z. B. der Shellshock-Bug), unterstreicht, wie wichtig es ist, den Überblick über Ihre geschäftskritischen Systeme zu behalten.
Obwohl Schwachstellen häufig auf ein bestimmtes Betriebssystem oder eine bestimmte Softwarekomponente abzielen, kann die Untersuchung des Datenverkehrs, der in Ihrem Netzwerk ein- und ausgeht, eine wichtige Hilfe zum Schutz der Ressourcen sein, für die Sie verantwortlich sind.
Empfohlene Lektüre: 4 gute Open-Source-Tools zur Überwachung und Verwaltung von Protokollen für Linux
Wie Sie sicher bereits wissen, sind Systemprotokolle der erste Ort, an dem wir nach diesen Informationen suchen sollten. Um diese Aufgabe zu erleichtern, erklären wir in diesem Artikel, wie Sie lnav, einen erweiterten Protokolldatei-Viewer, installieren und verwenden. Mit lnav können Sie mehrere Arten von Protokollen gleichzeitig überwachen, mit Hotkeys durch die Datei navigieren und ein zusammengefasstes Histogramm der Zugriffe und Fehler erstellen. Lesen Sie also weiter!
Installieren und Starten von lnav unter Linux
Um lnav zu installieren, verwenden Sie das Paketverwaltungssystem Ihrer Distribution.
# aptitude install lnav [Debian and derivatives]
yum install epel-release lnav [CentOS 7 and similar]
Sobald die Installation abgeschlossen ist, starten Sie lnav, gefolgt von dem absoluten Pfad zu dem Verzeichnis, in dem sich die zu untersuchenden Protokolle befinden. Da dies typischerweise /var/log sein wird, gehen wir wie folgt vor:
# lnav /var/log/httpd
um die Protokolle des Apache-Webservers in einem CentOS 7 zu überprüfen:
Schauen wir uns kurz die Ausgabe an, die in der vorherigen Abbildung gezeigt wird:
- In der oberen rechten Ecke werden die Dateien angezeigt, die derzeit überprüft werden (access_log-20170519 und access_log). Wenn Sie nach unten oder oben scrollen, werden Sie feststellen, dass sich die Dateinamen ändern können, wenn Sie von einem zum anderen wechseln.
- 40x HTTP-Antworten (z. B. Nicht gefunden oder Verboten) werden fett angezeigt, während 20x Antworten in normalem Text angezeigt werden.
- IP-Adressen werden in fettem Grün angezeigt.
Das sieht doch gut aus, oder? Aber lassen Sie uns jetzt ein wenig tiefer graben, und wir werden sehen, dass lnav viel mehr bietet als eine hübsche farbige Ausgabe.
Wenn Sie neugierig sind, warum Fehlerprotokolle nicht angezeigt werden, finden Sie die Antwort weiter unten in diesem Artikel. Lesen Sie also weiter!
Ändern der Ausgabe mit Optionen und Hotkeys
Bevor wir fortfahren, listen wir einige Hotkeys auf, die es uns ermöglichen, uns leichter durch die Ausgabe von lnav und die verfügbaren Ansichten zu bewegen:
eoderE, um zur nächsten/vorherigen Fehlermeldung zu springen.woderW, um zur nächsten/vorherigen Warnmeldung zu springen.boderRücktaste, um zur vorherigen Seite zu wechseln.- Platz, um zur nächsten Seite zu wechseln.
goderG, um zum oberen/unteren Rand der aktuellen Ansicht zu gelangen.
Wenn Protokolle rotiert werden, können alte Dateien komprimiert werden (oder nicht), abhängig von den Einstellungen, die in den logrotate-Konfigurationsdateien angegeben sind. Um komprimierte Dateien in die Ausgabe aufzunehmen, starten Sie lnav wie folgt:
# lnav -r /var/log/httpd
Wenn Sie sich die Funktionsweise von lnav genauer ansehen möchten, können Sie das Programm mit der Option -d starten, gefolgt von einem Dateinamen, in den die Debug-Informationen geschrieben werden, wie folgt:
# lnav /var/log/httpd -d lnav.txt
In diesem Beispiel werden die Debug-Informationen, die beim Start von lnav generiert werden, in eine Datei mit dem Namen lnav.txt im aktuellen Arbeitsverzeichnis geschrieben.
Die ersten Zeilen dieser Datei sind in der folgenden Abbildung dargestellt:
Der hervorgehobene Text zeigt an, dass lnav die Datei mit den Standardformaten und insbesondere das access_log Format zum Parsen des Apache-Zugriffsprotokolls geladen hat. Darüber hinaus ermöglicht lnav das Parsen jeder Ausgabezeile, so dass die Ausgabe leichter zu visualisieren und zu verstehen ist.
Empfohlene Lektüre: GoAccess (ein Echtzeit-Apache- und Nginx)-Webserver-Protokollanalysator
Um diese Funktion zu verwenden, starten Sie das Programm und wählen Sie die Zeile aus, die Sie analysieren möchten. Die ausgewählte Zeile ist immer die Zeile am oberen Rand des Fensters. Drücken Sie dann p und Sie sollten das folgende Ergebnis sehen:
Um in den normalen Modus zurückzukehren, drücken Sie erneut p.
Wenn Sie nun eine Zusammenfassung der Protokolle nach Datum und Uhrzeit anzeigen möchten, drücken Sie i. Der hervorgehobene Text zeigt beispielsweise an, dass es am Montag, den 10. April, zwischen 22 und 23 Uhr 37 HTTP-Anfragen gab, von denen 14 zu Fehlern führten.
Nachdem Sie ein potenzielles Problem basierend auf dem Histogramm wie oben gezeigt identifiziert haben, können Sie i drücken, um die Ansicht zu verlassen und es mit dem Parser genauer zu untersuchen, wie zuvor erläutert. Sie können auch die integrierten SQL-Funktionen verwenden, indem Sie ein Semikolon eingeben und eine Standardabfrage schreiben. Führen Sie beispielsweise die folgenden Schritte aus:
;.schema
, um die verfügbaren Tabellen im Datenbankschema anzuzeigen. Nachdem wir die richtige Tabelle (in unserem Fall access_log) identifiziert haben, drücken wir q und verwenden dann die folgende Abfrage, um alle verfügbaren Informationen zu Anforderungen zurückzugeben, die von 195.154.230.31 kommen:
;SELECT * FROM access_log WHERE c_ip='195.154.230.31'
Beachten Sie, dass wir die Ergebnisse auch nach log_time hätten filtern können. Der Punkt ist, fügen Sie ein wenig SQL hinzu und der Himmel ist die Grenze dessen, was Sie mit lnav tun können.
Apache-Standardprotokollformate
Viele Log-Formate werden standardmäßig mit lnav geladen und somit ohne unser Zutun geparst. Sie können die Liste im Abschnitt Protokollformate in der offiziellen Dokumentation anzeigen.
Standardformate werden in ~/.lnav/formats/default/default-formats.json.sample angegeben, und andere können ~/.lnav/formats mit der Erweiterung .json hinzugefügt werden.
Die Bearbeitung dieser Dateien erfordert jedoch ein gewisses Maß an Vertrautheit mit JSON (Javascript Object Notation) und mit der PCRE-Bibliothek (Perl-Compatible Regular Expressions).
Warum hat lnav also die Apache-Fehlerprotokolldateien nicht angezeigt? Der Grund dafür ist, dass diese Protokolle nicht mit regulären Ausdrücken in den vorhandenen Formatdateien übereinstimmen und daher als reguläre Textdateien (d. h. Dateien ohne ein bestimmtes Protokollformat) behandelt werden.
Empfohlene Lektüre: So überwachen Sie die Auslastung des Apache-Webservers und Seitenstatistiken
Wie bereits erwähnt, können Sie Ihre eigenen Formate erstellen, sobald Sie zumindest einigermaßen mit JSON und PCRE vertraut sind. Dies kann sich beispielsweise als nützlich erweisen, wenn Sie benutzerdefinierte Apache-Protokolle definiert haben.
Zusammenfassung
Obwohl wir das Apache-Zugriffsprotokoll verwendet haben, um die Verwendung von lnav zu demonstrieren, denken Sie daran, dass es mehrere andere Arten von Protokollen gibt, die mit diesem Tool angezeigt und analysiert werden können. Wenn das Tool ein bestimmtes Protokoll nicht erkennt, können Sie zusätzliche Formate erstellen und diese gemäß den hier angegebenen Anweisungen installieren.
Haben Sie Fragen oder Anmerkungen zu diesem Artikel? Wie immer können Sie uns dies über das untenstehende Formular mitteilen. Wir freuen uns auf Sie!




