Système : format de date dans dmesg

de | 2017-09-22

Une astuce dédiée à ceux d’entre vous qui cherchent à établir une ligne temporelle lors des incidents.

Les journaux d’application sont souvent horodatés de manière à être lisibles par des humains ( espérons que ça dure ).

Par exemple, une ligne PostgreSQL :


2017-08-18 15:08:50 CEST [12766]: [3-1] app=[unknown],user=dumbo,db=THEDB,client=10.10.10.10(99999) LOG:  disconnection: session time: 0:00:00.015 user=dumbo database=THEDB host=10.10.10.10 port=99999

Propre. Net. Compréhensible.

Autre exemple, Cassandra :


ERROR [CompactionExecutor:5771] 2017-08-16 10:52:42,707 CassandraDaemon.java:229 - Exception in thread Thread[CompactionExecutor:5771,1,main]
org.apache.cassandra.io.sstable.CorruptSSTableException: Corrupted: /data/cassandra/chose/truc-09e4d05cd7e13887a093f576c93437bc/chose-truc-ka-1951-Data.db

Pareil. Très clair. Comment ? Un bloc corrompu ? Ouiiiii, nous avons vu… Rien de grave.

Ça arrive.

Mais pour investiguer plus en profondeur, il faut également regarder le log système (/var/log/messages sous Linux) ou faire appel à la commande « dmesg », plus rapide. Et accessible à tous les utilisateurs.

Problème : elle n’a pas le même format d’horodatage.

La preuve :


[12742436.651168] nfs: server 192.168.89.150 OK
[15470664.434519] [sched_delayed] sched: RT throttling activated

Pour obtenir un affichage humainement agréable, il faut demander la version « ctime » et, pour les esthètes, « colorisée » :

dmesg --ctime --color
Exemple de ligne agréablement humaines

Exemple de ligne agréablement humaines

Note : franchement, ce n’était pas la peine de lancer Gimp pour flouter des adresses locales mais, que voulez-vous, c’est une bonne habitude à prendre dès qu’il s’agit d’IP…

Vous vous demandez sûrement – attentifs comme vous l’êtes – quelle est la différence entre /var/log/messages et « dmesg.

Ils ne contiennent pas le même genre d’informations : « /var/log/messages » contient les messages des services et daemons qui sont configurés pour écrire dedans. « dmesg » affiche les messages de l’espace du noyau. C’est un buffer de taille fixe dont les lignes les plus anciennes sont écrasées par celles plus récentes. Vous y trouverez les messages remontés par les « facilities », dont les pilotes, et donc les messages concernant les problèmes matériels.

Pour conclure et être complet, sachez que les messages concernant le démarrage de la machine sont conservés dans un fichier spécifique : /var/log/dmesg . Ainsi, aucune information n’est perdue si le buffer se trouve saturé après démarrage. Vous pouvez lire le fichier avec la commande :


dmesg --file=/var/log/dmesg -H

« -H » étant un alias pour améliorer la présentation.

Des problèmes ? des questions ? Exprimez-vous ! Les commentaires sont ouverts. Coquilles et fautes de grammaires sont notre lot quotidien : signalez-les nous à m.capello@dbsqware.com