PDF

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:

  1. Bereitstellung des NGINX-Status — NGINX stellt Metriken über den Endpunkt des stub_status-Moduls bereit.

  2. Sammlung durch Telegraf — Das NGINX-Input-Plugin von Telegraf fragt den Status-Endpunkt in regelmäßigen Abständen ab.

  3. Weiterleitung der Daten — Telegraf leitet die gesammelten Metriken per HTTP POST an den NetCrunch Telemetry Node weiter.

  4. 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.