Heim  >  Artikel  >  Backend-Entwicklung  >  Spielen Sie mit Nginx-Protokollen rein manuell

Spielen Sie mit Nginx-Protokollen rein manuell

WBOY
WBOYOriginal
2016-08-08 09:22:34829Durchsuche
Nginx-Protokolle sind für die meisten Menschen ein unentdeckter Schatz. Ich möchte meine bisherigen Erfahrungen beim Aufbau eines Protokollanalysesystems zusammenfassen und Ihnen die rein manuelle Analysemethode von Nginx-Protokollen vorstellen. Es gibt zwei Orte für die Nginx-Protokoll-bezogene Konfiguration: access_log und log_format. Standardformat:
access_log <span>/</span>data<span>/</span>logs<span>/</span>nginx<span>-</span>access<span>.</span><span>log</span><span>;</span>log_format old <span><em>'$remote_addr [$time_local] $status $request_time $body_bytes_sent '</em></span><span><em>'"$request" "$http_referer" "$http_user_agent"'</em></span><span>;</span>
Ich glaube, dass die meisten Leute, die Nginx verwendet haben, mit der Standardkonfiguration des Nginx-Protokollformats und dem Inhalt des Protokolls vertraut sind. Die Standardkonfiguration und das Standardformat sind zwar lesbar, aber schwer zu berechnen. Nginx-Log-Flush-bezogene Strategien können konfiguriert werden: Stellen Sie beispielsweise den Puffer ein und leeren Sie die Festplatte nur, wenn der Puffer 32 KB voll ist. Wenn der Puffer weniger als 5 Sekunden beträgt, ist die Konfiguration erforderlich für erzwungenes Flush lautet wie folgt:
access_log <span>/</span>data<span>/</span>logs<span>/</span>nginx<span>-</span>access<span>.</span><span>log</span> buffer<span>=</span><span><em>32k</em></span> flush<span>=</span><span><em>5s</em></span><span>;</span>
Dies bestimmt, ob das Protokoll in Echtzeit angezeigt werden kann und welche Auswirkungen das Protokoll auf Festplatten-E/A hat. Es gibt viele Variablen, die Nginx-Protokolle aufzeichnen können, die in der Standardkonfiguration nicht angezeigt werden: Zum Beispiel: Datengröße anfordern: $request_length
Daten zurückgeben Größe: $ bytes_sent
Anfragezeit: $request_time
Verwendete Seriennummer der Verbindung: $connection
Anzahl der Anfragen für die aktuelle Verbindung: $connection_requestsDas Standardformat von Nginx ist nicht berechenbar, und Sie müssen eine Möglichkeit finden, es in ein berechenbares Format umzuwandeln. Verwenden Sie beispielsweise das Steuerzeichen ^A (Strg+v Strg+a zur Eingabe auf dem Mac), um die einzelnen Felder zu trennen. Das Format von log_format kann wie folgt aussehen:
log_format new <span><em>'$remote_addr^A$http_x_forwarded_for^A$host^A$time_local^A$status^A'</em></span><span><em>'$request_time^A$request_length^A$bytes_sent^A$http_referer^A$request^A$http_user_agent'</em></span><span>;</span>
Danach kann es mit gängigen Linux-Befehlszeilentools analysiert werden:
  • Finden Sie die meisten Häufig aufgerufene URL und Zeiten:

    cat access.log |. awk -F ‘^A’ ‘{print $10}’ |.

    cat access.log |. awk -F ‘^A’ ‘{if($5 == 500) print $0}’
  • Ermitteln Sie die Anzahl der 500 Fehler in der aktuellen Protokolldatei:

    cat access.log |. awk -F '^A' '{if($5 == 500) print $0}' |. wc -l
  • Finde 500 fehlerhafte Zugriffe innerhalb einer bestimmten Minutenmenge :

    cat access.log |. awk -F '^A' '{if($5 == 500) print $0}' | Langsame Anfrage länger als 1 Sekunde:
  • tail -f access.log |. awk -F ‘^A’ ‘{if($6>1) print $0}’
  • Wenn Sie nur bestimmte Teile anzeigen möchten:
  • tail -f access.log |. awk -F '^A' '{if($6>1) print $3″|“$4}'
  • Suchen Sie die URLs mit den meisten 502 Fehler:
  • cat access.log |. awk -F ‘^A’ ‘{if($5==502) print $11}’ |. 200 leere Seiten finden
  • cat access.log |. awk -F '^A' '{if($5==200 && $8 < 100) print $3″|“$4″|“$11″|“$6}'

  • Echtzeit-Protokolldatenstrom anzeigen
  • tail -f access.log |. cat -e

    oder
  • tail -f access.log |'

  • Zusammenfassung

    Nach dieser Idee können viele andere Analysen durchgeführt werden, z. B. die Analyse der am häufigsten aufgerufenen UA; An.

    Dies ist der Prototyp eines groß angelegten Web-Log-Analysesystems. Dieses Format eignet sich auch sehr gut für nachfolgende groß angelegte Batch- und Streaming-Berechnungen.

    Das Obige ist eine Einführung in das manuelle Spielen mit Nginx-Protokollen, einschließlich verschiedener Aspekte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

  • Stellungnahme:
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn