ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

Logdateien

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/settings.png Logdateien sind ein wichtiger Teil eines jeden Linux-Systems. Viele Programme, erst recht alle Dienste und das System selbst, schreiben Logdateien. In diesen Logs kann man Fehler des Systems finden, Probleme von Diensten erkennen oder einfach nur verfolgen, was das System alles im Hintergrund macht.

Üblicherweise findet man die Logs im Verzeichnis /var/log eines Linux-Systems. Manche Dienste, die z.B. mehrere Logdateien schreiben, benutzen Unterverzeichnisse wie z.B. Samba mit /var/log/samba/.

Logdateien sind immer Textdateien. Man kann sie mit jedem beliebigen Texteditor oder Dateibetrachter ansehen. Die Desktopumgebungen bringen Werkzeuge mit, um die Logs mit etwas Komfort zu analysieren. Auch in einem Terminal können Logs sehr effektiv betrachtet werden.

Hinweis:

Ab Ubuntu 11.04 sollte insbesondere beim Upgrade älterer Systeme auch dieser Abschnitt beachtet werden.

Logs

Hier sind die Logdateien und ihre Funktion aufgeführt, die auf einem Ubuntu-System vorhanden und relevant für den Benutzer sind. Natürlich gibt es in /var/log deutlich mehr Logdateien, wenn Dienste nachinstalliert wurden.

Logdatei Bescheibung
acpid Ausgaben der Energieverwaltung.
auth.log Alle Versuche sich am System anzumelden werden hier protokolliert. Egal ob sich User jetzt an einer Konsole oder über ssh anmelden oder versucht wird per sudo Root-Rechte zu erlangen.
cups Log des Common Unix Printing Services. Druckerprobleme? Hier gibt es mehr zu sehen, insbesondere wenn man in der /etc/cups/cupsd.conf "LogLevel debug" setzt.
daemon.log Viele Dienste schreiben hier ihre Meldungen rein, z.B. "mountd" oder "squid". Achtung: Nur bis Ubuntu 10.10
dmesg Letzte Meldungen des Kernels. Die Informationen stammen aus einem Ringpuffer, so dass alte Meldungen überschrieben werden. Die Datei kern.log enthält alle Meldungen.
dpkg Log der Paketverwaltung. Hier findet man, wann welches Programm installiert, gelöscht oder aktualisiert wurde.
kern.log Meldungen des Kernels, z.B. Meldungen, die aus iptables-Regeln heraus entstehen.
mail* Hat man einen Mailserver im System installiert, so werden hier die Logs geschrieben.
messages Allgemeine Informationen des Systems. Zusammen mit dem syslog eine der wichtigsten Logdateien des Systems. Achtung: Nur bis Ubuntu 10.10
mysql Das Logfile des MySQL Datenbankservers.
postgresql Verzeichnis der Logs der Datenbank Postgresql.
pppstatus Verzeichnis mit monatlichen Logs des pppstatus zur Protokollierung von Internetverbindungen.
samba Die Logs des Samba Servers.
syslog Die Ausgabe des syslogd. Eine Alternative zu Syslog ist das um einige Funktionen erweiterte syslog-ng
user.log Ausgabe von Prozessen, die von Usern gestartet wurden. Achtung: Nur bis Ubuntu 10.10
Xorg.0.log Ausgabe des XServers.

GNOME

./systemprotokollbetrachter.png Unter GNOME gibt es den Systemprotokollbetrachter, der den Benutzer dabei unterstützen kann, Logdateien des Systems effektiv zu betrachten. Das Programm liegt im Paket

  • gnome-utils

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install gnome-utils 

sudo aptitude install gnome-utils 

ist bei einer Standard-Installation aber bereits vorhanden. Es kann über "System -> Systemverwaltung -> Systemprotokoll" gestartet oder als gnome-system-log aufgerufen werden. In der linken Baumansicht findet man alle Logdateien des Systems aufgelistet. Unter der Baumansicht kann man noch das Datum des gesuchten Logs anwählen. Im zentralen Fenster wird das ausgewählte Log dargestellt.

Ist die Überwachungsfunktion unter "Ansicht -> Überwachen" aktiviert, so werden neue Einträge in das Log an das Ende fettgedruckt angehängt. Über "Ansicht -> Filter" kann das Log schließlich nach bestimmten Einträgen filtern.

KDE

./ksystemlog.jpg Auch KDE bringt ein Werkzeug zum Betrachten der Logdateien mit, das Programm

  • ksystemlog

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install ksystemlog 

sudo aptitude install ksystemlog 

Es wird ebenfalls bei einer Standard-Installation von KDE installiert und man findet es unter "K-Menü -> System -> KSystemLog (System Logs Viewer)". Unter "Protokolldateien" kann das zu betrachtende Log ausgewählt und über die Filterzeile nach bestimmten Begriffen gesucht werden. Im Gegensatz zum Systemprotokollbetrachter von GNOME zeigt KSystemLog nur vorgegebene Logs an. Möchte man weitere Logdateien auswählen können, so muss man diese von Hand über "Einstellungen -> KSystemLog einrichten" hinzufügen. Am besten fügt man die Logs von selbst installierten Diensten zu den "Dienste-Protokollen" hinzu.

Terminal

Hat man einen Server ohne graphische Oberfläche installiert, so hat man natürlich keine graphischen Werkzeuge zur Verfügung. Logs lassen sich dennoch auch sehr komfortabel in einer Konsole betrachten.

less

less ist ein Textbetrachter für das Terminal. less kann jede Textdatei ausgeben. Mit den Tasten bzw. kann man im Log hoch und runter scrollen oder mit Bild ↑ bzw. Bild ↓ gleich seitenweise im Log hoch oder runter springen.

# Allgemein
less <logfile>
# Beispiel
less /var/log/syslog 

Möchte man im Log vorwärts suchen, so kann man mit der Eingabe von

/Suchbegriff 

also + 7 und danach das Suchwort, nach einem Begriff suchen. Möchte man zum nächsten Treffer der Suche springen, drückt man die Taste N , zum vorangehenden Treffer gelangt man mit + N . Möchte man im Log rückwärts suchen, so kann man mit der Eingabe

?Suchbegriff 

also + ß und danach das Suchwort, nach einem Begriff suchen. Möchte man zum nächsten Treffer der Suche springen drückt man wieder N . Wenn man die Logdatei "verfolgen" möchte, so kann mit + F die Anzeige der Logdatei ständig aktualisieren lassen, so dass Zeilen, die hinzukommen, automatisch angezeigt werden.

zless

zless ist eine Kombination aus less und gzip. So lassen sich auch komprimierte Dateien unmittelbar lesen.

(-), # Allgemein
zless <logfile.gz>
# Beispiel
zless /var/log/syslog.1.gz 

tail

tail ist ebenfalls ein Programm, um Textdateien in einem Terminal anzuzeigen. Es ist jedoch darauf ausgelegt, die letzten Zeilen einer Datei auszugeben. Es ist also ideal, um die aktuellsten Informationen aus einem Log auszugeben.

# Allgemein
tail <logfile>
# Beispiel
tail /var/log/syslog 

Richtig interessant wird tail erst, wenn es darum geht, Änderungen an einer Logdatei zu verfolgen. Mit den Optionen -f (um Änderungen auszugeben) und -n 0 (dies legt die Anzahl der letzten Zeilen, die beim Aufruf von tail ausgegeben werden auf Null fest) werden nur die Zeilen ausgegeben, die nach dem Aufruf des Befehls zum Log hinzugefügt werden.

Man kann dies gut beobachten. Gibt man z.B. in einem Terminal den Befehl

tail -f -n 0 /var/log/syslog 

ein und steckt anschließend z.B. einen USB-Speicherstick am Rechner an:

Oct 15 00:15:41 isleofskye kernel: [17214570.744000] usb 4-5: new high speed USB device using ehci_hcd and address 4 
Oct 15 00:15:41 isleofskye kernel: [17214570.876000] usb 4-5: configuration #1 chosen from 1 choice
Oct 15 00:15:41 isleofskye kernel: [17214570.876000] scsi4 : SCSI emulation for USB Mass Storage devices
Oct 15 00:15:41 isleofskye kernel: [17214570.880000] usb-storage: device found at 4
Oct 15 00:15:41 isleofskye kernel: [17214570.880000] usb-storage: waiting for device to settle before scanning
Oct 15 00:15:46 isleofskye kernel: [17214575.880000] usb-storage: device scan complete
Oct 15 00:15:46 isleofskye kernel: [17214575.880000]   Vendor: USB007    Model: mini-USB2TX       Rev: 100 
Oct 15 00:15:46 isleofskye kernel: [17214575.880000]   Type:   Direct-Access      
...

MultiTail

./multitail.png MultiTail {en} ermöglicht es, gleichzeitig in einem Terminalfenster mehrere Logdateien im Auge haben. Das Programm lässt sich direkt aus den Paketquellen über das Paket

  • multitail (universe [2])

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install multitail 

sudo aptitude install multitail 

installieren [1]. Mit dem Programm kann man mehrere Logdateien in beliebigen Zeilen oder Spalten in einem Terminalfenster anzeigen. So behält man auch bei mehreren Logs die Übersicht.

# Drei Logdateien untereinander in einer Spalte darstellen
multitail logdatei1.log logdatei2.log logdatei3.log
# Zwei Logdateien nebeneinander in zwei Spalten
multitail -s 2 logdatei1.log logdatei2.log 

ccze

Zur besseren Übersichtlichkeit kann man sich Logdaten mit dem Befehl ccze aus dem Paket

  • ccze (universe)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install ccze 

sudo aptitude install ccze 

auch farbig oder sogar HTML-formatiert anschauen.

tail -f -n 0 /var/log/syslog | ccze 

grep

grep ist ein Werkzeug, um aus einer Textausgabe bestimmte Zeilen oder Ausdrücke herauszufiltern. Das Programm kann man mit einer Pipe auch mit der Ausgabe eines anderen Programms kombinieren und auch mit regulären Ausdrücken kompliziertere Suchen ausführen.

Als Beispiel werden zwei Anwendungen aufgeführt. Dies verdeutlicht, dass man mit grep sehr einfach lange Logdateien nach den wichtigen Ausgaben filtern kann.

Beispiel 1

tail -f - n 0 /var/log/syslog | grep pwc 
Oct 14 14:32:51 isleofskye kernel: [17179594.204000] pwc Philips webcam module version 9.0.2-unofficial loaded. 
Oct 14 14:32:51 isleofskye kernel: [17179594.204000] pwc Supports Philips PCA645/646, PCVC675/680/690, PCVC720[40]/730/740/750 & PCVC830/840.
...

Beispiel 2

less /var/log/syslog | grep -E '(HIGHMEM|LOWMEM)' 
Oct 13 13:14:22 isleofskye kernel: [17179569.184000] 127MB HIGHMEM available. 
Oct 13 13:14:22 isleofskye kernel: [17179569.184000] 896MB LOWMEM available.
Oct 14 12:53:32 isleofskye kernel: [17179569.184000] 127MB HIGHMEM available.
Oct 14 12:53:32 isleofskye kernel: [17179569.184000] 896MB LOWMEM available.
...

zgrep

zgrep ist eine Kombination aus grep und gzip. So lassen sich komprimierte Dateien unmittelbar durchsuchen.

# Allgemein
zgrep <Suchbegriff> <logfile.gz>
# Beispiel
zgrep Error /var/log/syslog.1.gz 

Logrotate

Damit Logdateien nicht immer weiter wachsen und irgendwann mal die komplette Festplatte belegen, wird bei der Installation eines Linux Systems meistens auch gleich der Dienst "logrotate" installiert. Dies ist auch bei Ubuntu der Fall bzw. kann über das gleichnamige Paket nachgeholt werden.

Logrotate wurde entwickelt, um die Verwaltung von Logs zu vereinfachen. Der Dienst erlaubt es, automatisch Logs zu komprimieren, zu löschen oder per Mail zu verschicken. Logrotate kann dies täglich, wöchentlich, monatlich durchführen oder wenn eine Logdatei eine vorgegebene Größe überschreitet. Üblicherweise wird Logrotate einmal am Tag aktiv.

Am Beispiel des "Syslogs" kann man sehen, wie logrotate arbeitet. Schaut man sich die Dateien in /var/log an, die den Namen "syslog" tragen:

ls -al /var/log/syslog* 

so sieht man acht Dateien. Die aktuelle syslog, die unkomprimierte syslog.0 vom Vortag und die Syslogs der sechs Tage davor, die in der Zwischenzeit komprimiert wurden. Am achten Tag werden dann die Logs gelöscht.

-rw-r----- 1 root adm  82484 2006-10-15 00:29 syslog 
-rw-r----- 1 root adm 163497 2006-10-14 13:06 syslog.0
-rw-r----- 1 root adm  23503 2006-10-13 01:30 syslog.1.gz
-rw-r----- 1 root adm  36587 2006-10-12 11:18 syslog.2.gz
-rw-r----- 1 root adm  38361 2006-10-11 02:47 syslog.3.gz
-rw-r----- 1 root adm  97953 2006-10-10 17:53 syslog.4.gz
-rw-r----- 1 root adm  46201 2006-10-09 11:05 syslog.5.gz
-rw-r----- 1 root adm  35665 2006-10-06 17:21 syslog.6.gz

Hinweis:

Um genau zu sein, wird syslog nicht von Logrotate gepackt, sondern von einem Cronjob (sysklogd unter /etc/cron.daily/ bzw. /etc/cron.weekly/). Dies betrifft auch andere Dateien wie z. B. auth.log. Eine vollständige Liste kann man sich mit dem Befehl syslogd-listfiles -a [3] anzeigen lassen.

Gesteuert wird Logrotate über Dateien in /etc/logrotate.d. Als Beispiel wird hier das Rotieren des Logs des Anonymisier-Dienstes Tor erklärt.

/var/log/tor/*log { 
        daily                   # täglich
        rotate 5                # Behalte die letzten fünf Tage
        compress                # Komprimiere die alten Logs
        delaycompress           # Komprimiere die Daten, nachdem sie verschoben wurden
        missingok               # Falls ein Log nicht existiert, ignoriere es
        notifempty              # Leere Logdateien werden nicht rotiert
        sharedscripts           # Siehe Man-Page
        postrotate              # Führe nach dem Rotieren das folgende Skript aus
                /etc/init.d/tor reload > /dev/null
        endscript
}

Weiterführende Erklärungen findet man in der deutschen Man-Page zu Logrotate {de} .

Log-Konsole

Es ist möglich, den Inhalt der Datei syslog auf einer virtuellen Konsole auszugeben. Dann kann man jederzeit einen Blick ins Log werfen, ohne umständlich die Datei öffnen zu müssen. Es gibt mehrere Möglichkeiten, eine Log-Konsole einzurichten. Man kann den syslog-Daemon so konfigurieren, dass er Meldungen direkt in eine virtuelle Konsole schreibt oder einen Pager (z.B. less) auf einer Konsole laufen lassen. Letzteres hat den Vorteil, dass man scrollen und suchen kann.

Eine dritte Variante verwendet das Paket

  • console-log (universe)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install console-log 

sudo aptitude install console-log 

das automatisch eine Log-Konsole einrichtet. Standardmäßig werden das Postfix-Log auf Konsole 8 und das syslog auf Konsole 9 ausgegeben. Diese Einstellungen lassen sich in der Datei /etc/console-log.conf anpassen.

ttyrec

Manchmal kann es auch interessant sein, den Verlauf einer Terminalsitzung aufzuzeichnen. Dazu eignet sich z.B. ttyrec.

Problembehebung

Ubuntu 11.04

Aufgrund der Entscheidung von Canonical {en}, ab Ubuntu 11.04 Natty Narwhal unter anderem /var/log/messages nicht mehr weiter erstellen zu lassen, treten bei einem Upgrade auf Natty und/oder einem Übernehmen der GConf-Einstellungen Fehlermeldungen im Systemprotokollbetrachter auf. Diese rühren daher, dass dieser nach den alten Protokolldateien noch sucht, diese aber nicht mehr findet. Zur Abhilfe einfach ein Terminal öffnen[3]:

gconf-editor

Dort nach "/apps/gnome-system-log/" navigieren und den Schlüssel "logfiles" doppelklicken. Im sich öffnenden Fenster die Logdateien entfernen, die in der Fehlermeldung genannt werden.

Alternativ dazu kann die Ausgabesteuerung in der Datei /etc/rsyslog.d/50-default.conf geändert werden. Dort sind auch Beschreibungen für vor Ubuntu 11.04 Natty Narwhal erstellte Logdateien vorhanden und bei Bedarf aktivierbar.

Zugrundeliegender Dienst: Der Rsyslog-Dämon

Für das Erstellen der Logdateien ist der Dienst rsyslogd zuständig. Dieser wurde automatisch über das Paket rsyslog installiert. Seine wichtigsten System-Dateien sind:

  • /etc/default/rsyslog

  • /etc/init.d/rsyslog – Symlink zum Initskript

  • /etc/init/rsyslog.conf

  • /etc/rsyslog.conf

  • /etc/rsyslog.d/50-default.conf – Die zentrale Konfigurationsdatei

  • /usr/sbin/rsyslogd – Die Programmdatei

Den Rsyslog-Dämon temporär in den Debug-Modus versetzen

Manchmal – vor allem aber dann, wenn man einer eventuellen Fehlfunktion des Systems und/oder aber seiner Bestandteile auf die Spur kommen will – möchte man den Dienst rsyslogd zeitweilig etwas empfindlicher stellen. Dafür muss man zuerst den rsyslogd stoppen:

sudo service rsyslog stop 

Dann startet man den rsyslogd manuell im Debug-Modus:

sudo /usr/sbin/rsyslogd -dn 

In Folge dessen wird der Protokollant allerlei Debugmeldungen auf dem Terminal produzieren. Hat man dann endlich genug von dem ganzen Zinnober, so unterbreche man selbiges mit Strg + C und starte danach schließlich wieder den Rsyslog-Dämon:

sudo service rsyslog start 

ubuntuusers.local › WikiLogdateien