Detaillierte Erläuterung der Nginx-Protokollanpassung und Aktivierung des Protokollpuffers

Detaillierte Erläuterung der Nginx-Protokollanpassung und Aktivierung des Protokollpuffers

Vorwort

Wenn Sie die Quelle der Website-Besuche zählen möchten, können Sie PHP verwenden, um die Informationen abzurufen und in der Datenbank aufzuzeichnen, oder Sie können das von nginx bereitgestellte Zugriffsprotokoll direkt verwenden, um die Besuchsdetails der Website aufzuzeichnen. Administratoren können die Zugriffsquelle des Benutzers, Details zum Zugriffsverhalten, die Beliebtheit der Website-Seitenzugriffe usw. analysieren, indem sie das Zugriffsprotokoll von nginx analysieren. Darüber hinaus verfügt nginx selbst auch über Fehlerprotokolle, die dem Betriebs- und Wartungspersonal das Debuggen von nginx erleichtern. Wenn beim Aufzeichnen von Protokollen jedes Mal Festplattenvorgänge ausgeführt werden, werden mehr Ressourcen verbraucht. Aus diesem Grund kann der Nginx-Protokollpuffer aktiviert werden. Wenn der Puffer voll ist oder die geplante Schreibzeit erreicht ist, wird das Protokoll erneut geschrieben.

Zugriffsprotokoll

nginx schreibt Informationen zu Client-Anfragen unmittelbar nach der Verarbeitung der Anfrage in das Zugriffsprotokoll. Standardmäßig befindet sich das Zugriffsprotokoll in logs/access.log und die Informationen werden in einem vordefinierten kombinierten Format in das Protokoll geschrieben.

Um Zugriffsinformationen genau aufzuzeichnen, müssen Sie ein umfassenderes Zugriffsprotokollformat anpassen, wie unten gezeigt:

http {
  log_format geoproxy
  '[$time_local] $remote_addr '
  „$realip_remote_addr $remote_user“
  „$Anforderungsmethode $Serverprotokoll“
  „$Schema $Servername $URI $Status“
  „$request_time $body_bytes_sent“
  '$geoip_city_country_code3 $geoip_region '
  '"$geoip_city" $http_x_forwarded_for '
  „$upstream_status $upstream_antwortzeit“
  '"$http_referer" "$http_user_agent"';
  ...
}

Diese Protokollierungskonfiguration heißt „Geoproxy“ und verwendet eine Reihe von Nginx-Variablen, um die Protokollierungsfunktionen von Nginx zu demonstrieren. Erklären Sie ausführlich die spezifische Bedeutung jeder Variable in den Konfigurationsoptionen:

Wenn ein Benutzer eine Anfrage initiiert, wird die Serverzeit $time_local aufgezeichnet und der Wert von $remote_user ist der Benutzername, der die grundlegende Autorisierung bestanden hat.

Die IP-Adresse der offenen Verbindung und die Client-IP-Adresse, die von nginx zur Verarbeitung der Anweisungen geoip_proxy und realip_header verwendet wird;

Notieren Sie dann die HTTP-Anforderungsmethode $request_method, das Protokoll $server_protocol und die HTTP-Methode $scheme: http oder https;

Natürlich gibt es auch den Servernamen $server_name, die angeforderte URI und den Antwortstatuscode.

Neben grundlegenden Informationen gibt es auch einige statistische Ergebnisdaten: darunter die Millisekundenzeit der Anforderungsverarbeitung $request_time und die Datenblockgröße der Serverantwort $body_bytes_sent;

Darüber hinaus werden das Land des Clients $geoip_city_country_code3, die Region $geoip_region und die Stadtinformationen $geoip_city aufgezeichnet.

Die Variable $http_x_forwarded_for wird verwendet, um die X-Forwarded-For-Headernachricht von Anfragen aufzuzeichnen, die von anderen Proxyservern initiiert wurden.

Einige Daten aus dem Upstream-Modul werden ebenfalls im Protokoll aufgezeichnet: der Antwortstatuscode des Proxy-Servers $upstream_status, die Zeit zwischen dem Herstellen der Verbindung und dem Empfang des letzten Bytes des Antworttexts vom Upstream-Server $upstream_response_time, die Zeit zwischen dem Herstellen der Verbindung mit dem Upstream-Server $upstream_connect_time und die Zeit zwischen dem Herstellen der Verbindung und dem Empfang des ersten Bytes des Upstream-Antwortheaders $upstream_header_time.

Die Anforderungsquelle $http_referer und der Benutzeragent $http_user_agent können ebenfalls im Protokoll aufgezeichnet werden.

Die Protokollierungsfunktion von nginx ist sehr leistungsstark und flexibel. Es ist zu beachten, dass: Die zum Definieren des Protokollformats verwendete Anweisung log_format nur auf Anweisungen auf HTTP-Blockebene anwendbar ist und alle Zeitwerte in Millisekunden mit Millisekundenauflösung gemessen werden. .

Dieses Format der Protokollkonfiguration generiert die folgenden Protokolltypen:

[25/Feb/2019:16:20:42 +0000] 10.0.1.16 192.168.0.122 Derek
GET HTTP/1.1 http www.example.com / 200 0,001 370 USA MI
"Ann Arbor" - 200 0,001 "-" "curl/7.47.0"

Wenn Sie diese Protokollkonfiguration verwenden müssen, müssen Sie sie in Verbindung mit der Direktive access_log verwenden, die ein Protokollverzeichnis und den zu verwendenden Konfigurationsnamen als Parameter erhält:

Server {
  Zugriffsprotokoll /var/log/nginx/access.log Geoproxy;
  ...
}

access_log kann in mehreren Kontexten verwendet werden, von denen jeder sein eigenes Protokollverzeichnis und Protokolldatensatzformat definieren kann.

Fazit: Das Protokollmodul in nginx ermöglicht es Ihnen, das Protokollformat für verschiedene Szenarien zu konfigurieren, sodass Sie unterschiedliche Protokolldateien anzeigen können.

In der Praxis ist es sehr nützlich, für unterschiedliche Kontexte unterschiedliche Protokolle zu konfigurieren. Der Protokollinhalt kann einfache Informationen oder eine detaillierte Aufzeichnung aller erforderlichen Informationen sein. Neben unterstützendem Text

Es kann auch Daten in den Formaten JSON und XML aufzeichnen. Tatsächlich können Ihnen Nginx-Protokolle dabei helfen, Informationen wie Serververkehr, Client-Nutzung und Client-Quellen zu verstehen. Darüber hinaus können Zugriffsprotokolle Ihnen auch dabei helfen, Antworten und Probleme im Zusammenhang mit Upstream-Servern oder bestimmten URIs zu lokalisieren. Zugriffsprotokolle sind auch für Tests nützlich, da sie verwendet werden können, um Verkehrsbedingungen zu analysieren und reale Benutzerinteraktionsszenarien zu simulieren. Protokolle sind bei der Fehlersuche, Fehlerbehebung, Anwendungsanalyse und Geschäftsanpassungen unverzichtbar.

Fehlerprotokoll

Um das Fehlerprotokoll von nginx genau zu lokalisieren, verwenden Sie die integrierte error_log-Anweisung, um das Fehlerprotokollverzeichnis und die Ebene der Fehlerprotokollaufzeichnung zu definieren. Die Konfiguration ist wie folgt:

Fehlerprotokoll /var/log/nginx/error.log warnen;

Die Direktive error_log nimmt ein erforderliches Protokollverzeichnis und eine optionale Fehlerebenenoption an.

Die Direktive error_log kann in allen Kontexten außer der Direktive if verwendet werden. Zu den Fehlerprotokollebenen gehören:

Debug, Info, Hinweis, Warnen, Fehler, Krit., Alarm und Auftauchen. Das angegebene Protokoll

Die Ebenenreihenfolge ist die Reihenfolge der Protokollebenen von der kleinsten bis zur strengsten. Es ist wichtig zu beachten, dass das Debug-Protokoll

Sie müssen den Nginx-Server mit dem Flag --with-debug kompilieren, um ihn zu verwenden.

Wenn ein Serverkonfigurationsfehler auftritt, müssen Sie zuerst das Fehlerprotokoll überprüfen, um das Problem zu lokalisieren. Fehlerprotokoll

Es ist außerdem ein leistungsfähiges Tool zum Auffinden von Anwendungsservern (wie etwa FastCGI-Servern). Über das Fehlerprotokoll können wir Probleme wie Verbindungsfehler bei Arbeitsprozessen, Speicherzuweisung, Client-IP und Anwendungsserver debuggen. Das Fehlerprotokollformat unterstützt keine benutzerdefinierten Protokollformate, zeichnet aber auch Daten wie die aktuelle Uhrzeit, die Protokollebene und spezifische Informationen auf.

Hinweis: Die Standardeinstellungen für die Fehlerprotokollierung gelten global. Um dies außer Kraft zu setzen, platzieren Sie die Direktive error_log im Hauptkonfigurationskontext (oberste Ebene). Die Möglichkeit, mehrere error_log-Direktiven auf derselben Konfigurationsebene anzugeben, wurde in NGINX Open Source Version 1.5.2 hinzugefügt.

Senden Sie Protokolle über Syslog an den einheitlichen Server

Da die Protokolle nicht mehr in ein Verzeichnis auf der Festplatte geschrieben werden müssen, sondern an einen einheitlichen Protokollserver gesendet werden, ersetzen Sie einfach den ursprünglichen Verzeichnisteil durch die Server-IP-Adresse. Die Konfiguration lautet wie folgt:

Fehlerprotokoll syslog:server=10.0.1.42 debug;
Zugriffsprotokoll Syslog:Server=10.0.1.42,Tag=nginx,Schweregrad=info Geoproxy;

#error_log server=unix:/var/log/nginx.sock debug;
#access_log syslog:server=[2001:db8::1]:1234,einrichtung=local7,tag=nginx,schweregrad=info;

Auf den Syslog-Parameter der Anweisungen error_log und access_log folgt ein Doppelpunkt : und einige Parameteroptionen. Enthält: Das erforderliche Server-Tag gibt die IP, den DNS-Namen oder den UNIX-Socket an, mit dem eine Verbindung hergestellt werden soll;

Kann wie oben angegeben mit High-End gespielt werden.

Optionale Parameter sind Einrichtung, Schweregrad und Tag:

Der Serverparameter akzeptiert eine IP-Adresse oder einen DNS-Namen mit einem Port; der Standard ist UDP-Port 514.

Der Parameter Facility legt den Syslog-Typ Facility fest. Der Wert ist einer der 23 Werte, die vom Syslog-RFC-Standard definiert werden. Der Standardwert ist local7. Andere mögliche Werte sind: auth, authpriv, daemon, cron, ftp, lpr, kern, mail, news, syslog, user, uucp, local0 … local7

Der Tag-Parameter gibt den Titel an, der in der Protokolldatei angezeigt wird. Der Standardwert ist nginx.

Der Schweregrad legt den Schweregrad der Nachricht fest. Der Standardwert ist „Infolevel-Protokoll“.

Protokollpuffer

Aktivieren Sie bei hoher Systemauslastung den Protokollpuffer, um die Blockierung von Nginx-Arbeitsprozessen zu verringern. Umfangreiche Lese- und Schreibvorgänge auf der Festplatte sowie eine hohe CPU-Ressourcenauslastung belasten ebenfalls die Serverressourcen enorm. Das Puffern von Protokolldaten im Speicher kann eine kleine Optimierungsmethode sein. Der Pufferparameter gibt die Größe des Puffers an. Wenn der Puffer voll ist, wird das Protokoll in die Datei geschrieben. Der Flush-Parameter gibt die maximale Zeit an, die das Protokoll im Puffer im Pufferspeicher aufbewahrt wird. Wenn das Protokoll im Cache die maximale Cachezeit überschreitet, wird es auch in die Datei geschrieben. Der Nachteil besteht darin, dass beim Schreiben des Protokolls in die Protokolldatei eine leichte Verzögerung auftritt. Die Protokollpufferung sollte während des Echtzeit-Debuggens deaktiviert werden. . Die Konfiguration ist wie folgt:

http {
  access_log /var/log/nginx/access.log Hauptpuffer=32k Flush=1m;
}

Referenzlinks:

  1. Nginx-Kochbuch
  2. Nginx-Konfigurationsprotokoll

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Idee des Rollens von Nginx-Protokollen in Docker
  • Anforderungs-Antwort-Protokoll zum Nginx-Protokoll hinzufügen (empfohlen)
  • Detaillierte Erläuterung des Nginx-Zugriffsprotokollformats
  • So legen Sie mit log_format ein detaillierteres Protokollformat für den Nginx-Server fest
  • So sammeln Sie Nginx-Protokolle mit Filebeat

<<:  7 nützliche neue TypeScript-Funktionen

>>:  Erfahrungsaustausch zur Optimierung von MySQL-Big-Data-Abfragen (empfohlen)

Artikel empfehlen

Anwendungsszenarien und Lösungen für die MySQL-Komprimierung

Einführung Beschreibt die Anwendungsfälle und Lös...

JS implementiert einen einfachen Zähler

Verwenden Sie HTML, CSS und JavaScript, um einen ...

So installieren Sie Nginx und konfigurieren mehrere Domänennamen

Nginx-Installation CentOS 6.x yum verfügt standar...

MySql fügt Daten erfolgreich ein, meldet aber [Err] 1055 Fehlerlösung

1. Frage: Ich habe in diesen Tagen Einfügevorgäng...

Easyswoole Ein-Klick-Installationsskript und Pagoden-Installationsfehler

Häufig gestellte Fragen Wenn Sie easyswoole zum e...

Wird der veraltete Docker durch Podman ersetzt?

Das Kubernetes-Team hat vor Kurzem angekündigt, d...

Ein einfaches Beispiel für die Verwendung von Vue3-Routing VueRouter4

Routenplanung vue-router4 behält den Großteil der...

Docker-Volumes-Dateizuordnungsmethode

Hintergrund Wenn Sie am Blockchain-Protokollmodul...