Sehr große Protokolldateien, was soll ich tun?

36

(In dieser Frage geht es um ein ähnliches Problem, es handelt sich jedoch um eine gedrehte Protokolldatei.)

Heute habe ich eine Systemmeldung bezüglich sehr wenig /varSpeicherplatz erhalten.

Wie üblich habe ich die Befehle ausgeführt, in deren Zeile sudo apt-get cleansich das Szenario nur geringfügig verbessert hat. Dann habe ich die gedrehten Logdateien gelöscht, was wiederum nur eine geringe Verbesserung brachte.

Bei der Überprüfung stelle ich fest, dass einige Protokolldateien in der /var/logsehr große geworden sind. Um genau zu sein, ls -lSh /var/loggibt,

total 28G
-rw-r----- 1 syslog            adm      14G Aug 23 21:56 kern.log
-rw-r----- 1 syslog            adm      14G Aug 23 21:56 syslog
-rw-rw-r-- 1 root              utmp    390K Aug 23 21:47 wtmp
-rw-r--r-- 1 root              root    287K Aug 23 21:42 dpkg.log
-rw-rw-r-- 1 root              utmp    287K Aug 23 20:43 lastlog

Wie wir sehen können, sind die ersten beiden die Beleidigenden. Ich bin leicht überrascht, warum so große Dateien nicht gedreht wurden.

Also was soll ich tun? Einfach diese Dateien löschen und dann neu starten? Oder umsichtiger vorgehen?

Ich benutze Ubuntu 14.04.

UPDATE 1

Das System ist zunächst nur einige Monate alt. Ich musste das System vor ein paar Monaten nach einem Festplattencrash von Grund auf neu installieren.

Nun, wie in dieser Antwort empfohlen , habe ich zuerst die fehlerhaften Protokolldateien mit überprüft tail, was dort keine Überraschung ist. Dann habe ich zur genaueren Betrachtung dieses Skript mit der gleichen Antwort ausgeführt .

for log in /var/log/{syslog,kern.log}; do 
  echo "${log} :"
  sed -e 's/\[[^]]\+\]//' -e 's/.*[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}//' ${log} \
  | sort | uniq -c | sort -hr | head -10
done

Der Vorgang dauerte mehrere Stunden. Die Ausgabe war in der Zeile von,

/var/log/syslog :
71209229  Rafid-Hamiz-Dell kernel:  sda3: rw=1, want=7638104968240336200, limit=1681522688
53929977  Rafid-Hamiz-Dell kernel:  attempt to access beyond end of device
17280298  Rafid-Hamiz-Dell kernel:  attempt to access beyond end of device
   1639  Rafid-Hamiz-Dell kernel:  EXT4-fs warning (device sda3): ext4_end_bio:317: I/O error -5 writing to inode 6819258 (offset 0 size 4096 starting block 54763121030042024)
       <snipped>

/var/log/kern.log.1 :
71210257  Rafid-Hamiz-Dell kernel:  attempt to access beyond end of device
71209212  Rafid-Hamiz-Dell kernel:  sda3: rw=1, want=7638104968240336200, limit=1681522688
   1639  Rafid-Hamiz-Dell kernel:  EXT4-fs warning (device sda3): ext4_end_bio:317: I/O error -5 writing to inode 6819258 (offset 0 size 4096 starting block 954763121030042024)

( /dev/sda3ist mein Heimatverzeichnis. Wie wir finden können,

lsblk /dev/sda
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 931.5G  0 disk 
├─sda1   8:1    0 122.1G  0 part /
├─sda2   8:2    0   7.6G  0 part [SWAP]
└─sda3   8:3    0 801.8G  0 part /home

Warum ein Prozess über das Limit hinaus schreiben möchte, liegt eigentlich außerhalb meines Verständnisses. Vielleicht möchte ich in diesem Forum eine andere Frage stellen, wenn dies auch nach einem System-Update so bleibt.)

Dann, aus dieser Antwort (Sie können dies für ein tieferes Verständnis überprüfen wollen ), führte ich aus,

sudo su -
> kern.log
> syslog

Diese Dateien haben jetzt die Größe Null. Das System läuft vor und nach einem Neustart einwandfrei.

Ich werde diese Dateien (zusammen mit anderen) in den nächsten Tagen ansehen und zurückmelden, falls
sie sich außerhalb der Reihe verhalten.

Als letzte Anmerkung werden beide fehlerhaften Dateien ( kern.logund syslog) gedreht, wie die Prüfung der Dateien ( grepHilfe) im Inneren /etc/logrotate.d/zeigt.

UPDATE 2

Die Protokolldateien werden tatsächlich gedreht. Sieht aus wie die großen Größen an einem einzigen Tag erreicht wurden.

Masroor
quelle
2
Gibt es irgendetwas in diesen Protokolldateien, das einen Hinweis darauf gibt, warum sie so groß sind? Löschen Sie sie, starten Sie sie neu und überwachen Sie sie, um festzustellen, ob sie exponentiell anwachsen.
Douggro
@douggro In der Tat gibt es. Bitte beachten Sie mein Update auf die Frage.
Masroor

Antworten:

43

Einfach diese Dateien löschen und dann neu starten?

Nein. Leeren Sie sie, aber verwenden Sie sie nicht rm da dies zu einem Absturz führen kann, während Sie den touchBefehl zum Neuerstellen eingeben .

Kürzeste Methode:

cd /var/log
sudo su
> lastlog
> wtmp
> dpkg.log 
> kern.log
> syslog
exit

Wenn nicht root wird es erfordern sudo. Entnommen aus einer anderen Antwort auf AU.

BEVOR SIE DAS TUN. Mach ein tail {logfile}und überprüfe, ob es einen Grund gibt, warum sie so groß sind. Solange dieses System nicht mehrere Jahre alt ist, sollte es keinen Grund dafür geben, und die Behebung des Problems ist besser, als es weitergehen zu lassen.

Sowohl kern.log als auch syslog sollten normalerweise nicht so groß sein. Aber wie gesagt: Wenn dieses System jahrelang läuft, kann es normal sein und die Dateien müssen nur gelöscht werden.

Und um zu verhindern, dass es in Zukunft so groß wird: Setup logrotate. Es ist ziemlich unkompliziert und komprimiert die Protokolldatei, wenn sie größer als die von Ihnen festgelegte Größe ist.


Eine andere Sache: Wenn Sie den Inhalt nicht löschen möchten, können Sie die Dateien komprimieren, indem Sie sie tarieren oder komprimieren. Damit haben Sie am Ende wahrscheinlich 10% der Dateien, die sie jetzt sind. Das ist, wenn noch Platz auf der Festplatte ist, um das zu tun.

Rinzwind
quelle
3
wtmp: Command not foundWelches Paket ist das?
Janus Troelsen,
/ var / log / wtmp ist kein Befehl, sondern eine Protokolldatei. Wo steht meine Antwort, die Sie wtmp ausführen können? ;-)
Rinzwind
3
Ich dachte, es >sei eine Eingabeaufforderung und habe "lastlog" ausprobiert, und es hat funktioniert. Daher ging ich davon aus, dass ich
Janus Troelsen
Dieses Problem passiert mir immer wieder. Ich benutze Ubuntu 16.04. Könntest du sagen, was das zu bedeuten scheint? Danke im Voraus!
Gayan
4
Diese Antwort beschreibt nicht angemessen, was Sie mit lastlog, wtmp, dpkg.log, kern.log und syslog tun sollen.
Tor Klingberg
20

Es lohnt sich wahrscheinlich, herauszufinden, was die Protokolle füllt - entweder indem Sie sie einfach mit dem Befehl lessoder visuell untersuchentail

tail -n 100 /var/log/syslog

oder wenn die beleidigenden Linien zu tief vergraben sind, um leicht zu sehen, was passiert, so etwas wie

for log in /var/log/{dmesg,syslog,kern.log}; do 
  echo "${log} :"
  sed -e 's/\[[^]]\+\]//' -e 's/.*[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}//' ${log} \
  | sort | uniq -c | sort -hr | head -10
done

(Hinweis: Bei so großen Dateien kann dies einige Zeit dauern.) Dadurch werden die Zeitstempel entfernt und die am häufigsten auftretenden Nachrichten gezählt.

Stahlfahrer
quelle
10

Meine Methode für saubere Systemprotokolldateien ist dies. Die Schritte 1 und 2 sind optional, aber manchmal müssen ältere Protokolle überprüft werden, und manchmal ist eine Sicherung hilfreich. ;-)

  1. Optional: Protokolldatei kopieren

    cp -av --backup=numbered file.log file.log.old
    
  2. Optional: Verwenden Sie Gzip für eine Kopie des Protokolls

    gzip file.log.old
    
  3. Verwenden Sie / dev / null für eine saubere Datei

    cat /dev/null > file.log
    

Und wir verwenden für diese Protokolle (nur auf mehreren Servern) logrotate und führen diese wöchentlich per cron-Skript aus, wobei alle Dateien mit * .1 (oder weiter gedreht) per gzip komprimiert werden.

zorbon.cz
quelle
1
Dies ist der Weg zu Ubuntu 18.04.
Luís de Sousa
Dies sollte die akzeptierte Antwort sein. Wenn sich die Protokolle so schnell füllen (trotz Logrotate), stimmt etwas nicht und es lohnt sich,
näher darauf einzugehen
4

Ich habe heute Ubuntu 16.04 installiert und das gleiche Problem festgestellt. Ich habe dies jedoch mit busybox-syslogd behoben. Jep! Ich habe gerade dieses Paket installiert und das Problem wurde behoben. :)

$ sudo apt-get install busybox-syslogd

Nachdem das Paket der Installation zurückgesetzt syslogund kern.log:

sudo tee /var/log/syslog /var/log/kern.log </dev/null

Ich hoffe, diese einfache Lösung ist nützlich für andere Leute in der Umgebung.

omluce
quelle
3
Was genau macht dieses Paket und wie funktioniert diese Lösung?
Aaron Franke
Ich bin über diesen Beitrag zweifelhaft, da diese Dateien an einem einzigen Tag keine Chance hätten, groß zu werden. Also werde ich warten, bis ich von anderen über dieses Programm höre.
SDsolar