NGINX-Überwachung über Telegraf in NetCrunch
Dieses Dokument beschreibt, wie Telegraf konfiguriert wird, um NGINX-Metriken zu sammeln und über den Telemetry Node-Endpunkt an NetCrunch zu senden.
Übersicht
Telegraf kann NGINX-Servermetriken mithilfe des integrierten NGINX-Input-Plugins sammeln. Die Daten werden über HTTP POST an einen Telemetry Node-Endpunkt an NetCrunch weitergeleitet.
Wie NetCrunch NGINX-Telemetrie unterstützt
NetCrunch empfängt Daten von Telegraf über einen REST-Endpunkt des Telemetry Node. Telemetry Nodes akzeptieren JSON-formatierte Daten und speichern die empfangenen Werte als Zähler oder Alarmstatus.
Unterstützte Endpunkte
Cloud-REST-Endpunkt:
https://gw.netcrunch.io/tm/v1/<serverId>@<sensorId>@<nodeId>/update
Lokaler REST-Endpunkt:
<NetCrunch-WebServer>/api/rest/1/sensors/<sensorId>@<nodeId>/update
Beispiel für einen Cloud-Endpunkt:
https://gw.netcrunch.io/tm/v1/SRV-001@sensor01@node100/update
Die Daten werden über die HTTP-POST-Methode mit dem Inhaltstyp application/json gesendet. Eine IP-Ermittlung ist nicht erforderlich, da der Telemetry Node logisch in der NetCrunch-Struktur vorhanden ist.
Datenfluss
Die NGINX-Überwachung über Telegraf läuft nach folgendem Prozess ab:
-
Bereitstellung des NGINX-Status — NGINX stellt Metriken über den Endpunkt des stub_status-Moduls bereit.
-
Sammlung durch Telegraf — Das NGINX-Input-Plugin von Telegraf fragt den Status-Endpunkt in regelmäßigen Abständen ab.
-
Weiterleitung der Daten — Telegraf leitet die gesammelten Metriken per HTTP POST an den NetCrunch Telemetry Node weiter.
-
Verarbeitung durch NetCrunch — Der Telemetry Node übernimmt die eingehenden Metriken und speichert sie als Zähler oder Alarmstatus.
NGINX-Konfiguration
Aktivieren Sie das stub_status-Modul, um Metriken bereitzustellen.
Konfigurationsbeispiel
Fügen Sie der NGINX-Konfigurationsdatei (z. B. /etc/nginx/nginx.conf oder /etc/nginx/sites-available/default) Folgendes hinzu:
server { listen 127.0.0.1:80; server_name localhost;location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; }}
NGINX neu laden:
nginx -t systemctl reload nginx
Status-Endpunkt überprüfen:
curl http://127.0.0.1/nginx_status
Erwartete Ausgabe:
Active connections: 45 server accepts handled requests 657 657 1126 Reading: 0 Writing: 36 Waiting: 9
Telegraf-Konfiguration
Die zentrale Konfigurationsdatei ist /etc/telegraf/telegraf.conf.
Grundlegende Konfiguration
[agent] interval = "30s" flush_interval = "30s" debug = false quiet = true[[inputs.nginx]] urls = ["http://127.0.0.1/nginx_status"] response_timeout = "5s"
[[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-001@sensor01@node100/update" method = "POST" data_format = "json" content_encoding = "identity" [outputs.http.headers] Content-Type = "application/json"
Konfigurationsparameter
Agent-Abschnitt:
- interval — Häufigkeit der Metriksammlung
- flush_interval — Wie oft Daten an Ausgaben gesendet werden
- debug — Detaillierte Protokollierung aktivieren
- quiet — Meldungen ohne Fehler unterdrücken
NGINX-Input:
- urls — Liste der abzufragenden NGINX-Status-Endpunkte
- response_timeout — Maximale Wartezeit auf eine Antwort
HTTP-Ausgabe:
- url — NetCrunch Telemetry Node-Endpunkt
- method — HTTP-Methode (POST)
- data_format — Ausgabeformat (JSON)
- content_encoding — Kodierungstyp
- headers — HTTP-Header einschließlich des Inhaltstyps
Gesammelte Metriken
Das NGINX-Input-Plugin sammelt die folgenden Metriken:
Aktive Verbindungen:
- nginx_active — Anzahl der aktiven Clientverbindungen
Servermetriken:
- nginx_accepts — Gesamtzahl der akzeptierten Clientverbindungen
- nginx_handled — Gesamtzahl der verarbeiteten Verbindungen
- nginx_requests — Gesamtzahl der Clientanfragen
Verbindungsstatus:
- nginx_reading — Anzahl der Verbindungen, die Request-Header lesen
- nginx_writing — Anzahl der Verbindungen, die Antworten an Clients schreiben
- nginx_waiting — Anzahl der inaktiven Verbindungen, die auf Anfragen warten
Erweiterte Konfiguration
Mehrere NGINX-Instanzen
Überwachen Sie mehrere NGINX-Server:
[[inputs.nginx]] urls = [ "http://server1.local/nginx_status", "http://server2.local/nginx_status", "http://server3.local/nginx_status" ] response_timeout = "5s"
Benutzerdefinierte Tags hinzufügen
Zusätzliche Metadaten einfügen:
[[inputs.nginx]] urls = ["http://127.0.0.1/nginx_status"] response_timeout = "5s" [inputs.nginx.tags] environment = "production" datacenter = "dc01"
HTTPS-Endpunkte
Für den NGINX-Status über HTTPS:
[[inputs.nginx]] urls = ["https://server.local/nginx_status"] response_timeout = "5s" insecure_skip_verify = false # tls_ca = "/path/to/ca.crt"
Anwendungsfälle
Überwachung der Webserverleistung
Verfolgen Sie die Kapazität der Verbindungsverarbeitung und identifizieren Sie Leistungsengpässe auf stark ausgelasteten Webservern.
Zustandsprüfungen für Load Balancer
Überwachen Sie NGINX-Instanzen, die als Reverse-Proxys oder Load Balancer fungieren, um eine ordnungsgemäße Verteilung der Anfragen sicherzustellen.
Überwachung von Microservices-Gateways
Verfolgen Sie Metriken von NGINX-API-Gateways, die Datenverkehr von Microservices verarbeiten.
Überwachung mehrerer Instanzen
Sammeln Sie Metriken von mehreren NGINX-Instanzen, die auf verschiedenen Servern oder in verschiedenen Containern verteilt sind.
Zusammenfassung
Telegraf ermöglicht eine unkomplizierte Integration mit NGINX über das stub_status-Modul. Die Metriken werden in regelmäßigen Abständen gesammelt und zur zentralen Überwachung und Alarmierung an NetCrunch Telemetry Nodes weitergeleitet. Dieser Ansatz macht eine SNMP-Konfiguration überflüssig und bietet Echtzeittransparenz über die NGINX-Leistung.
Wichtige Funktionen: - Sammlung von NGINX-Metriken in Echtzeit - Unterstützung mehrerer NGINX-Instanzen - Zentrale Überwachung über NetCrunch Telemetry Nodes - Kein Polling durch den NetCrunch-Server erforderlich
Siehe auch
Telegraf-Integration mit NetCrunch
Vollständige Anleitung zur Verwendung von Telegraf mit NetCrunch Telemetry Nodes.
Telemetry Node
Virtueller Knotentyp zum Empfang externer Metriken und Ereignisse über REST oder OTLP.
NetCrunch-Datenformate verstehen
Detaillierte Erläuterung der von NetCrunch akzeptierten JSON-, XML- und CSV-Formate.
Daten an NetCrunch senden
Anleitung zur Verwendung der REST API, des OTLP-Gateways und dateibasierter Sensoren zum Übertragen von Daten an NetCrunch.