So passen Sie die Protokollebene von Nginx in Docker an

So passen Sie die Protokollebene von Nginx in Docker an

Einleitung

Kürzlich haben wir festgestellt, dass eine unserer Anwendungen viele Protokolle generiert, und die meisten dieser Protokolle sind access_log von nginx. Standardmäßig sammeln wir die Standardausgabe in es, um die Anwendungsprotokolle zu analysieren, aber viele davon sind access_log, was die echten Fehlerprotokolle verdecken kann. Daher möchten wir diese access_logs manchmal nicht ausgeben. Das Beispiel lautet wie folgt:

Nginx-Dockerdatei

Ich habe auf Github nach dem Dockerfile von Nginx gesucht, docker-nginx/Dockerfile bei master · nginxinc/docker-nginx (github.com).

Sie können sehen, dass nginx access_log und error_log standardmäßig mit der Standardausgabe verknüpft, weshalb wir access_log in Docker-Protokollen oder Kubectl-Protokollen sehen können

Wir können cat /etc/nginx/nginx.conf im Container ausführen, um die Standard-Nginx-Konfiguration anzuzeigen

Standard-Nginx-Konfiguration

Aus dem Obigen können wir ersehen, dass die error_log-Ebene „Notice“ lautet. Bei Bedarf kann sie auch auf „Warnung/Fehler“ konfiguriert werden. Informationen zur spezifischen Protokollkonfiguration finden Sie in der offiziellen Dokumentation. Die konfigurierbaren Protokollebenen sind: Debug, Info, Notice, Warn, Error, Crit, Alert, Emerg

Damit die Ausgabe nicht direkt auf die Standardausgabe erfolgt und nicht so viele Logs entstehen, lässt sich access_log mit off oder über einen anderen Pfad direkt deaktivieren.

Neue Konf

Es ist bequemer zu wissen, wie man die Konfiguration ändert. Wir müssen nur die Standardkonfiguration durch unsere neue Konfiguration ersetzen. Die neue Konfiguration sieht wie folgt aus:

Benutzer nginx;
Arbeiterprozesse automatisch;

error_log /var/log/nginx/error.log Fehler;
pid /var/run/nginx.pid;

Ereignisse {
    Arbeiterverbindungen 1024;
}

http {
    /etc/nginx/mime.types einschließen;
    Standardtyp Anwendung/Oktett-Stream;

    Zugriff_Abmeldung;

    sendfile an;
    #tcp_nopush ein;

    KeepAlive-Timeout 65;

    #gzip ein;

    schließen Sie /etc/nginx/conf.d/*.conf ein;
}

Überschreiben Sie dann im Dockerfile die Standardkonfiguration durch die neue:

# Benutzerdefinierte Nginx-Konfiguration kopieren
KOPIEREN /conf/nginx.conf /etc/nginx/nginx.conf

Mehr

Wenn Sie access_log aufzeichnen möchten, dies aber nicht direkt tun möchten, können Sie access_log auf einen anderen Dateinamen konfigurieren. Es wird dann in die entsprechend konfigurierte Datei geschrieben, aber nicht direkt in die Standardausgabe ausgegeben, sodass viele der gesammelten Protokolle nicht access_log sind.

Wenn Sie nicht protokollieren möchten, können Sie die Off-Konfiguration direkt verwenden, um access_log zu deaktivieren. Wenn Sie selektiv protokollieren möchten, z. B. 2xx/3xx nicht protokollieren möchten, können Sie auch andere Situationen protokollieren. Die Nginx-Dokumentation stellt dies ebenfalls vor. Sie können entsprechend Ihren Anforderungen auswählen.

Karte $status $loggable {
    ~^[23] 0;
    Standardwert 1;
}
access_log /Pfad/zu/access.log kombiniert wenn=$loggable;

Verweise

  • https://notestack.io/public/configure-nginx-logging-in-a-docker-container/874f1253-cf1a-4c62-9d2d-467ab23c258d
  • https://docs.nginx.com/nginx/admin-guide/monitoring/logging/
  • https://github.com/nginxinc/docker-nginx/blob/master/stable/alpine/Dockerfile

Dies ist das Ende dieses Artikels zum Anpassen der Protokollebene von nginx in Docker. Weitere Informationen zur Protokollebene von nginx in Docker 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 Idee des Rollens von Nginx-Protokollen in Docker

<<:  Implementierungsschritte zur Kapselung von Komponenten basierend auf React

>>:  Deaktivieren Sie die automatische Vervollständigung in HTML, damit der Verlauf nicht angezeigt wird

Artikel empfehlen

So erstellen Sie ein Drag & Drop-Plugin mit benutzerdefinierten Vue-Direktiven

Wir alle kennen die Drag-and-Drop-Funktion von HT...

Beispiel für die Konfiguration von nginx zur Implementierung von SSL

Umgebungsbeschreibung Serversystem: Ubuntu 18.04 ...

Zusammenfassung der Unterschiede zwischen SQL und NoSQL

Hauptunterschiede: 1. Typ SQL-Datenbanken werden ...

Schritte zur Erstellung einer React Fiber-Struktur

Inhaltsverzeichnis React-Fasererstellung 1. Bevor...

Analyse von Context-Anwendungsszenarien in React

Kontextdefinition und Zweck Der Kontext bietet ei...

Detaillierte Schritte zur Installation von Mysql5.7.19 mit yum auf Centos7

In der Yum-Quelle von Centos7 ist standardmäßig k...

MySQL-Konfiguration SSL-Master-Slave-Replikation

MySQL5.6 So erstellen Sie SSL-Dateien Offizielle ...

Interpretation und Verwendung verschiedener React-State-Manager

Zunächst müssen wir wissen, was ein Zustandsmanag...

Das schnellste Textsuchtool von Linux: ripgrep (die beste Alternative zu grep)

Vorwort Apropos Textsuchtools: Jeder sollte grep ...