62 votes

Fichiers journaux très volumineux, que dois-je faire ?

( Cette question traite d'un problème similaire, mais il parle d'un fichier journal rotatif).

Aujourd'hui, j'ai reçu un message système concernant un niveau très bas /var espace.

Comme d'habitude, j'ai exécuté les commandes de la ligne de sudo apt-get clean ce qui n'a que légèrement amélioré le scénario. Ensuite, j'ai supprimé les fichiers journaux tournés, ce qui n'a apporté que très peu d'amélioration.

Après examen, je constate que certains fichiers journaux dans le répertoire /var/log est devenu très important. Pour être précis, ls -lSh /var/log donne,

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

Comme on peut le voir, les deux premiers sont les fautifs. Je suis un peu surpris que des fichiers aussi volumineux n'aient pas fait l'objet d'une rotation.

Alors, que dois-je faire ? Supprimer simplement ces fichiers et redémarrer ? Ou prendre des mesures plus prudentes ?

J'utilise Ubuntu 14.04.

MISE À JOUR 1

Pour commencer, le système n'a que quelques mois. J'ai dû installer le système à partir de zéro il y a quelques mois après un crash du disque dur.

Maintenant, comme conseillé dans cette réponse , J'ai d'abord vérifié les fichiers journaux incriminés en utilisant tail Ce n'est pas une surprise. Ensuite, pour une inspection plus approfondie, j'ai exécuté ce script à partir de l'interface de l'entreprise. même réponse .

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

Le processus a duré plusieurs heures. Le résultat était de l'ordre de ,

/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/sda3 est mon répertoire personnel. Comme on peut le constater,

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

La raison pour laquelle un processus veut écrire au-delà de la limite est en fait hors de portée de ma compréhension. Peut-être voudrai-je poser une autre question dans ce forum si ce problème est résolu. continue même après une mise à jour du système).

Ensuite, de cette réponse (vous pouvez vérifier este pour une compréhension plus approfondie), je exécuté,

sudo su -
> kern.log
> syslog

Maintenant, ces fichiers ont une taille nulle. Le système fonctionne bien avant et après un redémarrage.

J'examinerai ces dossiers (ainsi que d'autres) dans les prochains jours et je ferai un rapport à ce sujet.
ils ont un comportement hors norme.

En guise de conclusion, les deux fichiers incriminés ( kern.log y syslog ), sont réglés pour être tournés, comme l'inspection des fichiers ( grep aidé) à l'intérieur /etc/logrotate.d/ montre.

MISE À JOUR 2

Les fichiers journaux sont en fait tournés. On dirait que les grandes tailles ont été atteintes en un seul jour.

27voto

steeldriver Points 118154

Il vaut probablement la peine d'essayer d'établir ce qui remplit le(s) journal(s) - soit en les examinant simplement visuellement à l'aide de la commande less ou tail comando

tail -n 100 /var/log/syslog

ou si les lignes incriminées sont trop profondément enfouies pour que l'on puisse voir facilement ce qui se passe, quelque chose comme

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

(note : cela peut prendre un certain temps, compte tenu de la taille des fichiers) qui tentera de supprimer les horodatages et de compter les messages les plus fréquents.

14voto

zorbon.cz Points 1109

Ma méthode pour nettoyer les fichiers journaux du système est la suivante. Les étapes 1 et 2 sont facultatives, mais parfois vous avez besoin de vérifier les anciens journaux et la sauvegarde est parfois utile ;-)

  1. Facultatif : Copier le fichier journal

    cp -av --backup=numbered file.log file.log.old
  2. En option : Utiliser Gzip sur la copie du journal

    gzip file.log.old
  3. Utiliser /dev/null pour le fichier propre

    cat /dev/null > file.log

Et nous utilisons pour ces logs (uniquement sur plusieurs serveurs) logrotate et exécutons hebdomadairement par cron script qui compresse par gzip tous les fichiers avec *.1 (ou prochaine rotation).

7voto

omluce Points 79

J'ai installé Ubuntu 16.04 aujourd'hui et j'ai remarqué le même problème. Cependant, je l'ai corrigé avec busybox-syslogd. Ouaip ! Je viens d'installer ce paquet et le problème est résolu :)

$ sudo apt-get install busybox-syslogd

Après avoir installé ce paquet, réinitialisez syslog y kern.log :

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

J'espère que cette solution simple sera utile à d'autres personnes.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X