So sammeln Sie Nginx-Protokolle mit Filebeat

So sammeln Sie Nginx-Protokolle mit Filebeat

Mithilfe von Nginx-Protokollen lassen sich Benutzeradressstandorte, Verhaltensprofile usw. analysieren. Wie können wir mit Elastic Stack eine zentrale Datenerfassung, Datenbereinigung, Datenlandung und Datenvisualisierung durchführen, um die Daten wirklich wertvoll zu machen?

Architektur-Design

Im Elastic Stack wird Filebeat zum Sammeln von Nginx-bezogenen Protokollen verwendet, Elasticsearch ist eine Engine zum Speichern und Suchen von Daten und Kibana ist ein Tool zur Datenvisualisierung.

Bei Nginx werden im Verzeichnis /var/log/nginx die relevanten Logs abgelegt, nämlich das Zugriffslog access.log und das Fehlerlog error.log.

Bildbeschreibung hier einfügen

Wenn es sich um eine Bare-Metal-Umgebung handelt, können Sie Filebeat direkt auf demselben Host installieren, um Protokolldateien zu sammeln.
Wenn es sich um eine Docker-Umgebung handelt, wird empfohlen, dass Nginx Volume verwendet, um Protokolldateien für die Filebeat-Sammlung freizugeben.
Wenn es sich um eine Kubernetes-Umgebung handelt, wird empfohlen, dem Pod einen Filebeat-Container hinzuzufügen, um PV zu sammeln.

Es gibt unterschiedliche Sammlungslösungen für unterschiedliche Szenarien. Einige können Daemonset verwenden, um Protokolle auf dem Host zu sammeln, während andere Sidecar verwenden können, um Protokolle zu sammeln, je nach Geschäftsszenario.

Implementierungsmethoden

Nehmen Sie die Docker-Umgebung als Beispiel

Nginx

Erstellen Sie ein Speichervolume, um die gemeinsame Bereitstellung von Nginx- und Filebeat-Containern zu erleichtern
docker volume create nginx-log-volume

Starten Sie den Nginx-Container und ordnen Sie das Speichervolume dem Protokollverzeichnis zu
docker run -d --name nginx -p 80:80 -v nginx-log-volume:/var/log/nginx nginx:latest

Geben Sie den Container ein, um die Konfiguration zu ändern
docker exec -it nginx /bin/bash

Da das Standardprotokoll in der Containerumgebung nach stdout ausgegeben wird, heben Sie diese Einstellung auf und geben Sie eine Datei an
unlink /var/log/nginx/access.log
unlink /var/log/nginx/error.log
touch /var/log/nginx/access.log /var/log/nginx/error.log
nginx -s reload

Filebeat

Starten Sie den Filebeat-Container und ordnen Sie das Speichervolume dem Datenverzeichnis zu
docker run -d --name filebeat --user=root -v nginx-log-volume:/data elastic/filebeat:7.9.2

Geben Sie den Container ein, um die Konfiguration zu ändern
docker exec -it filebeat /bin/bash

Ändern Sie die Konfiguration und fügen Sie die Hosts für Elasticsearch und Kibana hinzu
vi filebeat.yml

Datei „filebeat.config“:
 Module:
  Pfad: ${path.config}/modules.d/*.yml
  reload.enabled: falsch

Prozessoren:
 - add_cloud_metadata: ~
 - add_docker_metadata: ~

Ausgabe.elasticsearch:
 Hosts: „elasticsearch:9200“
 Benutzername: "elastic"
 Passwort: "xxx"
setup.kibana:
 Host: "kibana:5601"

Aktivieren Sie das Nginx-Sammlungsmodul

filebeat modules enable nginx

Nginx-Sammlungskonfiguration bearbeiten
vi modules.d/nginx.yml

- Modul: nginx
 Zugang:
  aktiviert: true
  var.paths: ["/data/access.log*"]
 Fehler:
  aktiviert: true
  var.paths: ["/data/error.log*"]

Richten Sie Filebeat ein, um ein Indexmuster und ein Dashboard auf Kibana zu erstellen
filebeat setup

Starten Sie Filebeat neu, damit die Wirkung
docker restart filebeat

Visualisierung

Verwenden Sie die Dashboard-Funktion in Kibana, um den Zugriff von Nginx auf Protokolle, den Standort der Benutzeradresse und Browserinformationen anzuzeigen

Bildbeschreibung hier einfügen

Zeigt die spezifischen Anforderungsinformationen von Nginx für Zugriffsprotokolle und Fehlerprotokolle an.

Bildbeschreibung hier einfügen

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Nginx-Protokollanpassung und Aktivierung des Protokollpuffers
  • 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

<<:  Zusammenfassung der Fallstricke, die Ihnen bei der Entwicklung von WeChat-Applets möglicherweise noch nicht begegnet sind

>>:  Ein Problem mit der Bereitstellung von MySQL 5.5

Artikel empfehlen

Vue definiert private Filter und grundlegende Nutzung

Die Methoden und Konzepte privater und globaler F...

So fügen Sie dem Tomcat-Dienst einen Java-Startbefehl hinzu

Mein erstes Serverprogramm Ich lerne gerade, Onli...

Detaillierte Erklärung der in Node.js integrierten Module

Inhaltsverzeichnis Überblick 1. Pfadmodul 2. Bis ...

Implementierungscode der HTML-Floating-Promptbox-Funktion

Allgemeine Formulareingabeaufforderungen belegen ...

CentOS 6.5 Installations-Tutorial zu MySQL 5.7

1. Neue Funktionen MySQL 5.7 ist ein spannender M...

Vue3 verwendet Axios Interceptor zum Drucken von Front-End-Protokollen

Inhaltsverzeichnis 1. Einleitung 2. Verwenden Sie...

Detaillierte Erläuterung der Nginx-Rewrite-Jump-Anwendungsszenarien

Anwendungsszenario 1: Domänennamenbasierte Umleit...

Detaillierte Erläuterung der MySQL-Lösung zur USE DB-Überlastung

Wenn wir auf einen Fehler stoßen, denken wir oft ...