Analyse et optimisation des journaux Nginx

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce projet, vous allez apprendre à effectuer une analyse des journaux sur les journaux d'accès d'un serveur Nginx. Vous allez extraire des informations précieuses des journaux, telles que les adresses IP les plus fréquentes en termes de nombre d'accès, les adresses IP ayant accès au serveur au moins 10 fois, les requêtes les plus fréquemment appelées et les adresses de requête avec un statut 404.

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • Comment extraire les 5 adresses IP ayant le plus grand nombre d'accès à partir d'une date spécifique
  • Comment trouver toutes les adresses IP ayant accès au serveur au moins 10 fois dans une plage de dates donnée
  • Comment extraire les dix requêtes les plus fréquemment appelées à partir du fichier de journal, en excluant les fichiers statiques et les ressources
  • Comment écrire toutes les adresses de requête avec un statut 404 à partir du fichier de journal

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • Analyser et extraire des informations significatives des journaux d'accès Nginx
  • Automatiquer les tâches d'analyse des journaux à l'aide de scripts shell
  • Comprendre et appliquer des techniques d'analyse des journaux courantes, telles que le filtrage, le tri et le comptage
  • Gérer et organiser les résultats de l'analyse de manière structurée

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/TextProcessingGroup -.-> linux/awk("Text Processing") linux/TextProcessingGroup -.-> linux/sort("Text Sorting") linux/TextProcessingGroup -.-> linux/uniq("Duplicate Filtering") subgraph Lab Skills linux/grep -.-> lab-301477{{"Analyse et optimisation des journaux Nginx"}} linux/awk -.-> lab-301477{{"Analyse et optimisation des journaux Nginx"}} linux/sort -.-> lab-301477{{"Analyse et optimisation des journaux Nginx"}} linux/uniq -.-> lab-301477{{"Analyse et optimisation des journaux Nginx"}} end

Récupérez les 5 adresses IP ayant le plus grand nombre d'accès du 10 avril 2015

Dans cette étape, vous allez apprendre à récupérer les 5 adresses IP ayant le plus grand nombre d'accès à partir du fichier access.log du 10 avril 2015. Suivez les étapes ci-dessous pour terminer cette étape :

  1. Ouvrez le terminal et accédez au répertoire /home/labex/project.
  2. Utilisez la commande suivante pour récupérer les 5 adresses IP ayant le plus grand nombre d'accès du 10 avril 2015 :
grep '10/Apr/2015' access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -5 | awk '{print $2}' > output1

Cette commande effectue les opérations suivantes :

  • grep '10/Apr/2015' access.log : Filtre le fichier de journal pour ne conserver que les lignes du 10 avril 2015.
  • awk '{print $1}' : Extrait l'adresse IP (le premier champ) de chaque ligne de journal.
  • sort : Trie les adresses IP.
  • uniq -c : Compte le nombre d'occurrences de chaque adresse IP.
  • sort -rn : Trie les adresses IP par le compte en ordre décroissant.
  • head -5 : Sélectionne les 5 premières adresses IP.
  • awk '{print $2}' : Extrait l'adresse IP (le second champ) de la sortie triée et comptée.
  • > output1 : Redirige la sortie vers le fichier output1.
  1. Vérifiez le contenu du fichier output1 pour vous assurer qu'il contient les 5 adresses IP ayant le plus grand nombre d'accès du 10 avril 2015, avec une adresse IP par ligne et aucune ligne vide.
216.244.66.249
216.244.66.231
140.205.225.185
140.205.201.39
140.205.201.32

Trouvez toutes les adresses IP ayant accès au serveur au moins 10 fois entre le 11 avril 2015

Dans cette étape, vous allez apprendre à trouver toutes les adresses IP ayant accès au serveur au moins 10 fois entre le 11 avril 2015. Suivez les étapes ci-dessous pour terminer cette étape :

  1. Utilisez la commande suivante pour trouver toutes les adresses IP ayant accès au serveur au moins 10 fois entre le 11 avril 2015 :
grep '11/Apr/2015' access.log | awk '{print $1}' | sort | uniq -c | awk '$1 >= 10 {print $2}' > output2

Cette commande effectue les opérations suivantes :

  • grep '11/Apr/2015' access.log : Filtre le fichier de journal pour ne conserver que les lignes du 11 avril 2015.
  • awk '{print $1}' : Extrait l'adresse IP (le premier champ) de chaque ligne de journal.
  • sort : Trie les adresses IP.
  • uniq -c : Compte le nombre d'occurrences de chaque adresse IP.
  • awk '$1 >= 10 {print $2}' : Filtre les adresses IP ayant un compte de 10 ou plus, et imprime l'adresse IP (le second champ).
  • > output2 : Redirige la sortie vers le fichier output2.
  1. Vérifiez le contenu du fichier output2 pour vous assurer qu'il contient toutes les adresses IP ayant accès au serveur au moins 10 fois entre le 11 avril 2015, avec une adresse IP par ligne et aucune ligne vide.
108.245.182.93
123.127.3.30
140.205.201.39
216.244.66.231
216.244.66.249
218.75.230.17

Récupérez les dix requêtes les plus fréquemment appelées à partir du fichier de journal

Dans cette étape, vous allez apprendre à récupérer les dix requêtes les plus fréquemment appelées à partir du fichier access.log, en excluant les fichiers statiques, les images ou des ressources similaires. Suivez les étapes ci-dessous pour terminer cette étape :

  1. Utilisez la commande suivante pour récupérer les dix requêtes les plus fréquemment appelées à partir du fichier de journal :
grep -vE '(/robots.txt|\.js|\.css|\.png)' access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -10 | awk '{print $2}' > output3

Cette commande effectue les opérations suivantes :

  • grep -vE '(/robots.txt|\.js|\.css|\.png)' access.log : Filtre le fichier de journal pour exclure les lignes qui contiennent /robots.txt, .js, .css ou .png.
  • awk '{print $7}' : Extrait l'adresse de la requête (le septième champ) de chaque ligne de journal.
  • sort : Trie les adresses de requête.
  • uniq -c : Compte le nombre d'occurrences de chaque adresse de requête.
  • sort -rn : Trie les adresses de requête par le compte en ordre décroissant.
  • head -10 : Sélectionne les dix premières adresses de requête.
  • awk '{print $2}' : Extrait l'adresse de la requête (le second champ) de la sortie triée et comptée.
  • > output3 : Redirige la sortie vers le fichier output3.
  1. Vérifiez le contenu du fichier output3 pour vous assurer qu'il contient les dix requêtes les plus fréquemment appelées à partir du fichier de journal, avec une adresse de requête par ligne et aucune ligne vide.
/
/j_acegi_security_check
/favicon.ico
400
/xref/linux-3.18.6/
/pmd/index.php
/pma/index.php
/phpMyAdmin/index.php
/phpmyadmin/index.php
check.best-proxies.ru:80

Écrivez toutes les adresses de requête avec un statut 404 à partir du fichier de journal

Dans cette étape, vous allez apprendre à écrire toutes les adresses de requête avec un statut 404 à partir du fichier access.log dans le fichier output4. Suivez les étapes ci-dessous pour terminer cette étape :

  1. Utilisez la commande suivante pour écrire toutes les adresses de requête avec un statut 404 à partir du fichier de journal dans le fichier output4 :
grep ' 404 ' access.log | awk '{print $7}' | sort | uniq > output4

Cette commande effectue les opérations suivantes :

  • grep ' 404 ' access.log : Filtre le fichier de journal pour ne conserver que les lignes qui contiennent un code de statut 404.
  • awk '{print $7}' : Extrait l'adresse de la requête (le septième champ) de chaque ligne de journal.
  • sort : Trie les adresses de requête.
  • uniq : Supprime les adresses de requête en double.
  • > output4 : Redirige la sortie vers le fichier output4.
  1. Vérifiez le contenu du fichier output4 pour vous assurer qu'il contient toutes les adresses de requête avec un statut 404 à partir du fichier de journal, avec une adresse de requête par ligne et sans doublons.
/about/
/cgi?2
/cgi-bin/cgiSrv.cgi
/clusters.jsf
/dfshealth.jsp
/dnieyraqcvtu
/favicon.ico
/ganglia/index.php
/hadoop/dfshealth.jsp
/history/linux-3.18.6/arch/ia64/include/asm/processor.h
/history/linux-3.18.6/arch/m68k/amiga/
/history/linux-3.18.6/arch/m68k/kernel/
/history/linux-3.18.6/arch/s390/include/asm/lowcore.h
/history/linux-3.18.6/arch/s390/kernel/entry64.S
/history/linux-3.18.6/arch/tile/kernel/intvec_64.S
/history/linux-3.18.6/arch/unicore32/include/asm/thread_info.h
/history/linux-3.18.6/arch/unicore32/include/asm/unistd.h
/history/linux-3.18.6/arch/x86/include/asm/processor.h
/history/linux-3.18.6/arch/x86/include/asm/unistd.h
/history/linux-3.18.6/arch/x86/kernel/entry_64.S
 ...
✨ Vérifier la solution et pratiquer

Sommaire

Félicitations ! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires dans LabEx pour améliorer vos compétences.