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

React verwendet Emotionen zum Schreiben von CSS-Code

Inhaltsverzeichnis Einführung: Installation von E...

Verständnis für Webdesign-Layout

<br />Hier ergibt sich ein Widerspruch: In k...

MySQL 5.7.10 Installations- und Konfigurations-Tutorial unter Windows

MySQL bietet zwei verschiedene Versionen für unte...

Web-Theorie: Bringen Sie mich nicht zum Nachdenken über Lesehinweise

Kapitel 1 <br />Das wichtigste Prinzip, um ...

Detaillierte Erklärung des Linux-Kernel-Makros Container_Of

Inhaltsverzeichnis 1. Wie werden Strukturen im Ge...

15-minütiges paralleles Artefakt GNU Parallel Erste Schritte

GNU Parallel ist ein Shell-Tool zum parallelen Au...

JS implementiert die zufällige Generierung von Bestätigungscodes

In diesem Artikelbeispiel wird der spezifische JS...

Vue+Element - benutzerdefinierte Abfragekomponente

In diesem Artikel wird hauptsächlich das Vue-Proj...

Beispiel für eine einfache Operation einer MySQL-Abfrageanweisung

Dieser Artikel veranschaulicht anhand von Beispie...

Grundkenntnisse der MySQL-Datenbank

Inhaltsverzeichnis 1. Datenbanken verstehen 1.1 D...

MySQL-Joinpufferprinzip

Inhaltsverzeichnis 1. MySQL-Joinpuffer 2. JoinBuf...

Zusammenfassung der grundlegenden Verwendung des $-Symbols in Linux

Linux-Version: CentOS 7 [root@azfdbdfsdf230lqdg1b...

Häufige Browserkompatibilitätsprobleme (Zusammenfassung)

Browserkompatibilität ist nichts anderes als Stil...

Auszeichnungssprache - Titel

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...