Wie wir im Abschnitt „So verbessern Sie die Sichtbarkeit in Kubernetes“ besprochen haben, besteht eine der größten Herausforderungen für App-Entwicklungs- und Bereitstellungsteams darin, Einblick in die Leistung, Sicherheit und Verfügbarkeit der App zu erhalten. Diese Erkenntnisse helfen den Teams, Probleme schnell zu beheben und sich proaktiv auf Verkehrsspitzen vorzubereiten.
Tools zur Verkehrsverwaltung – wie beispielsweise Load Balancer, Reverse-Proxys, API-Gateways und Ingress-Controller – generieren eine Fülle von Informationen über den Zustand Ihrer App und Infrastruktur. Sie können diese wertvollen Messdaten in Echtzeit auf dem NGINX Plus-Dashboard verfolgen. Außerdem kann NGINX Plus Messdaten an Überwachungstools von Drittanbietern weiterleiten, um Ihnen durch Visualisierungen der Leistung im Zeitverlauf zusätzliche Einblicke zu geben. Zwei der beliebtesten Tools arbeiten zusammen, um Ihnen diese Zeitreihendiagramme zu liefern:
Das Prometheus-njs -Modul erleichtert die Übermittlung von NGINX Plus-Metriken an Prometheus und Grafana. Es verwendet das NGINX JavaScript-Modul (NJS) und die NGINX Plus-API, um Metriken von NGINX Plus auf den Prometheus-Server zu exportieren.
In dieser Videodemo behandeln wir alle Schritte zum Einrichten von NGINX Plus, Prometheus und Grafana sowie zum Erstellen von Grafana-Diagrammen.
Um Ihnen bei der Einrichtung Ihrer eigenen Implementierung zu helfen, fassen wir in den folgenden Abschnitten die Schritte zusammen und ordnen sie im Video den Zeitpunkten zu:
Hinweise:
Bevor wir mit der Demo begonnen haben, haben wir die folgenden Voraussetzungen erfüllt.
Installieren Sie das Prometheus-njs -Modul. Wir verwenden in der Demo Ubuntu 20.04 und dies ist der entsprechende Befehl. Informationen zu anderen Betriebssystemen finden Sie in der Dokumentation .
$ sudo apt-get installiere nginx-plus-module-prometheus
Öffnen Sie /etc/nginx/nginx.conf mit Ihrem bevorzugten Texteditor und fügen Sie die folgende load_module-
Direktive im Kontext der obersten Ebene außerhalb des http-
Blocks hinzu.
load_module module/ngx_http_js_module.so;
# vorhandene Direktiven der obersten Ebene
http {
#...
}
(Optional) Erhöhen Sie die Größe des Puffers zum Speichern von Antworttexten von Unteranforderungen (die Standardgröße beträgt je nach Plattform 4 KB oder 8 KB ). Dies verhindert zu
große
Subrequest
-
Antwortfehler, die im NGINX-Fehlerprotokoll erscheinen. Fügen Sie die folgende subrequest_output_buffer_size
-Direktive im HTTP-
Block hinzu.
http { #...
Subrequest_Output_Buffer_size 32k;
}
Speichern Sie nginx.conf und führen Sie diesen Befehl aus, um zu überprüfen, ob die NGINX-Konfiguration syntaktisch korrekt ist.
$ sudo nginx -t nginx: die Syntax der Konfigurationsdatei /etc/nginx/nginx.conf ist in Ordnung nginx: Der Test der Konfigurationsdatei /etc/nginx/nginx.conf war erfolgreich
Wechseln Sie in das Verzeichnis „conf.d“ und listen Sie die Dateien auf.
$ cd conf.d $ ls default.conf
Die Datei default.conf definiert einen virtuellen Server, der auf Port 80 lauscht. Der virtuelle Server für Prometheus muss auf diesem Port lauschen. Entfernen Sie daher default.conf, um ihn freizugeben.
$ sudo rm default.conf
Erstellen Sie mit Ihrem bevorzugten Texteditor eine neue Datei namens prometheus.conf mit dem folgenden Inhalt.
js_import /usr/share/nginx-plus-module-prometheus/prometheus.js;
Server {
Standort = /Metriken {
js_content prometheus.metrics;
}
Standort /API {
API;
}
}
Die Direktive js_import
gibt den Speicherort des NGINX-JavaScript-Codes an, der die von der NGINX Plus-API generierten Metriken in das von Prometheus benötigte Format konvertiert. (Sie müssen nicht zusätzlich eine load_module-
Direktive für Prometheus-njs hinzufügen.)
Der erste Standortblock
bietet Zugriff auf die Prometheus-formatierten Metriken. Der zweite Standortblock
aktiviert die NGINX Plus-API , die die Rohmetriken generiert und sie Prometheus zur Verfügung stellt.
Notiz: In Produktionsumgebungen empfehlen wir dringend, den Zugriff auf die NGINX Plus-API wie in unserer Dokumentation beschrieben einzuschränken.
Weitere Informationen zum Prometheus-njs -Modul finden Sie in unserer Dokumentation .
Speichern Sie prometheus.conf , überprüfen Sie die korrekte Syntax wie in Schritt 4 und führen Sie diesen Befehl aus, um NGINX Plus zu starten.
$ sudo nginx
Erstellen Sie eine neue Prometheus-Konfigurationsdatei im YAML-Format namens prometheus.yml im Verzeichnis /etc/prometheus mit diesem Inhalt (basierend auf einer Standardkonfigurationsdatei von der Prometheus-Website). Wie gezeigt besteht die einzige vorzunehmende Änderung darin, die IP-Adresse und den Port des NGINX Plus-Servers im Feld „Ziele“ hinzuzufügen.
global: scrape_interval: 15 s externe Beschriftungen: Monitor: „Codelab-Monitor“ Scrape-Konfigurationen: – Jobname: „Prometheus“ Scrape-Intervall: 5s static_configs: - Ziele: [' NGINX_Plus_IP_address :80']
Einzelheiten zur Prometheus-Konfiguration, einschließlich weiterer Optionen, die Sie in die Konfigurationsdatei aufnehmen können, finden Sie in der Prometheus-Dokumentation .
Speichern Sie prometheus.yml und führen Sie dann den folgenden Befehl aus. Es zieht Prometheus vom Docker Hub und stellt es auf Port 9090 bereit.
$ sudo docker run --network="host" -d -p 9090:9090 -v ~/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
Navigieren Sie in einem Browser zur IP-Adresse und dem Port des neuen Prometheus-Servers. Eine Seite wie die folgende bestätigt, dass der Server funktioniert.
Überprüfen Sie, ob Prometheus auf den Feed der NGINX Plus-Metriken zugreift. Klicken Sie auf das Globussymbol links neben der Schaltfläche „Ausführen“ in der oberen rechten Ecke des Fensters. Eine Liste mit Messwerten ähnlich der folgenden wird angezeigt.
Führen Sie diesen Befehl aus, um Grafana vom Docker Hub abzurufen und auf Port 3000 verfügbar zu machen:
[Terminal]$ sudo docker run -d -p 3000:3000 grafana/grafana
Informationen zu anderen Installationsmethoden finden Sie in der Grafana-Dokumentation .
Navigieren Sie in einem Browser zur IP-Adresse und dem Port des neuen Grafana-Servers. Die Grafana-Anmeldeseite bestätigt, dass der Server funktioniert.
Melden Sie sich an, indem Sie „admin“ in die Felder „E-Mail“, „Benutzername“ und „Passwort“ eingeben. Wir empfehlen Ihnen dringend, wie aufgefordert ein neues, sicheres Passwort festzulegen. Aus Zeitgründen überspringen wir diesen Schritt in der Demo jedoch.
Registrieren Sie auf der angezeigten Grafana-Homepage Prometheus als Datenquelle , indem Sie den Anweisungen in der Grafana-Dokumentation folgen. Das Video zeigt die Schritte in der Grafana-GUI.
Notiz: Geben Sie in Schritt 5 der Grafana-Anweisungen anstelle des angezeigten URL-Beispiels ( http://localhost:9090 ) die IP-Adresse Ihres Prometheus-Servers (und Port 9090) ein.
Nachdem Sie in Schritt 7 der Grafana-Anleitung auf die Schaltfläche „Speichern und testen“ geklickt haben, zeigen das grüne Kästchen mit einem Häkchen und die Meldung „Datenquelle funktioniert“ an, dass Grafana erfolgreich eine Verbindung zum Prometheus-Server hergestellt hat.
Während Prometheus für die Anzeige nur einer einzigen Metrik nützlich ist, erleichtert Grafana die Anzeige einer Sammlung von Metriken in einem einzigen Diagramm.
So erstellen Sie ein Grafana-Diagramm:
Klicken Sie in der Navigationsleiste links auf der Seite auf das Pluszeichen ( + ) (siehe Screenshot in Schritt 4 des vorherigen Abschnitts). Wählen Sie „Dashboard“ im Dropdownmenü „Erstellen“ aus.
Klicken Sie auf das Feld „Leeres Panel hinzufügen“ .
Überprüfen Sie, ob auf der angezeigten Seite „ Neues Dashboard/Bearbeitungsfeld“ Prometheus im Feld „Datenquelle“ der Registerkarte „ Abfrage “ in der unteren Hälfte der Seite angezeigt wird. Wenn nicht, wählen Sie Prometheus aus dem Dropdown-Menü.
Geben Sie nginx
in das Feld „Metrikenbrowser“ > ein. Eine Liste mit NGINX Plus-Metriken wird angezeigt.
Hier finden Sie kurze Beschreibungen, die Ihnen einen Eindruck davon vermitteln, welche Informationen sie bieten.
nginxplus_connections_accepted
– Akzeptierte Clientverbindungennginxplus_connections_active
– Aktive Clientverbindungennginxplus_connections_dropped
– Abgebrochene Clientverbindungen wurden abgebrochennginxplus_connections_idle
– Inaktive Clientverbindungennginxplus_http_requests_current
– Aktuelle HTTP-Anfragennginxplus_http_requests_total
– Gesamtzahl der HTTP-Anfragennginxplus_nginx_meta
– NGINX-Metainformationennginxplus_processes_respawned
– Gesamtzahl der abnormal beendeten und neu gestarteten untergeordneten Prozessenginxplus_ssl_handshakes
– Erfolgreiche SSL-Handshakesnginxplus_ssl_handshakes_failed
– Fehlgeschlagene SSL-Handshakesnginxplus_ssl_session_reuses
– Wiederverwendung von Sitzungen während des SSL-Handshakesnginxplus_workers_mem_private
– Privater Speicher, der von NGINX-Workern verwendet wird, enthält keine gemeinsam genutzten Bibliothekennginxplus_workers_mem_rss
– Von NGINX-Arbeitsprozessen genutzter SpeicherWählen Sie eine Metrik aus der Liste aus (in der Demo wählen wir nginxplus_connections_active
aus). Um eine andere Metrik auszuwählen, klicken Sie auf die Schaltfläche + Abfrage und wählen Sie im neuen Feld „Metriken-Browser“ > eine andere Metrik aus (in der Demo wählen wir nginxplus_connections_idle
aus).
Klicken Sie auf das Symbol „Aktualisieren“ (zwei Pfeile, die einen Kreis bilden) über dem Diagramm in der oberen Hälfte der Seite. Die Ergebnisse werden dann im Diagramm angezeigt.
Sie fragen sich möglicherweise: „Was ist, wenn ich eine große NGINX-Bereitstellung habe, die viele NGINX Plus-Instanzen umfasst?“ oder „Wie kann ich die Konfiguration meiner Instanzen basierend auf den Erkenntnissen und Analysen von Prometheus und Grafana aktualisieren?“ NGINX Controller , unsere Steuerungs- und Verwaltungslösung für NGINX-Bereitstellungen, hilft Ihnen bei der Beantwortung dieser und vieler weiterer Fragen.
Obwohl Prometheus und Grafana hervorragende Lösungen für die Überwachung, Warnmeldungen und Visualisierung sind, bieten sie keine Möglichkeit zum Aktualisieren von Konfigurationen und Richtlinien. Um auf Grundlage dieser Erkenntnisse Maßnahmen zu ergreifen, müssen Sie sich zum Vornehmen von Änderungen weiterhin bei einzelnen NGINX Plus-Instanzen anmelden, was zeitaufwändig und fehleranfällig sein kann – insbesondere bei großen und komplexen NGINX Plus-Bereitstellungen.
NGINX Controller bietet tiefe Einblicke und Analysen zu den über 200 NGINX Plus-Metriken, einschließlich Anfragen pro Sekunde, CPU-Auslastung, 4xx
und 5xx-
Fehler, Integritätsprüfungsfehler und vieles mehr – alles präsentiert auf einer app-zentrierten, intuitiven und einheitlichen Plattform. Sie können dann tief in die Daten eintauchen, sie in Berichte exportieren und die erforderlichen Konfigurations- und Richtlinienänderungen vornehmen. Dazu nutzen Sie automatisierte, rollenspezifische Workflows, die von NGINX-Experten zur Abstraktion der Komplexität entwickelt wurden.
Mit NGINX Controller behalten Sie den Überblick über Ihre App-Bereitstellungen und können im großen Maßstab die Kontrolle über NGINX Plus-Instanzen und Konfigurationsobjekte (z. B. Umgebungen, Gateways und Apps) übernehmen. Und Sie müssen nicht auf die Nutzung Ihrer bevorzugten Überwachungs- und Warnlösungen verzichten. Das API-First-Design des Controllers macht die Integration mit Lösungen von Drittanbietern sehr einfach und unkompliziert.
Wenn Sie NGINX Plus noch nicht ausprobiert haben, empfehlen wir Ihnen, es auszuprobieren – als Load Balancer, Reverse-Proxy und API-Gateway oder als vollständig unterstützter Webserver mit erweiterten Überwachungs- und Verwaltungs-APIs. Beginnen Sie noch heute mit einer kostenlosen 30-Tage-Testversion oder kontaktieren Sie uns, um Ihre Anwendungsfälle zu besprechen .
Und wenn Sie meinen, dass NGINX Controller die richtige Möglichkeit zum Visualisieren und Überwachen Ihrer NGINX Plus-Flotte sein könnte, probieren Sie die kostenlose 30-Tage-Testversion aus, die sowohl die Module „Application Delivery“ als auch „API Management“ mit Controller App Security umfasst.
„Dieser Blogbeitrag kann auf Produkte verweisen, die nicht mehr verfügbar und/oder nicht mehr unterstützt werden. Die aktuellsten Informationen zu verfügbaren F5 NGINX-Produkten und -Lösungen finden Sie in unserer NGINX-Produktfamilie . NGINX ist jetzt Teil von F5. Alle vorherigen NGINX.com-Links werden auf ähnliche NGINX-Inhalte auf F5.com umgeleitet."