Detaillierte Erläuterung der Nginx-Statusüberwachung und Protokollanalyse

Detaillierte Erläuterung der Nginx-Statusüberwachung und Protokollanalyse

1. Nginx-Statusüberwachung

Nginx bietet eine integrierte Überwachungsseite für Statusinformationen, mit der der allgemeine Zugriffsstatus von Nginx überwacht werden kann. Diese Funktion wird vom Modul ngx_http_stub_status_module implementiert.

Verwenden Sie den Befehl nginx -V 2>&1 | grep -o with-http_stub_status_module, um zu überprüfen, ob das aktuelle Nginx über die Statusfunktion verfügt. Wenn die Ausgabe ngx_http_stub_status_module lautet, bedeutet dies, dass es über die Statusfunktion verfügt. Wenn nicht, können Sie dieses Modul während der Kompilierung hinzufügen.

Standardmäßig ist der Status deaktiviert. Wir müssen ihn aktivieren und die URI angeben, um auf die Daten zuzugreifen.

Server {
  hören Sie 80;
  Servername Standardserver;
  Standort /Status {
    stub_status ein; 
    erlauben Sie 114.247.125.227;
  }
}

Die Allow-Konfiguration erlaubt nur der angegebenen IP den Zugriff auf die Nginx-Statusfunktion. Wird sie entfernt, gibt es keine Einschränkung.

Besuchen Sie nach dem Neustart von Nginx http://{IP}/status in Ihrem Browser, um Informationen zur Statusüberwachung anzuzeigen.

  • Aktive Verbindungen: Die aktuelle Anzahl aktiver Client-Verbindungen (einschließlich wartender Client-Verbindungen), entspricht dem TCP-Verbindungsstatus in Established und SYN_ACK
  • accepts: Die Gesamtzahl der akzeptierten Clientverbindungen, d. h. die Verbindungen, die vom Worker-Prozess empfangen wurden
  • behandelt: Die Gesamtzahl der behandelten Verbindungen
  • Anfragen: Gesamtzahl der HTTP-Anfragen vom Client
  • Lesen: Die Anzahl der aktuell gelesenen HTTP-Anfragen (Lesen des HTTP-Anfrageheaders)
  • Schreiben: Die Anzahl der Verbindungen, die derzeit bereit sind zu antworten (wird in den HTTP-Antwortheader geschrieben)
  • Warten: Die Anzahl der derzeit wartenden inaktiven Clientanforderungen. Die Wartezeit ist das Intervall zwischen Lesen und Schreiben.

Nachdem Sie Nginx-Daten gesammelt haben, können Sie diese mithilfe von Überwachungstools überwachen.

2. Protokollanalyse

Die Standardkonfiguration des Nginx-Protokollformats finden Sie in /etc/nginx/nginx.conf

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
           '$status $body_bytes_sent "$http_referer" '
           „$http_user_agent“ „$http_x_forwarded_for“ $Anforderungszeit $Upstream_Antwortzeit“;

Beispiel für ein gedrucktes Protokoll

39.105.66.117 - mp [11/Sep/2019:19:03:01 +0800] "POST /salesplatform-gateway/users HTTP/1.1" 200 575 "-" "Apache-HttpClient/4.5.5 (Java/1.8.0_161)" "-" 0.040 0.040
39.105.66.117 - mp [11/Sep/2019:19:03:08 +0800] "POST /salesplatform-gateway/users HTTP/1.1" 200 575 "-" "Apache-HttpClient/4.5.5 (Java/1.8.0_161)" "-" 0.008 0.008

  • $remote_addr: IP-Adresse des Clients
  • $remote_user: Wird verwendet, um den Benutzernamen des Remote-Clients aufzuzeichnen
  • $time_local: wird verwendet, um Zugriffszeit und Zeitzone aufzuzeichnen
  • $request: wird verwendet, um die Anforderungs-URL und die Anforderungsmethode aufzuzeichnen
  • $status: Antwortstatuscode
  • $body_bytes_sent: Die Anzahl der Bytes des Dateiinhalts, die an den Client gesendet werden
  • $http_referer: kann den Link aufzeichnen, von dem der Benutzer zugegriffen hat
  • $http_user_agent: Informationen über den vom Benutzer verwendeten Browser
  • $http_x_forwarded_for: kann die Client-IP aufzeichnen und die IP-Adresse des Clients über den Proxyserver aufzeichnen
  • $request_time: bezieht sich auf die Zeit vom Empfang des ersten Bytes der Benutzeranforderung bis zum Senden der Antwortdaten. Das heißt, $request_time umfasst die Zeit des Empfangs der Anforderungsdaten des Clients, die Zeit der Antwort des Backend-Programms und die Zeit des Sendens der Antwortdaten an den Client.
  • $upstream_response_time: Die Zeit, die benötigt wurde, um die Antwort vom Upstream-Server zu erhalten

Allgemeine Analysebefehle

1. UV basierend auf der Zugriffs-IP zählen

awk '{print $1}' paycenteraccess.log | sort -n | uniq | wc -l

2. Abfrage der am häufigsten besuchten IPs (Top 10)

awk '{print $1}' /var/log/nginx/access.log | sort -n | uniq -c | sort -rn | head -n 10

3. Überprüfen Sie das IP-Zugriffsvolumen in einem bestimmten Zeitraum (1-8 Uhr).

awk '$4 >="[25/Mar/2020:01:00:00" && $4 <="[25/Mar/2020:08:00:00"' /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr |wc -l

4. Zeigen Sie IP-Adressen an, die mehr als 100 Mal besucht wurden

awk '{print $1}' /var/log/nginx/access.log | sort -n |uniq -c |awk '{if($1 >100) print $0}'|sort -rn

5. Zeigen Sie die URLs und die Anzahl der Besuche an, die von der angegebenen IP besucht wurden

grep "39.105.67.140" /var/log/nginx/access.log|awk '{print $7}' |sort |uniq -c |sort -n -k 1 -r

6. PV basierend auf besuchten URLs zählen

cat /var/log/nginx/access.log |awk '{print $7}' |wc -l

7. Abfrage der am häufigsten besuchten URLs (Top 10)

awk '{print $7}' /var/log/nginx/access.log | sortieren | uniq -c | sortieren -rn | head -n 10

8. Zeigen Sie die am häufigsten besuchten URLs an ([außer /api/appid]) (Top 10)

grep -v '/api/appid' /var/log/nginx/access.log|awk '{print $7}' | sort |uniq -c | sort -rn | head -n 10

9. Seiten mit mehr als 100 Seitenaufrufen anzeigen

cat /var/log/nginx/access.log | cut -d ' ' -f 7 | sort |uniq -c | awk '{if ($1 > 100) print $0}' | weniger

10. Zeigen Sie die letzten 1.000 Datensätze und die am häufigsten besuchten Seiten an

tail -1000 /var/log/nginx/access.log |awk '{print $7}'|sort|uniq -c|sort -nr|weniger

11. Zählen Sie die Anzahl der Anfragen pro Stunde und die Zeitpunkte der Top 10 (stundengenau)

awk '{print $4}' /var/log/nginx/access.log |cut -c 14-15|sort|uniq -c|sort -nr|head -n 10

12. Zählen Sie die Anzahl der Anfragen pro Minute und die Zeitpunkte der Top 10 (minutengenau)

awk '{print $4}' /var/log/nginx/access.log |cut -c 14-18|sort|uniq -c|sort -nr|head -n 10

13. Zählen Sie die Anzahl der Anfragen pro Sekunde und die Zeitpunkte der Top 10 (sekundengenau)

awk '{print $4}' /var/log/nginx/access.log |cut -c 14-21|sort|uniq -c|sort -nr|head -n 10

14. Suchen Sie nach Protokollen für einen bestimmten Zeitraum

awk '$4 >="[25/Mar/2020:01:00:00" && $4 <="[25/Mar/2020:08:00:00"' /var/log/nginx/access.log

15. Listet die URLs auf, deren Übertragungszeit 0,6 Sekunden überschreitet, und zeigt die ersten 10

cat /var/log/nginx/access.log |awk '(substr($NF,2,5) > 0,6){print $4,$7,substr($NF,2,5)}' | awk -F '"' '{print $1,$2,$3}' |sort -k3 -rn | head -10

16. Listen Sie die Zeitpunkte auf, an denen die Anforderungszeit für /api/appid 0,6 Sekunden überschreitet

cat /var/log/nginx/access.log |awk '(substr($NF,2,5) > 0.6 && $7~/\/api\/appid/){print $4,$7,substr($NF,2,5)}' | awk -F '"' '{print $1,$2,$3}' |sort -k3 -rn | head -10

17. Holen Sie sich die 10 zeitaufwändigsten Anfragezeiten, URLs und Dauern

cat /var/log/nginx/access.log |awk '{print $4,$7,substr($NF,2,5)}' | awk -F '"' '{print $1,$2,$3}' | sort -k3 -rn | head -10

Zusammenfassen

Dies ist das Ende dieses Artikels über die Nginx-Statusüberwachung und Protokollanalyse. Weitere relevante Inhalte zur Nginx-Statusüberwachung und Protokollanalyse finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Anweisungen zur Nginx-Protokollkonfiguration
  • Detaillierte Erläuterung der Verwendung von ELK zur Analyse von Nginx-Serverprotokollen
  • Detaillierte Analyse und Konfiguration von access_log im Nginx-Server
  • Shell-Skript-Analyse der Nginx-Protokollzugriffszeiten und der zeitaufwändigsten Seiten (langsame Abfrage)
  • So verbinden Sie PHP mit dem Nginx-Server und analysieren das Nginx-Protokoll
  • Zusammenfassung gängiger Befehle zur Analyse von Nginx-Protokollstatistiken
  • Methode zur Überwachung des Nginx-Dienststatus
  • So implementieren Sie den Dienststatus zur Nginx-Konfigurationserkennung
  • Python überwacht den Nginx-Port und den Prozessstatus

<<:  Lassen Sie sich das Funktionsprinzip von JavaScript erklären

>>:  Problem der Inkonsistenz der MySQL-Multiplikations- und Divisionsgenauigkeit (vier Dezimalstellen nach der Division)

Artikel empfehlen

Sperrt Mysql ALTER TABLE die Tabelle beim Hinzufügen von Feldern?

Inhaltsverzeichnis Vor MySQL 5.6 Nach MySQL 5.6 Z...

Detailliertes Installationstutorial für Windows 10 + MySQL 8.0.11 Zip

Vorbereiten: Downloadadresse für das MySQL 8.0 Wi...

So verwenden Sie den Skeleton-Bildschirm im Vue-Projekt

Heutzutage ist die Anwendungsentwicklung grundsät...

Implementierung eines Puzzlespiels mit js

In diesem Artikel wird der spezifische Code von j...

Implementierung integrierter Module und benutzerdefinierter Module in Node.js

1. Commonjs Commonjs ist ein benutzerdefiniertes ...

Tiefgreifendes Verständnis des Vue-Übergangs und der Animation

1. Wenn Sie DOM-Elemente einfügen, aktualisieren ...

Eine kurze Analyse des Reaktionsprinzips und der Unterschiede von Vue2.0/3.0

Vorwort Seit der offiziellen Einführung von vue3....

Beispielcode mit SCSS in Uni-App

Aufgetroffene Fallstricke Ich habe den ganzen Nac...

Spezifische Verwendung von useRef in React

Ich glaube, dass Leute, die Erfahrung mit React h...