NGINX Monitoring: Verbindungen, Requests, Latenz und Fehler
Kombinieren Sie stub_status-Metriken, Latenz und Statuscodes aus Access Logs sowie OpenTelemetry-Traces, um zu sehen, wie NGINX und die Upstreams dahinter jeden Request bedienen.


Warum NGINX mit Obseria überwachen
Golden Signals am Edge
Request-Rate, Fehlerrate aus Statuscodes und Latenz aus request_time ergeben eine SLO-taugliche Sicht auf jeden Virtual Host.
Proxy oder Upstream?
upstream_response_time neben request_time zeigt, ob Zeit in NGINX, im Netzwerk oder im Backend-Service vergeht.
Requests nachverfolgen
Mit dem NGINX-OpenTelemetry-Modul wird jeder weitergeleitete Request zu einem Span, der im Trace des Upstream-Service weiterläuft.
NGINX-Komponenten, die Obseria überwacht
- stub_status. Angenommene, bearbeitete und aktuelle Verbindungen nach Zustand sowie Requests gesamt über den nginx-Receiver.
- Access Logs. Statuscodes, gesendete Bytes, request_time und upstream_response_time aus den Access Logs.
- Error Logs. Upstream-Timeouts, abgewiesene Verbindungen und Konfigurationsfehler aus dem NGINX Error Log.
- Upstreams. Latenz und Fehler pro Upstream aus Access-Log-Feldern und aus Traces der Backend-Services.
- Tracing. Spans für weitergeleitete Requests aus dem ngx_otel_module mit W3C-Trace-Context-Propagation.
- Kubernetes Ingress. NGINX-basierte Ingress Controller mit Prometheus-Metriken, gescrapt vom Obseria Agent.
Die NGINX-Kennzahlen, auf die es ankommt
Obseria erfasst diese Werte automatisch und zeigt sie in fertigen Dashboards und Alerts.Aufkommen an Besuchern
Zeigt, wie viele Anfragen Ihre Website im Zeitverlauf erhält, damit Sie Spitzen, Kampagnen und ungewöhnliche Einbrüche erkennen.
Zuverlässige Verbindungen
Zeigt, ob jeder Besucher tatsächlich bedient wird oder ob unter Last Verbindungen verloren gehen.
Aktuelle Aktivität
Macht sichtbar, wie viele Besucher gerade bedient werden und wie viele Verbindungen ruhen oder warten.
Tempo der Antworten
Zeigt, wie lange Besucher auf eine Seite warten und wie viel dieser Zeit in Ihren dahinterliegenden Anwendungen entsteht.
Alle 9 Metriken im Detail anzeigen
| Metrik | Einheit | Aussage |
|---|---|---|
nginx.requests | {requests} | Client-Requests gesamt; die Rate ist der Request-Durchsatz. |
nginx.connections_accepted | {connections} | Von NGINX angenommene Client-Verbindungen. |
nginx.connections_handled | {connections} | Bearbeitete Verbindungen; weniger als angenommen heißt, ein Ressourcenlimit wurde erreicht. |
nginx.connections_current{state=active} | {connections} | Offene Client-Verbindungen inklusive inaktiver Keep-Alive-Verbindungen. |
nginx.connections_current{state=reading} | {connections} | Verbindungen, bei denen NGINX den Request-Header liest. |
nginx.connections_current{state=writing} | {connections} | Verbindungen, bei denen NGINX die Antwort schreibt; wächst bei langsamen Upstreams. |
nginx.connections_current{state=waiting} | {connections} | Inaktive Keep-Alive-Verbindungen, die auf den nächsten Request warten. |
$request_time | s | Access-Log-Variable: Gesamtzeit eines Requests vom ersten gelesenen bis zum letzten gesendeten Byte. |
$upstream_response_time | s | Access-Log-Variable: Wartezeit auf die Antwort des Upstreams. |
NGINX-Monitoring in wenigen Minuten einrichten
- Schritt 1
stub_status aktivieren
Stellen Sie stub_status auf einer nur lokal erreichbaren Location wie 127.0.0.1:8080/nginx_status bereit und laden Sie NGINX neu.
- Schritt 2
Metriken und Logs konfigurieren
Ergänzen Sie den nginx-Receiver und einen filelog-Receiver für Access Logs im OpenTelemetry Collector oder Obseria Agent.
- Schritt 3
Tracing ergänzen
Laden Sie das NGINX-OpenTelemetry-Modul und richten Sie es auf den lokalen Collector, damit weitergeleitete Requests in Traces erscheinen.
receivers:
nginx:
endpoint: http://127.0.0.1:8080/nginx_status
collection_interval: 10s
filelog/nginx_access:
include: [/var/log/nginx/access.log]
start_at: end
exporters:
otlphttp:
endpoint: ${env:OBSERIA_OTLP_ENDPOINT}
headers:
Authorization: "Bearer ${env:OBSERIA_TOKEN}"
service:
pipelines:
metrics:
receivers: [nginx]
exporters: [otlphttp]
logs:
receivers: [filelog/nginx_access]
exporters: [otlphttp]
Sofort einsatzbereit
Dashboards, Alerts und SLOs, die bereitstehen, sobald die ersten Daten ankommen.
- NGINX-Übersicht: Requests, Verbindungen nach Zustand
- Statuscodes und 5xx-Rate pro Host
- Request Time im Vergleich zur Upstream Response Time
- Alert: 5xx-Rate über 1 % für 5 Minuten
- Alert: weniger bearbeitete als angenommene Verbindungen
NGINX-Monitoring: Darauf kommt es an
Warum NGINX Monitoring wichtig ist
NGINX ist für viele Anwendungen die Eingangstür: Webserver, Reverse Proxy, Load Balancer und TLS-Terminierung. Jeder Nutzer-Request läuft hindurch, und genau deshalb lässt sich hier am besten messen, was Nutzer tatsächlich erleben. Gleichzeitig werden Probleme hier oft zuerst sichtbar, als 502- und 504-Antworten, selbst wenn die Ursache in einem Upstream-Service liegt. NGINX Monitoring hat daher zwei Aufgaben: NGINX selbst überwachen und es als Aussichtspunkt auf die Services dahinter nutzen.
Obseria erfasst NGINX-Metriken mit dem nginx-Receiver des OpenTelemetry Collectors, parst Access und Error Logs mit dem filelog-Receiver und empfängt Spans aus dem NGINX-OpenTelemetry-Modul.
Die NGINX-Metriken, auf die es ankommt
stub_status-Metriken
Das Open-Source-Modul stub_status liefert wenige, aber nützliche Zähler. nginx.requests ergibt den Request-Durchsatz. nginx.connections_accepted und nginx.connections_handled sollten im gleichen Tempo wachsen; bleibt handled hinter accepted zurück, hat NGINX ein Limit wie worker_connections erreicht. nginx.connections_current teilt offene Verbindungen in reading, writing und waiting auf. Eine wachsende Zahl von writing-Verbindungen bedeutet meist langsame Upstreams, denn NGINX hält die Verbindung, während es auf die Antwort wartet.
Aktivieren Sie das Modul auf einem nur lokal erreichbaren Listener:
server {
listen 127.0.0.1:8080;
location /nginx_status {
stub_status;
allow 127.0.0.1;
deny all;
}
}
Signale aus dem Access Log
Latenz und Fehler stammen aus dem Access Log. Ergänzen Sie $request_time und $upstream_response_time in Ihrem Log-Format. Die Differenz zeigt, ob die Zeit in NGINX und der Client-Verbindung oder im Backend vergeht. Statuscodes liefern die Fehlerrate: 5xx für serverseitige Fehler, 499 für Clients, die vor der Antwort aufgegeben haben.
log_format timed '$remote_addr "$request" $status $body_bytes_sent '
'rt=$request_time urt=$upstream_response_time';
access_log /var/log/nginx/access.log timed;
Typische Probleme und wie Sie sie erkennen
- 502 Bad Gateway: Der Upstream hat die Verbindung abgelehnt oder geschlossen. Suchen Sie im Error Log nach "connect() failed" und prüfen Sie den Zustand des Upstream-Service.
- 504 Gateway Timeout: Der Upstream hat nicht innerhalb von
proxy_read_timeoutgeantwortet. Eine Upstream Response Time nahe am Timeout ist die Frühwarnung. - Verbindungslimits: Bearbeitete Verbindungen bleiben hinter angenommenen zurück, oder das Error Log meldet "worker_connections are not enough".
- Steigende 499er: Clients brechen Requests ab, oft wegen langsamer Antworten oder knapper Client-Timeouts.
- TLS- und Zertifikatsprobleme: Handshake-Fehler im Error Log; kombinieren Sie sie mit synthetischen Checks, die den Ablauf von Zertifikaten prüfen.
Best Practices für NGINX Monitoring
- Lassen Sie stub_status auf einem lokalen Listener und machen Sie es nie öffentlich erreichbar.
- Nutzen Sie ein strukturiertes oder Key-Value-Format für Access Logs mit Zeitfeldern, damit Logs zuverlässig geparst werden.
- Definieren Sie SLOs auf Erfolgsrate und Latenz pro Virtual Host oder Route, gemessen an NGINX.
- Geben Sie den W3C-Trace-Context von NGINX an die Upstreams weiter, damit sich ein langsamer Request Ende zu Ende verfolgen lässt.
- Verwerfen Sie Logzeilen von Health Checks und statischen Assets in der Pipeline, wenn Sie sie nicht brauchen, um das Logvolumen zu begrenzen.
So unterstützt Obseria Ihr NGINX Monitoring
Obseria führt NGINX-Metriken, geparste Access und Error Logs sowie Traces in Obseria Lake zusammen. TopoGraph platziert NGINX vor den Services, die es weiterleitet, sodass eine 5xx-Spitze direkt auf den betroffenen Upstream zeigt. Obseria Intelligence korreliert Änderungen bei Fehlern und Latenz mit Deployments, Upstream-Zustand und Host-Metriken und erklärt die wahrscheinliche Ursache mit einer Beweiskette. Die Obseria Pipeline verwirft verrauschte Logzeilen und maskiert IP-Adressen oder Query Strings vor der Speicherung; gefilterte Logs kosten nur den Ingest. Dashboards, Alerts und SLOs sind enthalten, und synthetische Checks von mehr als 50 Standorten ergänzen die Außensicht auf Ihre Endpunkte.
Beginnen Sie mit stub_status und dem Access Log auf einem Host, ergänzen Sie Tracing für die wichtigsten Routen und rollen Sie dieselbe Collector-Konfiguration auf jede NGINX-Instanz aus. So erhalten Sie Request-Rate, Fehlerrate und Latenz pro Route, die Sie direkt in SLOs überführen können.
Verwandte Integrationen
Passende Funktionen
Netzwerk-Monitoring
Verfolgen Sie Traffic zwischen Hosts, Containern, Clouds und Rechenzentren. Obseria zeigt Latenz, Verlust und Fehler im Netzwerkpfad und welche Services und Nutzer betroffen sind.
Mehr erfahrenDistributed Tracing
Verfolgen Sie jeden Request über Services, Queues und Datenbanken hinweg und finden Sie den langsamen Span oder die fehlerhafte Abhängigkeit in Sekunden.
Mehr erfahrenSynthetisches Monitoring
Testen Sie kritische User Flows und APIs rund um die Uhr von über 50 Standorten und erkennen Sie Ausfälle, langsame Antworten und defekte Abläufe vor Ihren Kunden.
Mehr erfahrenMehr erfahren
Die vier Golden Signals: Latenz, Traffic, Fehler und Sättigung
Die vier Golden Signals erklärt: Latenz, Traffic, Fehler und Sättigung, der Bezug zu RED- und USE-Methode und die Messung mit OpenTelemetry.
Was ist ein SLO (Service Level Objective)?
Was ist ein SLO? So funktionieren SLIs, SLOs, SLAs und Error Budgets: Berechnung, sinnvolle Zielwerte und Burn-Rate-Alerting mit Beispielen.
Häufige Fragen zum NGINX-Monitoring
Der OpenTelemetry-nginx-Receiver liest stub_status: Requests, angenommene und bearbeitete Verbindungen sowie aktuelle Verbindungen nach Zustand. Latenz und Statuscodes stammen aus Access Logs, Traces aus dem NGINX-OpenTelemetry-Modul.
Nein. stub_status, Access Logs und das OpenTelemetry-Modul stehen für Open-Source-NGINX zur Verfügung.
Ergänzen Sie $request_time und $upstream_response_time in Ihrem Access-Log-Format. Obseria parst die Felder, sodass Sie Perzentile pro Host, Route und Upstream darstellen können.
Ja. Das NGINX-OpenTelemetry-Modul erzeugt Spans für weitergeleitete Requests und gibt den W3C-Trace-Context an Upstream-Services weiter, die den Trace fortsetzen.
Ja. Betreiben Sie den Obseria Agent als DaemonSet, um Container-Logs zu sammeln und Metriken zu scrapen. NGINX-basierte Ingress Controller mit Prometheus-Metriken werden ebenfalls erfasst.
Starten Sie heute mit dem NGINX-Monitoring
Binden Sie NGINX in Minuten per OpenTelemetry oder Obseria Agent an. 14 Tage kostenlos.