Recherche de site Web

lnav - Observer et analyser les journaux Apache à partir d’un terminal Linux


Il y a moins de deux semaines, l’attaque du ransomware Wannacry a compromis des milliers d’ordinateurs, causant des pertes considérables aux grandes entreprises et aux particuliers. Cela, ainsi que d’autres vulnérabilités répandues découvertes ces dernières années (comme le bogue Shellshock), soulignent l’importance de rester au top de vos systèmes critiques.

Bien que les vulnérabilités ciblent souvent un système d’exploitation ou un composant logiciel spécifique, l’examen du trafic entrant et sortant de votre réseau peut être d’une aide précieuse pour protéger les actifs dont vous êtes responsable.

Suggéré pour lire : 4 bons outils de surveillance et de gestion des journaux open source pour Linux

Comme je suis sûr que vous le savez déjà, les journaux système sont le premier endroit où nous devrions chercher ces informations. Pour faciliter cette tâche, nous allons expliquer dans cet article comment installer et utiliser lnav, une visionneuse de fichiers journaux avancée. Avec lnav, vous pourrez surveiller plusieurs types de journaux simultanément, naviguer dans le fichier à l’aide de raccourcis clavier et générer un histogramme récapitulatif des accès et des erreurs. Alors continuez à lire !

Installation et lancement de lnav sous Linux

Pour installer lnav, utilisez le système de gestion de paquets de votre distribution.

# aptitude install lnav          [Debian and derivatives]
yum install epel-release lnav  [CentOS 7 and similar]

Une fois l’installation terminée, lancez lnav suivi du chemin absolu vers le répertoire où se trouvent les journaux à examiner. Comme il s’agit généralement de /var/log, faisons :

# lnav /var/log/httpd

pour inspecter les journaux du serveur Web Apache dans un CentOS 7 :

Examinons brièvement le résultat montré dans l’image précédente :

  • Le coin supérieur droit montre les fichiers en cours d’inspection (access_log-20170519 et access_log). En faisant défiler vers le bas ou vers le haut, vous remarquerez que les noms de fichiers peuvent changer au fur et à mesure que vous passez de l’un à l’autre.
  • Les réponses HTTP 40x (par exemple, Not Found ou Forbidden) sont affichées en gras, tandis que les réponses 20x sont affichées en texte normal.
  • Les adresses IP apparaissent en vert gras.

C’est certainement sympa, n’est-ce pas ? Mais creusons un peu plus maintenant, et nous verrons que lnav fournit bien plus qu’une sortie joliment colorée.

Si vous êtes curieux de savoir pourquoi les journaux d’erreurs ne sont pas affichés, vous trouverez la réponse plus loin dans cet article. Alors continuez à lire !

Modification de la sortie à l’aide d’options et de raccourcis clavier

Avant d’aller plus loin, listons quelques raccourcis clavier qui nous permettront de nous déplacer plus facilement dans la sortie de lnav et les vues disponibles :

  • e ou E pour passer au message d’erreur suivant/précédent.
  • w ou W pour passer au message d’avertissement suivant/précédent.
  • b ou Retour arrière pour passer à la page précédente.
  • Espace pour passer à la page suivante.
  • g ou G pour se déplacer vers le haut/le bas de la vue actuelle.

Lors de la rotation des journaux, les anciens fichiers peuvent être compressés (ou non) en fonction des paramètres spécifiés dans les fichiers de configuration logrotate. Pour inclure des fichiers compressés dans la sortie, lancez lnav comme suit :

# lnav -r /var/log/httpd

Si vous voulez regarder de plus près le fonctionnement de lnav, vous pouvez lancer le programme avec l’option -d suivie d’un nom de fichier dans lequel les informations de débogage seront écrites, comme ceci :

# lnav /var/log/httpd -d lnav.txt

Dans cet exemple, les informations de débogage générées au démarrage de lnav seront écrites dans un fichier nommé lnav.txt à l’intérieur du répertoire de travail actuel.

Les premières lignes de ce fichier sont illustrées dans l’image suivante :

Le texte en surbrillance indique que lnav a chargé le fichier de formats par défaut et, plus précisément, le format access_log pour analyser le journal d’accès Apache. De plus, lnav permet d’analyser chaque ligne de sortie afin que la sortie devienne plus facile à visualiser et à comprendre.

Lecture suggérée : GoAccess (un analyseur de journaux de serveur Web Apache et Nginx en temps réel)

Pour utiliser cette fonctionnalité, lancez le programme et choisissez la ligne que vous souhaitez analyser. La ligne sélectionnée est toujours celle qui se trouve en haut de la fenêtre. Appuyez ensuite sur p et vous devriez voir le résultat suivant :

Pour revenir au mode normal, appuyez à nouveau sur p.

Maintenant, si vous souhaitez voir un résumé des journaux par date et heure, appuyez sur i. Par exemple, le texte en surbrillance indique que le lundi 10 avril, entre 22 h et 23 h, il y a eu 37 requêtes HTTP dont 14 ont entraîné des erreurs.

Une fois que vous avez identifié un problème potentiel sur la base de l’histogramme comme indiqué ci-dessus, vous pouvez appuyer sur i pour quitter la vue et l’examiner plus en détail à l’aide de l’analyseur comme expliqué précédemment. Vous pouvez également utiliser les fonctionnalités SQL intégrées en tapant un point-virgule et en écrivant une requête standard. Par exemple, faites :

;.schema

pour afficher les tables disponibles dans le schéma de base de données. Après avoir identifié la bonne table (access_log dans notre cas), appuyons sur q puis utilisons la requête suivante pour retourner toutes les informations disponibles sur les requêtes provenant de 195.154.230.31 :

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

Notez que nous aurions également pu filtrer les résultats par log_time. Le fait est qu’il suffit d’ajouter un peu de SQL et il n’y a pas de limite à ce que vous pouvez faire avec lnav.

Formats de journal par défaut d’Apache

De nombreux formats de logs sont chargés par défaut avec lnav et sont donc analysés sans notre intervention. Vous pouvez consulter la liste dans la section Formats de journal de la documentation officielle.

Les formats par défaut sont spécifiés dans ~/.lnav/formats/default/default-formats.json.sample, et d’autres peuvent être ajoutés ~/.lnav/formats à l’aide de l’extension .json.

Cependant, l’édition de ces fichiers nécessite un certain degré de familiarité avec JSON (Javascript Object Notation) et avec la bibliothèque PCRE (Perl-Compatible Regular Expressions).

Alors, pourquoi lnav n’a-t-il pas affiché les fichiers journaux d’erreurs Apache ? La raison en est que ces journaux ne correspondent à aucune expression régulière dans les fichiers de format existants et sont donc traités comme des fichiers texte normaux (c’est-à-dire des fichiers sans format de journal donné).

Lecture suggérée : Comment surveiller la charge du serveur Web Apache et les statistiques des pages

Comme mentionné précédemment, vous pouvez créer vos propres formats une fois que vous êtes au moins un peu familiarisé avec JSON et PCRE. Cela peut s’avérer utile, par exemple, si vous avez défini des journaux Apache personnalisés.

Résumé

Bien que nous ayons utilisé le journal d’accès Apache pour montrer comment utiliser lnav, gardez à l’esprit qu’il existe plusieurs autres types de journaux qui peuvent être consultés et analysés à l’aide de cet outil. Si l’outil ne reconnaît pas un journal spécifique, vous pouvez créer des formats supplémentaires et les installer en suivant les indications fournies ici.

Vous avez des questions ou des commentaires sur cet article ? Comme toujours, n’hésitez pas à nous le faire savoir en utilisant le formulaire ci-dessous. Nous nous réjouissons d’avoir de vos nouvelles !

Articles connexes: