Mit der App UCS Dashboard haben wir jetzt die erste (Beta-)Version eines neuen Dashboards, das auf den Open Source Lösungen Grafana® und Prometheus basiert. Die App ermöglicht es Administratoren, den Zustand der Domäne und einzelner Server schnell und einfach auf unterschiedlichen Dashboards abzulesen. Die Dashboards sind einfach über einen Web-Browser erreichbar, greifen im Hintergrund auf eine Datenbank zu und liefern kontinuierlich aktualisierte Reports über bestimmte Aspekte der Domäne oder der Server.
Die App besteht insgesamt aus drei Komponenten:
- Das UCS Dashboard für die Visualisierung von Daten aus der zentralen Datenbank (Grafana®)
- Die UCS Dashboard Database, eine Zeitserien-Datenbank für die Speicherung der Metriken (Prometheus als Timeseries-Datenbank)
- Der UCS Dashboard Client für die Bereitstellung der Metriken von Serversystemen (Prometheus Node-Exporter)
Monitoring und Analyse von UCS Domänen und Servern auf einem Blick
Wir möchten mit dem neuen Dashboard insbesondere Administratoren größerer Umgebungen bei ihren administrativen Aufgaben unterstützen. So wird auf den Boards beispielsweise angezeigt, für welche Server in der Umgebung Updates vorhanden sind oder welche wichtigen aktuellen Veränderungen es in der Domäne gegeben hat (zum Beispiel ein veränderter Speicherverbrauch). Durch diese Informationen erhalten Admins einen schnellen Überblick über den Ist-Zustand der von ihnen betreuten Domänen, können potenzielle Fehlerquellen frühzeitig identifizieren und ihre IT Umgebung analysieren und effizienter machen.
Die UCS Dashboard App kann aus dem Univention App Center mit wenigen Klicks installiert und in Betrieb genommen werden. Eine vorkonfigurierte Anbindung des Webinterfaces an das zentrale Identity Management (IDM) von UCS und eine Sammlung an auf Metriken von UCS optimierten Standard-Dashboards machen die Inbetriebnahme besonders einfach. Weitere Server können über die Installation der UCS Dashboard Client App auf den gewünschten Systemen ohne weitere Konfiguration angebunden werden.
Bewährte Open Source Technik – Grafana® und Prometheus
Für die übersichtliche, webbasierte Darstellung der Systeminformationen in Form von anpassbaren Dashboards sorgt die Software Grafana®, ein unter Administratoren weitverbreitetes Monitoring Tool.
Für die Datensammlung kommt Prometheus zum Einsatz. So sammelt der Prometheus Node-Exporter regelmäßig Metriken über den Zustand des Systems und stellt diese in einem einfachen Textformat per HTTPS zur Verfügung.
Die Prometheus Datenbank holt sich kontinuierlich die Daten aller bekannten Systeme und speichert sie als Zeitserie. Die Datenbank selbst kann über eine spezielle Sprache (PromQL) abgefragt werden. Dies ist dann die Aufgabe des Grafana® Webinterface. Über ein Set an vorgefertigten Widgets (Panels) und deren Konfiguration können selbst komplexe Abfragen leicht visualisiert werden.
Bei der Installation der „UCS Dashboard“ App werden auf dem Zielsystem automatisch alle benötigten Komponenten installiert. Um zusätzliche Server in das Monitoring aufzunehmen, muss auf ihnen lediglich die „UCS Dashboard Client“ App installiert werden.
Dank standardisiertem Prometheus Node-Exporter einfach erweiterbar
Der Prometheus Node-Exporter sowie das Grafana® Webinterface lassen sich beliebig erweitern. So können auf Clients zusätzlich Metriken eingesammelt und bereitgestellt werden. Über eigene Dashboards in Grafana® lassen sich diese Daten dann leicht visualisieren. Ein kurzes Beispiel soll das Prinzip verdeutlichen:
Wir wollen eine Übersicht über die Anzahl der SSH-Verbindungen auf einem Server.
Zunächst wird auf dem System, auf dem der UCS Dashboard Client installiert ist, ein Skript benötigt, um die gewünschten Daten einzusammeln.
-> more /usr/local/bin/ssh_conections #!/bin/bash DEST="/var/lib/prometheus/node-exporter/my-ssh-connections.prom" METRIC_NAME="my_ssh_connections" ssh_connections="$(LC_ALL=C netstat -tnpa| grep -i "ESTABLISHED.*sshd" | wc -l)" # make this a atomar operation to not confuse the node client with file fragments echo "$METRIC_NAME $ssh_connections" > "$DEST".$$ mv "$DEST".$$ "$DEST"
Zusätzlich werden die Daten in einem speziellem Format „Name_der_Metrik Wert“ in einer Datei unterhalb des Verzeichnisses
"/var/lib/prometheus/node-exporter/"
gespeichert. Neben den Standard-Metriken, die vom Node-Exporter eingesammelt werden, werden auch alle Textdateien im obigen Verzeichnis nach Metriken durchsucht und zusätzlich angeboten.
Ein Cron-Job sorgt für die regelmäßige Aktualisierung der Daten auf dem System.
Die Prometheus-Datenbank sammelt immer alle vom Client angebotenen Daten ein, sodass hier also nichts weiter zu tun ist.
Um die Daten zu visualisieren, muss zunächst ein neues Dashboard in Grafana® angelegt werden.
Dort wird nun ein (Graph) Panel hinzugefügt, um den Datensatz als Zeitreihe zu visualisieren.
Im Panel wird als Metrik nun einfach der Name der neuen Metrik (my_ssh_connections) gesetzt und im Prinzip ist der Graph nun fertig.
Dieses rudimentäre Beispiel deckt natürlich nur einen Bruchteil der Möglichkeiten ab. Weiterführende Dokumentation zum Prometheus Node-Exporter und Grafana® Webinterface finden Sie auf GITHUB unter https://github.com/prometheus/node_exporter bzw. http://docs.grafana.org/.
Produktive Version der UCS Dashboard App für den Herbst geplant
Wir haben uns dafür entschieden, die „UCS Dashboard“ App zunächst als Beta-Version zu veröffentlichen, um das Interesse an einer solchen Applikation zu prüfen. Über Ihr Feedback, gerade in Bezug auf die im Dashboard angezeigten Informationen zu Ihrer UCS Umgebung, würden wir uns sehr freuen. Sie können hierfür entweder das auf dieser Seite befindliche Kommentarfeld nutzen oder unser Produktfeedback-Formular.
Wenn unser UCS Dashboard auf breiteres Interesse stößt, planen wir für den Herbst das Release einer offiziellen und für den produktiven Einsatz bestimmten Version der App. In dieser werden wir das bis dahin geäußerte Nutzerfeedback einfließen lassen und weitere Features, die von UCS Anwendern gewünscht wurden, wenn möglich integrieren. Diese finale Version wird voraussichtlich nur für Kunden mit einer Enterprise-Subskription bereitgestellt.
Kommentare
Urs Schwalm
… das Dashboard ist eine Super Idee.
Habe es gleich installiert und kurz angeschaut. Bei zwei von vier Servern kein Problem aber bei den anderen zwei kann ich den Client nicht installieren. Erhalte folgende Fehlermeldung:
*****************
Error performing the action
The requested action cannot be carried out. Please consider the information listed below in order to resolve the problem and try again.
The server tried to connect to the involved systems. The following hosts cannot be reached or do not have access to the App Center server:
cloud
The following software changes on cloud will be applied: an unknown amount of packages will be installed / upgraded, an unknown amount of packages will be removed, an unknown amount of packages are erroneous
The following packages will be installed or upgraded:
Unknown
The following packages will be removed:
Unknown
This operation causes problems in the following packages that cannot be resolved:
Unknown
***********
was könnte das sein?
vielen Dank!
Alice Horstmann
Hallo Herr Schwalm,
vielen Dank für Ihren Kommentar. Ich habe Ihre Frage im Univention Forum unter folgendem Link gepostet:
https://help.univention.com/t/ucs-dashboard-problemen-beim-installieren-des-clients-auf-weiteren-servern/9572
So können unser Support Team, unsere Partner und erfahrene UCS-Nutzer auf Ihre Frage schnell und zuverlässig antworten und zeitgleich profitieren andere Univention Help-User davon.
Viele Grüße
Alice Horstmann
Kevin
Hallo
Gibt es irgendwelche speziellen Settings, die gemacht werden müssen, damit das Dashboard Daten empfängt?
Ich hab die 3 Apps auf dem DC installiert und den Client noch auf ein paar weiteren Servern, das Dashboard bleibt aber auch nach ein paar Stunden weiterhin leer.
Danke und Grüsse
Kevin
Alice Horstmann
Hallo Kevin,
ich habe deine Frage in unserem User Forum Help unter dem Link:
https://help.univention.com/t/ucs-dashboard-zeigt-keine-daten/9608
gepostet. In der Regel antwortet dort sehr schnell jemand aus unserem Support oder von einem Partner auf solche Fragen. Schau doch einfach morgen nochmal vorbei.
Viele Grüße
Alice
Felix Botner
Hallo,
danke für das Feedback, wir haben jetzt einige Änderungen gemacht um die Installation robuster zu machen:
(a)
Die Dashboard App funktioniert nur mit UCS 4.3-1, nicht mit 4.3-0. Die Installation erfordert nun UCS 4.3-1.
(b)
Bei der Installation der Dashboard App werden auch die Datenbank und Client App installiert. Bisher wurde aber ein Fehler bei der Installation der Client bzw. Datenbank App nicht abgefangen und es war möglich, dass man bei einer „halben“ Installation gelandet ist.
Fehler bei der Installation der Datenbank bzw. des Client werden nun abgefangen und die Dashboard Installation abgebrochen, so dass man zumindest wieder auf einen sauberen Stand kommt. Die Installation kann dann erneut versucht werden.
(c)
Die Dashboard Client App muss sich im LDAP eintragen, so dass die Datenbank App den entsprechenden Server auch abfragt. Das ist u.U. nicht erfolgt. Die Client App setzt nun „univentionService: metrics-node“ am Rechneraccount im LDAP bei der Installation und entfernt diesen Service bei der Deinstallation.
(d)
Es gibt ein LDAP Listener Modul in der Datenbank App. Dieses Modul erzeugt aus den „“univentionService: metrics-*“ Einträgen im LDAP eine Konfiguration für die Prometheus Datenbank. Waren „ungejointe“ Rechneraccounts im LDAP, ist dieses Modul abgebrochen. Dies wurde behoben.
(e)
Notwendige CSS Anpassungen für IE11.
Es gibt weitere Known Issues, für die es noch keine „Lösung“ gibt:
Eigene Zertifikate: Die Dashboard Apps unterstützen nur UCS Zertifikate (bzw. Zertifikate mit dem UCS Rechnernamen). Die Kommunikation der einzelnen Komponenten erfolgt über HTTPS mit dem UCS Rechnernamen. Sofern „externe“ Zertfikate verwendet werden, die nicht für den UCS Rechnernamen ausgestellt wurden (z.B. die Let’sEncrypt App), funktioniert dies nicht mehr und die Datenbank Komponente kommt nicht an die Clients und das Webinterface kommt nicht an die Datenbank.
Uhrzeit: Prometheus ist sehr sensibel was Differenzen der Uhrzeit im Browser und auf dem Datenbank-Server angeht. Z.B. darf die Uhrzeit im Browser aus Sicht des Datenbank Servers nicht in der Zukunft liegen, andernfalls werden keine Daten zurückgegeben. Es wird auch keine entsprechende Fehlermeldung in der Grafana Weboberfläche angezeigt, nur in der Prometheus Weboberfläche (https://$DASHBOARD_SERVER/metrics-prometheus/graph). Wir werden schauen, ob man hier irgendwie einen Schwellwert konfigurieren kann.
Robert
Hallo, ich habe das Dashboard auf einem virtuellen Testsystem installiert und es funktioniert bislang problemlos. Lediglich die Lizenz „Kostenpflichtig mit kostenlosem Test“ ist etwas unklar, wird die App später zusätzlich Geld kosten oder ausschließlich mit Systemen funktionieren, die Software Support erhalten?
Können Sie weiterhin skizzieren, wie es möglich wäre, weitere Systeme, die nicht UCS basiert sind, zu integrieren? In vielen Umgebungen werden parallel noch Debian oder Ubuntu Server betrieben. Bei der Nagios Variante ist es möglich, den nagios-nrpe-server auf den betreffenden Systemen zu installieren und für diese dann im Frontend Nagios zu aktivieren.
Reicht es möglicherweise den prometeus-node-exporter zu installieren?
Felix Botner
Hallo,
bzgl. „Kostenpflichtig mit kostenlosem Test“:
Wir sind am überlegen, ob die App zukünftig nur im Zusammenhang mit einer (Base) Subscription verwendet werden darf (die App selbst verursacht dann aber keine weiteren Kosten).
bzgl. „weitere Systeme, die nicht UCS basiert sind“:
Es gibt da zwei unterschiedliche Möglichkeiten.
In der Dashboard Weboberfläche (also Grafana) kann man natürlich immer weiter Datenquellen definieren (wir legen automatisch eine für die Dashboard Datenbank, Prometheus, an). Diese Datenquellen können dann mit Clients verbunden werden um Daten zu sammeln. In Grafana kann man dann über eigene Dashboards, die mit dieser neuen Datenquelle verbunden sind, die entsprechenden Daten auslesen und visualisieren.
Die Alternative wäre, die Dashboard Datenbank zu verwenden. Ich versuche kurz zu skizzieren, was dafür notwendig ist. Da wir Promtheus verwenden, funktioniert das alles nur wenn auf dem Client der Prometheus Node Exporter (oder ein eigener Node Exporter Dienst) läuft.
Promtheues (die Datenbank) bekommt über eine Konfiguration mitgeteilt, welche Clients es abfragen soll. Diese Konfiguration wird in UCS automatisch erzeugt. Dafür wird im UCS Verzeichnisdienst (LDAP) nach Rechnerobjekten (LDAP Filter objectClass=univentionHost ) mit Attributen univentionService=metrics-* gesucht. Für jedes univentionService=metrics-* Attribut wird dann in der Prometheus Konfiguration ein Target (das ist ein Client, vom dem Daten abholt werden) erzeugt. Also z.B. hat ein System „master“
univentionService: metrics-node
univentionService: metrics-prometheus
gesetzt. Daraus wird dann folgende Target Konfiguration erzeugt:
-> more /var/lib/univention-appcenter/apps/prometheus/conf/targets.json
[{„targets“: [„metrics-prometheus.master.four.three“, „metrics-node.master.four.three“]}]
Dies wird in Prometheus dann nochmal umgeschrieben, so dass letztlich folgende URL’s angesprochen werden:
master.four.three/metrics-prometheus/metrics/
master.four.three/metrics-node/metrics/
Dort muss dann der Node Exporter laufen. Leider kann man derzeit diese Services nur an UCS Rechnern setzen, also z.b. nicht an Rechnerobjekten mit der Rolle „linux“ oder „ipmanagedclient“.
Außerdem ist das Prometheus in UCS so konfiguriert, dass es eine Authentifizieren am Client vornimmt. Wir haben die Node Exporter auf den Clients daher hinter einem Reverse Proxy, wobei der Zugriff nur mit einem Domänen-Account erlaubt ist. Ein Beispiel für eine entsprechende Apache Konfiguration ist auf dem UCS Dashboard Rechner unter „/etc/apache2/ucs-sites.conf.d/univention-node-exporter.conf“ zu finden. Der Node Exporter auf UCS wird dafür dann mit den Optionen „-web.listen-address 127.0.0.1:9100 -web.telemetry-path=/metrics-node/metrics/“ gestartet.
So etwas müsste dann auf dem Client auch eingerichtet werden.
Wie oben bereits erwähnt gibt es hier die große Einschränkung, dass die univentionService’s nicht an „Nicht-UCS“ Rechnerobjekten im LDAP gesetzt werden können. Wir werden aber versuchen, hier eine Lösung zu finden (vielleicht eine UCR Variable auf dem Dashboard Rechner, für Client, die unabhängig von den Einstellungen im Verzeichnisdienst, immer in die Prometheus Target Liste aufgenommen werden).
Viele Grüße
Felix
Dirk Dörflinger
Ich habe Dashboard installiert und getestet. Tolle Sache, für meine Zwecke aber etwas zu gross und komplex.
Bei der Deinstallation der Clients gibt es noch einen Fehler, unter
/etc/cron.d
bleibt ein Cronjob „univention-node-exporter“ liegen, der dann (bei installiertem Mailserver) zu ständigen Warnungen führt, da er ein Binary nicht mehr aufrufen kann.
Viele Grüsse,
Dirk
Felix Botner
OK, danke, wir werden das anpassen (den cron job löschen und ggf ändern, so das er nix macht wenn das binary weg ist)
Viele Grüße
Felix