Einführung
In diesem Projekt lernst du, wie du eine Log-Analyse auf den Zugangsprotokollen eines Nginx-Servers durchführst. Du wirst wertvolle Informationen aus den Protokollen extrahieren, wie die Top-IP-Adressen nach Zugangszählung, die IP-Adressen, die den Server mindestens 10 Mal erreicht haben, die am häufigsten aufgerufenen Anforderungen und die Anforderungsadressen mit einem 404-Zustand.
🎯 Aufgaben
In diesem Projekt wirst du lernen:
- Wie du die 5 IP-Adressen mit der höchsten Anzahl an Zugängen ab einem bestimmten Datum abrufen
- Wie du alle IP-Adressen findest, die den Server innerhalb eines angegebenen Datumsbereichs mindestens 10 Mal erreicht haben
- Wie du die zehn am häufigsten aufgerufenen Anforderungen aus der Log-Datei abrufst, wobei statische Dateien und Ressourcen ausgeschlossen werden
- Wie du alle Anforderungsadressen mit einem 404-Zustand aus der Log-Datei schreibst
🏆 Errungenschaften
Nach Abschluss dieses Projekts wirst du in der Lage sein:
- Log-Analysen von Nginx-Zugangsprotokollen durchzuführen und sinnvolle Informationen zu extrahieren
- Log-Analysetasks mit Shell-Scripting zu automatisieren
- Gemeinsame Log-Analysetechniken wie Filtern, Sortieren und Zählen zu verstehen und anzuwenden
- Die Analyseergebnisse strukturiert zu verwalten und zu organisieren
Extrahiere die 5 IP-Adressen mit der höchsten Anzahl an Zugängen vom 10. April 2015
In diesem Schritt lernst du, wie du die 5 IP-Adressen mit der höchsten Anzahl an Zugängen aus der access.log-Datei ab dem 10. April 2015 abrufst. Folge den Schritten unten, um diesen Schritt abzuschließen:
- Öffne das Terminal und navigiere zum Verzeichnis
/home/labex/project. - Verwende den folgenden Befehl, um die 5 IP-Adressen mit der höchsten Anzahl an Zugängen ab dem 10. April 2015 abzurufen:
grep '10/Apr/2015' access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -5 | awk '{print $2}' > output1
Dieser Befehl macht Folgendes:
grep '10/Apr/2015' access.log: Filtert die Log-Datei, um nur Zeilen aus dem 10. April 2015 zu enthalten.awk '{print $1}': Extrahiert die IP-Adresse (das erste Feld) aus jeder Log-Zeile.sort: Sortiert die IP-Adressen.uniq -c: Zählt die Anzahl der Vorkommen jeder IP-Adresse.sort -rn: Sortiert die IP-Adressen nach der Anzahl in absteigender Reihenfolge.head -5: Wählt die obersten 5 IP-Adressen aus.awk '{print $2}': Extrahiert die IP-Adresse (das zweite Feld) aus der sortierten und gezählten Ausgabe.> output1: Leitet die Ausgabe in dieoutput1-Datei um.
- Überprüfe den Inhalt der
output1-Datei, um sicherzustellen, dass sie die 5 IP-Adressen mit der höchsten Anzahl an Zugängen ab dem 10. April 2015 enthält, mit einer IP-Adresse pro Zeile und keine leeren Zeilen.
216.244.66.249
216.244.66.231
140.205.225.185
140.205.201.39
140.205.201.32
Finde alle IP-Adressen, die den Server zwischen dem 11. April 2015 mindestens 10 Mal erreicht haben
In diesem Schritt lernst du, wie du alle IP-Adressen findest, die den Server zwischen dem 11. April 2015 mindestens 10 Mal erreicht haben. Folge den Schritten unten, um diesen Schritt abzuschließen:
- Verwende den folgenden Befehl, um alle IP-Adressen zu finden, die den Server zwischen dem 11. April 2015 mindestens 10 Mal erreicht haben:
grep '11/Apr/2015' access.log | awk '{print $1}' | sort | uniq -c | awk '$1 >= 10 {print $2}' > output2
Dieser Befehl macht Folgendes:
grep '11/Apr/2015' access.log: Filtert die Log-Datei, um nur Zeilen aus dem 11. April 2015 zu enthalten.awk '{print $1}': Extrahiert die IP-Adresse (das erste Feld) aus jeder Log-Zeile.sort: Sortiert die IP-Adressen.uniq -c: Zählt die Anzahl der Vorkommen jeder IP-Adresse.awk '$1 >= 10 {print $2}': Filtert die IP-Adressen, die eine Anzahl von 10 oder mehr haben, und druckt die IP-Adresse (das zweite Feld).> output2: Leitet die Ausgabe in dieoutput2-Datei um.
- Überprüfe den Inhalt der
output2-Datei, um sicherzustellen, dass sie alle IP-Adressen enthält, die den Server zwischen dem 11. April 2015 mindestens 10 Mal erreicht haben, mit einer IP-Adresse pro Zeile und keine leeren Zeilen.
108.245.182.93
123.127.3.30
140.205.201.39
216.244.66.231
216.244.66.249
218.75.230.17
Extrahiere die zehn am häufigsten aufgerufenen Anforderungen aus der Log-Datei
In diesem Schritt lernst du, wie du die zehn am häufigsten aufgerufenen Anforderungen aus der access.log-Datei abrufst, wobei statische Dateien, Bilder oder ähnliche Ressourcen ausgeschlossen werden. Folge den Schritten unten, um diesen Schritt abzuschließen:
- Verwende den folgenden Befehl, um die zehn am häufigsten aufgerufenen Anforderungen aus der Log-Datei abzurufen:
grep -vE '(/robots.txt|\.js|\.css|\.png)' access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -10 | awk '{print $2}' > output3
Dieser Befehl macht Folgendes:
grep -vE '(/robots.txt|\.js|\.css|\.png)' access.log: Filtert die Log-Datei, um Zeilen auszuschließen, die/robots.txt,.js,.cssoder.pngenthalten.awk '{print $7}': Extrahiert die Anforderungsadresse (das siebte Feld) aus jeder Log-Zeile.sort: Sortiert die Anforderungsadressen.uniq -c: Zählt die Anzahl der Vorkommen jeder Anforderungsadresse.sort -rn: Sortiert die Anforderungsadressen nach der Anzahl in absteigender Reihenfolge.head -10: Wählt die obersten 10 Anforderungsadressen aus.awk '{print $2}': Extrahiert die Anforderungsadresse (das zweite Feld) aus der sortierten und gezählten Ausgabe.> output3: Leitet die Ausgabe in dieoutput3-Datei um.
- Überprüfe den Inhalt der
output3-Datei, um sicherzustellen, dass sie die zehn am häufigsten aufgerufenen Anforderungen aus der Log-Datei enthält, mit einer Anforderungsadresse pro Zeile und keine leeren Zeilen.
/
/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
Schreibe alle Anforderungsadressen mit einem 404-Zustand aus der Log-Datei
In diesem Schritt lernst du, wie du alle Anforderungsadressen mit einem 404-Zustand aus der access.log-Datei in die output4-Datei schreibst. Folge den Schritten unten, um diesen Schritt abzuschließen:
- Verwende den folgenden Befehl, um alle Anforderungsadressen mit einem 404-Zustand aus der Log-Datei in die
output4-Datei zu schreiben:
grep ' 404 ' access.log | awk '{print $7}' | sort | uniq > output4
Dieser Befehl macht Folgendes:
grep ' 404 ' access.log: Filtert die Log-Datei, um nur Zeilen zu enthalten, die einen 404-Zustands-Code enthalten.awk '{print $7}': Extrahiert die Anforderungsadresse (das siebte Feld) aus jeder Log-Zeile.sort: Sortiert die Anforderungsadressen.uniq: Entfernt alle doppelten Anforderungsadressen.> output4: Leitet die Ausgabe in dieoutput4-Datei um.
- Überprüfe den Inhalt der
output4-Datei, um sicherzustellen, dass sie alle Anforderungsadressen mit einem 404-Zustand aus der Log-Datei enthält, mit einer Anforderungsadresse pro Zeile und keine Duplikate.
/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
...
Zusammenfassung
Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Labs absolvieren, um deine Fähigkeiten zu verbessern.



