Très gros fichiers journaux, que dois-je faire?

36

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

Aujourd'hui, j'ai reçu un message système concernant l' /varespace très faible .

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

Après examen, je constate que certains fichiers journaux de la base de données /var/logsont devenus très volumineux . Pour être précis, ls -lSh /var/logdonne,

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 constater, les deux premiers sont les fautifs. Je suis un peu surpris de savoir pourquoi ces fichiers volumineux n'ont pas été pivotés.

Donc qu'est ce que je devrais faire? Supprimez simplement ces fichiers puis redémarrez? Ou optez pour 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 rien quelques mois en arrière après un crash de disque dur.

Maintenant, comme indiqué dans cette réponse , j’ai d’abord vérifié les fichiers journaux incriminés tail, sans surprise. Ensuite, pour une inspection plus approfondie, j'ai exécuté ce script à partir de la 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 pris plusieurs heures. La sortie était dans la ligne 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/sda3est mon répertoire personnel. Comme nous pouvons le trouver,

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

Pourquoi un processus voudra-t-il écrire au-delà de la limite n'entre pas dans le cadre de ma compréhension? Peut-être que je voudrai poser une question différente dans ce forum si cela continue même après une mise à jour du système.)

Ensuite, à partir de cette réponse (vous pouvez vérifier ceci pour une compréhension plus profonde), j’ai exécuté,

sudo su -
> kern.log
> syslog

Maintenant, ces fichiers n'ont aucune taille. Le système fonctionne correctement avant et après un redémarrage.

Je regarderai ces dossiers (ainsi que d’autres) dans les prochains jours et ferai un rapport
s’ils se comportent de manière inacceptable.

Pour terminer, les fichiers incriminés ( kern.loget syslog) sont configurés pour faire l'objet d'une rotation, ainsi que l'inspection des fichiers ( grepaidés) dans les /etc/logrotate.d/émissions.

MISE À JOUR 2

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

Masroor
la source
2
Y at-il quelque chose dans ces fichiers de log qui donne une idée de la raison pour laquelle ils sont si gros? Supprimez et redémarrez, puis surveillez-les pour voir s'ils croissent de manière exponentielle.
Douggro
@douggro En effet, il y en a. S'il vous plaît voir ma mise à jour à la question.
Masroor

Réponses:

43

Supprimez simplement ces fichiers puis redémarrez?

Non. Videz-les mais n'utilisez pas rmcar cela pourrait planter quelque chose pendant que vous tapez la touchcommande pour le recréer.

Méthode la plus courte:

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

Si ce n'est pas la racine, il faudra sudo. Tiré d'une autre réponse sur AU.

AVANT DE FAIRE QUE. Faites un tail {logfile}et vérifiez s'il y a une raison pour qu'ils soient si gros. À moins que ce système ne date de plusieurs années, il ne devrait y avoir aucune raison à cela et résoudre le problème vaut mieux que de laisser cela se poursuivre.

Kern.log et syslog ne devraient normalement pas être aussi gros. Mais comme je l’ai dit: si ce système fonctionne pendant des années et des années, il est peut-être normal que les fichiers soient simplement effacés.

Et pour l'empêcher de devenir aussi gros à l'avenir: la configuration logrotate. Il est assez simple et compressera le fichier journal quand il deviendra plus grand que la taille que vous avez définie.


Autre chose: si vous ne voulez pas supprimer le contenu, vous pouvez compresser les fichiers en les compressant ou en les compressant. Cela vous donnera des fichiers probablement 10% de ce qu'ils sont maintenant. C'est-à-dire s'il y a encore de la place sur le disque pour le faire.

Rinzwind
la source
3
wtmp: Command not foundDe quel paquet s'agit-il?
Janus Troelsen
/ var / log / wtmp n'est pas une commande mais un fichier journal. Où ma réponse indique-t-elle que vous pouvez exécuter wtmp? ;-)
Rinzwind
3
Je pensais >être une invite et j'ai essayé "lastlog" et cela a fonctionné. J'ai donc supposé que j'avais bien compris: P
Janus Troelsen
Ce problème continue de m'arriver. J'utilise Ubuntu 16.04. Pourriez-vous dire ce qui semble bien sur cela? Merci d'avance!
Gayan
4
Cette réponse ne décrit pas correctement ce que vous êtes censé faire avec lastlog, wtmp, dpkg.log, kern.log et syslog.
Tor Klingberg
20

Il est probablement utile d’essayer d’établir ce qui remplit le ou les journaux, soit en les examinant simplement visuellement à l’aide de la commande lessou.tail

tail -n 100 /var/log/syslog

ou si les lignes en cause sont trop profondément enfouies pour 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

(Remarque: cela peut prendre un certain temps, étant donné la taille des fichiers) qui tentera de supprimer les horodatages, puis comptera les messages les plus fréquents.

Steeldriver
la source
10

Ma méthode pour nettoyer les fichiers journaux du système est la suivante. Les étapes 1 et 2 sont facultatives, mais vous devez parfois 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. Facultatif: Utilisez Gzip sur la copie du journal

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

    cat /dev/null > file.log
    

Et nous utilisons pour cela les journaux (uniquement sur plusieurs serveurs) logrotate et un script hebdomadaire exécuté par tous les fichiers avec * .1 (ou la rotation suivante) compressés par gzip.

zorbon.cz
la source
1
C'est la voie à suivre avec Ubuntu 18.04.
Luís de Sousa
Cela devrait être la réponse acceptée. Lorsque les journaux se remplissent rapidement comme cela (malgré logrotate), quelque chose ne va pas et vaut la peine de creuser plus profondément
Sudip Bhandari
4

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

$ sudo apt-get install busybox-syslogd

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

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

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

omluce
la source
3
Que fait exactement ce paquet et comment fonctionne cette solution?
Aaron Franke
Je suis dubitatif à propos de cet article car ces fichiers n'auraient pas la chance de devenir volumineux en un jour. Je vais donc attendre jusqu'à ce que d'autres personnes me parlent de ce programme.
SDsolar