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

CSS3 erstellt 3D-Würfel-Ladeeffekte

Kurzbeschreibung Dies ist ein cooler 3D-Würfel-Vo...

Eine kurze Diskussion über den Linux-Signalmechanismus

Inhaltsverzeichnis 1. Signalliste 1.1. Echtzeitsi...

Tabelle td Bild horizontal und vertikal zentriert Code

HTML Code: Code kopieren Der Code lautet wie folgt...

Webdesign: Skriptmaterialien rekonstruieren das Benutzererlebnis

<br />Originaltext: http://blog.rexsong.com/...

Eine kurze Diskussion über ereignisgesteuerte Entwicklung in JS und Nodejs

Inhaltsverzeichnis Ereignisgesteuert und Publish-...

Konfigurieren Sie die Java-Entwicklungsumgebung in Ubuntu 20.04 LTS

Laden Sie das Java Development Kit jdk herunter D...

Beispiel-Tutorial zur Verwendung der Summenfunktion in MySQL

Einführung Heute werde ich die Verwendung der Sum...

Erkennung und Lösung von Vue.$set-Fehlerfallen

Ich habe zufällig festgestellt, dass Vue.$set im ...

Vue implementiert zwei Methoden zur Steuerung der Routing-Berechtigung

Inhaltsverzeichnis Methode 1: Routing von Metainf...

Installieren des Win10-Systems auf VMware Workstation 14 Pro

Dieser Artikel beschreibt zu Ihrer Information, w...