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

Zusammenfassung der MySQL InnoDB-Sperren

Inhaltsverzeichnis 1. Gemeinsam genutzte und exkl...

Beispiel für die reguläre Umschreibmethode für Nginx Rewrite (Matching)

Die Rewrite-Funktion von Nginx unterstützt regelm...

So installieren Sie JDK und Mysql auf dem Linux-System Ubuntu 18.04

Plattformbereitstellung 1. JDK installieren Schri...

Interpretation von syslogd- und syslog.conf-Dateien unter Linux

1: Einführung in syslog.conf Für verschiedene Uni...

Leitfaden zum Schreiben von HTML-Code

Gängige Konventions-Tags Selbstschließende Tags, ...

HTML-Sprachenzyklopädie

123WORDPRESS.COM--HTML超文本标记语言速查手册<!-- --> !D...

Ubuntu20.04 VNC-Installation und Konfigurationsimplementierung

VNC ist ein Remote-Desktop-Protokoll. Befolgen Si...

Detaillierte Erklärung der Destrukturierungszuweisungssyntax in Javascript

Vorwort Die erstmals in ES6 eingeführte „Destruct...

So realisieren Sie die vertikale Anordnung von Text mit CSS3

In einem aktuellen Projekt wollte ich Text vertik...

js, um einen interessanten Countdown-Effekt zu erzielen

js interessanter Countdown-Fall. Zu Ihrer Informa...

Einige Parameterbeschreibungen von Texteingabefeldern im Webdesign

<br />In Gästebüchern, Foren und anderen Ort...

So verwenden Sie MySQL-Stresstest-Tools

1. MySQLs eigenes Stresstest-Tool – Mysqlslap mys...