Vorgestellt: NGINX Amplify von NGINX Inc
Ich stelle vor: NGINX Amplify – das neue Projekt “NGINX amplify” aus dem Hause NGINX Inc. Amplify ist eine Monitoringlösung mit einigen zusätzlichen netten Features für den gleichnamigen Webserver nginx. Mehr zu den Features gibt es später. Die Lösung befindet sich aktuell in einer geschlossenen Testphase und ich konnte es bereits seit dem 17. November 2015 antesten.
Infos zu nginx
Bevor ich mit der weiteren Vorstellung beginne, eine kurze Information zu nginx: Es gibt zwei unterschiedliche Versionen von nginx. Eine kostenfreie und Open-Source Version und eine kommerzielle und kostenpflichtige Version namens “NGINX Plus”. Der Unterschied zur kommerziellen Version ist, dass sowohl Support als auch zusätzliche Features für spezielle und größere Umgebungen vorhanden sind – genaueres dazu hier. Das Unternehmen NGINX Inc. ist hierfür für die Entwicklung und Betreuung der kommerziellen Variante zuständig, welche auch die Entwicklung von NGINX Amplify übernimmt. Der Fokus von Amplify liegt aktuell aber auf der kostenfreien Version und ist nicht nur der kommerziellen NGINX Plus-Version vorbehalten.
Das Projekt: NGINX Amplify
Wie in der Einleitung erwähnt ist “NGINX Amplify” eine Monitoringlösung für nginx Instanzen – aber nicht nur. Zusätzlich zur Überwachung der Instanzen gibt es auch einen Art Assistenten zur Optimierung und genaueren Analyse der Konfiguration, der Tipps und Vorschläge zur Verbesserung zu den Konfigurationsdateien gibt und auch auf mögliche Fehler hinweisen kann. Wie die Webseite genau aussieht, möchte ich euch natürlich nicht vorenthalten – die einzelnen Menüpunkte werde ich euch kurz erläutern: System details, Account settings, Graphs, Events und Alerts.
System details
Etwas versteckt: Beim Bewegen des Mauszeigers auf ein System und durch Klicken auf die vier Pünktchen nähe der grünen Linie öffnet sich eine kompakte Leiste mit den letzten aktuellen System- und NGINX-Werten. Weiter rechts in dieser Leiste lassen sich Einstellungen auf das System-Objekt anwenden und auch genauere Details zu diesem System anzeigen.
Object settings
In den Objekt-Einstellungen lassen sich die globalen Einstellungen (siehe auch nächsten Punkt) vereinzelt auf die Systeme anwenden. Ist jedoch ein Punkt in den globalen Einstellungen deaktiviert, scheint dieser nicht auf einem einzelnen Objekt aktiviert werden zu können.
Object details
Unter den “Object details” lassen sich nähere Details zu dem System auslesen. Dort befinden sich Informationen wie Hostname, Kernel, Uptime, CPU und deren Taktfrequenz, Arbeitsspeicher, Swap, Netzwerk-Informationen, Dateisysteme und Details zum Agent. Weiters lassen sich in diesem Fenster auch die nginx Version, die genauen “Configure”-Parameter (mit welchen Parameter die NGINX-Binary compiliert wurde) und der aktuelle Pfad zur Konfigurationsdatei auslesen.
Account settings
Die Kontoeinstellungen. Dieser Menüpunkt, welcher sich in dem rechts oberen Punkt unter den drei horizontalen Strichen versteckt, fällt aktuell noch etwas mager aus. Deshalb ziehe ich diesen Punkt direkt mal etwas vor. Aktuell bietet das Menü nämlich nur die drei folgenden Einstellungsmöglichkeiten:
- De- und Aktivieren der Analyse der Konfigurationsdateien: Vorschläge zur Optimierung.
- De- und Aktivieren der Prüfung der Konfigurationsdateien: Prüfung der Syntax.
- De- und Aktivieren der Prüfung der SSL-Zertifikate. Standardmäßig deaktiviert.
Mehr gibt es hier noch nicht zu sehen.
Graphs
Dieser Punkt ist wohl eines der interessantesten Punkte von Amplify: Hier sind die zahlreichen Graphen und Statistiken aller hinzugefügten Systeme ersichtlich. Die Seite ist in drei größere Bereiche unterteilt:
- Systems: Auflistung aller Systeme mit mindestens einer NGINX-Instanz.
- Preview: Die Auswertungen der Daten in Form von Graphen. Unterteilt in:
- System
- CPU Last in Prozent (Idle, IO-Wait, System, User)
- Arbeitsspeicher-Verbrauch (Buffered, Cached, Free, Used)
- Festplatten Input/Output (KB/s Lesen/Schreiben, IOPS Lesen/Schreiben)
- Festplatten-Latenz (Lesend, Schreibend)
- Netzwerk-Traffic (Bytes Empfangen, Bytes Gesendet)
- Load Average (1 Minute, 5 Minuten, 15 Minuten)
- Swap (Frei, in Verwendung)
- Festplatten-Verbrauch (Frei, in Verwendung)
- nginx
- NGINX CPU-Last in Prozent (System, User)
- NGINX Arbeitsspeicher-Verbrauch
- NGINX Festplatten I/O (Lesen, Schreiben)
- NGINX Zugriffe/Sekunde
- NGINX Verbindungen/Sekunde (Akzeptiert, Verworfen)
- NGINX Aktuelle Zugriffe (Aktuell, Lesend, Schreibend)
- NGINX Aktuelle Verbindungen (Aktuell, Aktiv, Inaktiv)
- NGINX HTTP Fehler (Typen: 4xx, 5xx, discarded)
- NGINX HTTP Version (v1.0, v1.1, v2)
- NGINX Traffic (Bytes übertragen)
- NGINX FD Count
- NGINX Worker Count
- System
- Graph Feed: Hier können Graphen von der mittleren Spalte durch Anhacken der Auswahlboxen angepinnt werden.
Sollten mehrere NGINX-instanzen auf einem System laufen, soll das Anzeigen aller Instanzen durch einen Klick auf “See more” in der Nähe der grünen Linie möglich sein. Selbst getestet habe ich das jedoch noch nicht.
Reports
Unter dem Menü “Reports” versteckt sich der erwähnte “Konfigurationsassistent”. Dort sind die aktiven Konfigurationsdateien mit Details zu den server{}– und location{}-Blöcken in den Dateien ersichtlich. Weiter unten bei “Static analysis” lassen sich dann die Empfehlungen und Vorschläge zu Konfigurationsoptimierungen finden, die optional umgesetzt werden können. Unter “Systems” können dann die Reports zu den NGINX Konfiguraiton zu den jeweiligen Systemen angezeigt werden.
Events
Unter “Events” lassen sich Logs von den Agenten finden: Beispielsweise wann diese gestartet, welche Konfigurations- oder Protokolldateien gefunden und ob Fehler in der Konfigurationsdatei gefunden wurden. Auch finden sich hier unter “Global Events” Neuigkeiten vom NGINX Amplify-Projekt.
Alerts
Dieser Punkt ist zugegeben etwas interessanter als “Events”: Hier lassen sich eigene Alarmierungsregeln auf Basis von zahlreicher verschiedenster Metriken einrichten. Neben dem Definieren von Schwellwerten und E-Mail Adressen können die Regeln für Alle als auch für jedes System separat Regeln angelegt werden.
Installation vom nginx amplify-agent
Zur Installation gibt es wenig zu sagen, außer: Die Installation ist kinderleicht. Beim erstmaligen Anmelden oder beim Hinzufügen eines neuen Systems gilt es lediglich ein Installationsscript von der Agent-Repository von GitHub herunterzuladen und dieses mit der Umgebungsvariable “API_KEY” mit dem eigenen API-Schlüssel aufzurufen. Die weitere Installation für verschiedenste Unix-Betriebssysteme erfolgt dann vollkommen automatisiert.
Die laut der Dokumentation zum Agent unterstützten Betriebssysteme sind derzeit:
(Windows-Betriebssysteme werden derzeit nicht unterstützt.)
- Ubuntu 12.04
- Ubuntu 14.04
- Ubuntu 15.04
- Debian Wheezy 7
- Debian Jessie 8
- CentOS 6
- CentOS 7
- Red Hat 6
- Red Hat 7
Installation: Worauf gilt es zu achten?
- Der nginx amplify-Agent muss zum Auslesen der nginx-Metriken unter dem selbigen Benutzernamen wie die nginx-Instanz selbst laufen. Beim Starten des Agents wird automatisch über die /etc/nginx/nginx.conf-Konfigurationsdatei versucht den richtigen Benutzernamen zu ermitteln. Kann dieser aber nicht ermittelt werden, wird standardmäßig der Benutzername “nginx” verwendet.Die Erkennung und das Starten des Agenten unter dem richtigen Benutzernamen wird in der Zukunft noch verbessert werden, da das Ermitteln des richtigen Benutzernamens beispielsweise in meiner Umgebung nicht funktioniert hatte. In Zusammenarbeit mit dem nginx Amplify-Support konnte ich eine die Ursache finden, welche in der kommenden Version des Agents verbessert wird.
- Zum Ermitteln der NGINX Graphen wie Requests und Connections muss das stub_status-Modul von nginx aktiviert sein. Dazu muss das Modul mitcompiliert und eingerichtet sein. Details zur Einrichtung gibt es in der Dokumentation, genau hier.
- Zum Zeitpunkt des Artikels ist die Unterstützung von Linux Containern wie OpenVZ, LXC, Docker und ähnlichen Lösungen noch nicht ganz ausgereift. Hierbei kann es beispielsweise noch zu Problemen beim Auslesen von den Festplattenwerten kommen.
Selbst probieren?
Wer sich selbst einen Eindruck über NGINX Amplify verschaffen möchte, kann sich unter nginx.com/amplify/ für einen Zugang anmelden.
Technische Details
Diejenigen die dachten – mich eingeschlossen -, dass Amplify eine Software zum Einrichtung in eigenen Umgebungen wird, muss ich leider hiermit enttäuschen. Amplify wird nicht auf den eigenen Servern, sondern von NGINX Inc. auf der Amazon-Umgebung betrieben. Die Daten werden in einem minütlichen Intervall über eine ausgehende TLS-verschlüsselte Verbindung über den Port 4443 an den Amplify-Receiver gesendet und dort verarbeitet. Zum aktuellen Zeitpunkt des Beitrages gibt es nur einen Receiver in den vereinigten Staaten: “Amazon US-West”. Mir wurde aber gesagt, dass Server im europäischen Raum auch geplant seien.
Kostenpunkt
Für viele einer der unangenehmsten Punkte: Die Kosten. Da sich das Projekt auch finanzieren muss, um die Kosten der Entwicklung und der IT-Infrastruktur zu decken, wird Amplify nicht ewig kostenfrei bleiben – während der Testphase fallen keine Kosten an. Einem Mitarbeiter zufolge soll es Pläne geben, den Dienst später auch für Privatpersonen leistbar anzubieten – es gibt beispielsweise die Überlegung eines “Freemium”-Modells. Konkrete Pläne gibt es hierzu aber noch nicht.
Mein Fazit
Meine Meinung zu NGINX Amplify ist etwas Zwiegespalten:
Einerseits finde ich die Idee der Monitoringlösung und auch das User Interface gelungen, auch die Reports mit Vorschlägen und Empfehlungen zu möglichen Verbesserungen in den Konfigurationsdateien sind eine sehr gute Idee. Das Potenzial von Ampliy ist groß.
Aber die Tatsache, dass die Lösung Extern betrieben wird, sogar die Konfigurationsdateien auswärts auf fremde Server übertragen werden – auch wenn dies nachträglich einstellbar ist – und Agenten auf die eigenen Maschinen installiert werden müssen, ruft doch ein etwas mulmiges Gefühl bei mir hervor. Für interne nginx-Instanzen, die weder Von noch Nach Außen eine Verbindung haben, können diesen Dienst nicht nutzen.
Zu Beginn nahm ich an, dass Amplify eine herunterladbare Software zur eigenen Installation für interne Umgebungen werden wird – nur dies ist leider nicht so. Und das finde ich wirklich sehr Schade.
Was mir auch weiterhin unklar ist, ist der tatsächliche Nutzen von Amplify. Das Überwachen der System-Werte wie CPU, RAM und Netzwerk sowohl von einigen NGINX-Werten ist mit freien Überwachungslösungen wie beispielsweise Icinga heutzutage keine Unmöglichkeit. Zugegeben, es ist etwas aufwendiger eine derartige Lösung wie Icinga in Betrieb zu nehmen, dafür ist diese aber auch unter der eigenen Kontrolle und weitaus flexibler und viel mächtiger. Daher stelle ich mir die Frage: Was ist also hierbei der einzigartige Mehrwert dieser Lösung?