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 verarbeiten Sie Blob-Daten in MySQL

Der spezifische Code lautet wie folgt: Paket epoi...

Regeln für die Gestaltung des Anmeldeformulars

Ich habe „Patterns for Sign Up & Ramp Up“ vor ...

CSS: besuchte geheime Erinnerungen des Pseudoklassenselektors

Gestern wollte ich a:visited verwenden, um die Fa...

So stellen Sie Daten mit Binlog in MySQL 5.7 wieder her

Schritt 1: Stellen Sie sicher, dass MySQL Binlog ...

Eine detaillierte Analyse und Verarbeitung von MySQL-Alarmen

Vor kurzem hat ein Dienst einen Alarm ausgelöst, ...

Methode zur Verhinderung von SSH-Cracking auf Linux-Servern (empfohlen)

1. Der Linux-Server konfiguriert /etc/hosts.deny ...

Detaillierte Erklärung verschiedener Join-Zusammenfassungen von SQL

SQL Left Join, Right Join, Inner Join und Natural...

MySQL-Grundlagen-Tutorial: Detaillierte Erklärung der DML-Anweisungen

Inhaltsverzeichnis DML-Anweisungen 1. Datensätze ...

So zeigen Sie den Datenbankinstallationspfad in MySQL an

Wir können den Installationspfad von MySQL über d...

Erklärung der MySQL-Indextypen Normal, Unique und Full Text

Zu den Indextypen von MySQL gehören Normalindex, ...

Warum wirkt sich die Verwendung von Limits in MySQL auf die Leistung aus?

Lassen Sie mich zunächst die MySQL-Version erklär...