Dashboard für Netzwerkgeräte

OP #7537983
Lesenswert?

Moin,

bei mir im Netzwerk haben sich mittlerweile eine gewissen Anzahl an always-on Geräten auf Linux-basis angesammelt (Raspberrys, einige VMs).

Ich hätte gerne eine Art Dashboard um den Status der Maschinen übersichtlich darzustellen. Dazu zählen z.B. uptime, Speicher- und CPU-Auslastung, aber auch der Status von diversen Services (apache, mariadb usw.).

Nun bin ich mir nicht sicher ob es sowas von der Stange gibt. Um an interne Daten der Hosts ranzukommen muss ja jeweils ein Service laufen der die Daten sammelt und zur Verfügung stellt.

Zwar könnte ich auf jedem Host ein python-Skript laufen lassen dass die Daten sammelt, aber vielleicht gibt es sowas ja schon. Jemand eine Idee?

Gast #7538032
Lesenswert?

M. M. schrieb:

Ich hätte gerne eine Art Dashboard um den Status der Maschinen übersichtlich darzustellen. Dazu zählen z.B. uptime, Speicher- und CPU-Auslastung, aber auch der Status von diversen Services (apache, mariadb usw.).

Nun bin ich mir nicht sicher ob es sowas von der Stange gibt. Um an interne Daten der Hosts ranzukommen muss ja jeweils ein Service laufen der die Daten sammelt und zur Verfügung stellt.

nagios oder Icinga, bei der Nagiosexchange findest Du sehr viele Plugins (mit verschiedener Qualiataet :-(.

Bereite Dich auf eine steile Lernkurve vor.

OP #7538055
Lesenswert?

Vax W. schrieb:

nagios oder Icinga, bei der Nagiosexchange findest Du sehr viele Plugins (mit verschiedener Qualiataet :-(.

Das scheint genau das zu sein was ich suche. Allerdings wirkt es für mich fast schon zu oversized. Vermutlich ist es einfacher auf jedem Host ein Python-Skript laufen zu lassen welches die relevanten Daten sammelt und per REST o.Ä. anbietet.

Kilo S. schrieb:

M. M. schrieb:

Woher weiß Grafana ob auf Host_XYZ der Apache läuft?

Website Status check ist doch einfach.

Naja, der Status vom Apache-Service und die Erreichbarkeit einer Website sind doch zwei paar Schuhe. Und dieser Ansatz stößt bei anderen Diensten schnell an seine Grenzen. Und Betriebsdaten des Hosts (uptime, Speicher, CPU) gehen damit auch nicht.

Gast #7538082
Lesenswert?

M. M. schrieb:

Vax W. schrieb:

nagios oder Icinga, bei der Nagiosexchange findest Du sehr viele Plugins (mit verschiedener Qualiataet :-(.

Das scheint genau das zu sein was ich suche. Allerdings wirkt es für mich fast schon zu oversized. Vermutlich ist es einfacher auf jedem Host ein Python-Skript laufen zu lassen welches die relevanten Daten sammelt und per REST o.Ä. anbietet.

Es ist im Endeffekt genau das, was nagios/icinga machen: Der Nagiosprozess fragt den Host mit einer genauen Schnittstelle ab und bekommt eine wohldefinierte Antwort.

Der Aufwand (fuer die Programmierung) ist schon ziemlich viel heftig, auf der anderen Seite bekommst Du Histogramme und Zeitanalysen fuer umsonst dabei.

Ich hatte das vielen Jahren angefangen (ich war so stolz auf mich), deswegen bin ich jetzt bei fast 20 Jahren dabei (verschiedenenen Versionen).

#7538089
Lesenswert?

M. M. schrieb:

Naja, der Status vom Apache-Service und die Erreichbarkeit einer Website sind doch zwei paar Schuhe.

Ohne Apache der läuft idr. auch keine Website. Ergo, keine Seite = kein Apache.

Und die unterscheidung ob ein netzwerkfehler vorliegt macht man mit einem ping auf die ip.

Wenn man sich mit php ein passendes Script schreibt kann man auch alles andere abfragen:

https://jamesbachini.com/ram-cpu-usage-php-script/

OP #7538099
Lesenswert?

Kilo S. schrieb:

M. M. schrieb:

Naja, der Status vom Apache-Service und die Erreichbarkeit einer Website sind doch zwei paar Schuhe.

Ohne Apache der läuft idr. auch keine Website. Ergo, keine Seite = kein Apache.

In erster Näherung kommt das hin, aber auf andere Services lässt sich das nicht übertragen.

Kilo S. schrieb:

Wenn man sich mit php ein passendes Script schreibt kann man auch alles andere abfragen:

OK, das ist ja im Prinzip das gleiche was ich schon schrieb, nur mit php anstelle von Python. Prinzip ist das gleiche.

#7538120
Lesenswert?

M. M. schrieb:

aber auf andere Services lässt sich das nicht übertragen.

Äh, doch?!

Beispiel DB Server, du brauchst mit php/python doch nur einen connect auf die DB machen. Verbindung OK = DB Server läuft. Sowohl hard als auch Software/Netzwerk sind in dem Fall ok.

Falls nicht, ping auf IP, host UP? Ok, ächster Schritt.

Das geht ebenfalls mit sftp/ssh usw..

Du kannst auch nen cronjob starten der die Services über die shell nach ihrem Status fragt, das als "file" für dein dashboard ablegt und dieses zieht sich das aus dem Netzwerk und zeigt dir den Inhalt an.

Ich seh das Problem nicht so recht. Selbst die Ausgabe von top kannst du dir passend in eine Datei schreiben und auswerten.

Für richtige "sicherheit" das alle Services laufen empfiehlt es sich regelmäßig einen cronjob auszuführen, zu prüfen ob die Services lokal laufen und im schlimmsten Fall mit start/restart zu starten.

OP #7538156
Lesenswert?

Kilo S. schrieb:

Du kannst auch nen cronjob starten der die Services über die shell nach ihrem Status fragt, das als "file" für dein dashboard ablegt und dieses zieht sich das aus dem Netzwerk und zeigt dir den Inhalt an.

Ich seh das Problem nicht so recht. Selbst die Ausgabe von top kannst du dir passend in eine Datei schreiben und auswerten.

Natürlich geht das. Kein Problem. Ist auch, mehr oder weniger genau das was ich vorhabe (nur eben mit Python anstelle php oder cron/bash).

Aber: mit deinem ursprünglichen Ansatz "Ping auf Server" oder "Erreichbarkeit abfragen per php/curl" hat das rein garnichts mehr zu tun. Diese Lösung ist tatäschlich nur für apache (und evtl. noch mariadb) halbwegs geeignet.

#7538166
Lesenswert?

M. M. schrieb:

Diese Lösung ist tatäschlich nur für apache (und evtl. noch mariadb) halbwegs geeignet.

Ich bin ziemlich zuversichtlich, andere Dienste kannst du auch auf diese Art abfragen. Vermutlich mehr als wir beide vermuten. Ih bin eh schon länger aus php raus, aber was du da möchtest konnte ih damals schon recht leicht realisieren. Dank lokalem Server mit eigenem A record konnte ich mich sogar jederzeit ohne mitelsmann über Störungen Benachrichtigen lassen, vom eigenen Mailserver.

Alles bereits in die statusabfrage integriert.

M. M. schrieb:

Natürlich geht das. Kein Problem. Ist auch, mehr oder weniger genau das was ich vorhabe (nur eben mit Python anstelle php oder cron/bash).

Soll ich jetzt lachen oder heulen?

Für deine python api musst du höchstwahrscheinlich einen eigenen deamon (gestartet Beim booten?) im System starten. Wieso nicht cron? Wieso nicht bash? Aber gut, mach wie du denkst.

Curl gibt's auch für python. https://www.educba.com/python-curl/

Das macht die Abfrage von Services "bequemer".

Gast #7538204
Lesenswert?

Es gibt latuernich zwei Moeglichkeiten: Du schreibst Dir alles selbst oder suchst eine fertige Loesung wie z.B. Nagios (Das war der Grund warum ich damit angefangen hatte: Man musste sich in sehr viele Teilbereiche [z.B. Router {ist bei eine billige Fritzbox}, Switches {Cisco ueber SNMP}, Drucker {SNMP}, Datenbanken {MySQL/MariaDB mit Master/Slave-Replikation} und noch ein paar mehr] einarbeiten. Warum nicht das Wissen der anderen uebernehmen [nagiosexchange]?).

Gibt auch andere Programmpakete.

#7874021
Lesenswert?

Raj schrieb:

Auch wenn dieses Thema schon vor einiger Zeit begonnen wurde, möchte ich dennoch auf diesen Artikel hinweisen. Er bietet einen hilfreichen Überblick zur Erstellung eines eingebetteten Web-Dashboards für Geräte: https://mongoose.ws/articles/building-embedded-web-device-dashboard/

Ich "mißbrauche" für meine Datensammlung einfach Ansible, und werte dann nur die Fakten aus, die Ansible gesammelt hat. Das ist für kleine Netze minimaler Aufwand und bietet in meinem Fall obendrein den Vorzug, daß ich nichts neues lernen, bauen, ausrollen, pflegen und warten muß, sondern auf die vorhandenen Kenntnisse und meine Infrastrukturen für CI/CD und Konfigurationsmanagement zurückgreifen und darauf aufsetzen kann. YMMV. :-)

#7874042
Lesenswert?

Moin zusammen, nachdem nagios/icinga hier schon erwähnt wurde: Ich empfehle nagios + zubehör aus OMD (open monitoring distribution) https://omdistro.org/ In der Ausprägung check_mk (community edition). Will man nagios mit allen weiteren Kompoenten (pnp4nagios, nagvis, etc.pp) selbst zusammenklöppeln, dauert das ewig. OMD bekommt man relativ schnell zum laufen, und da sind alle Komponenten, auch die auf den Cleients laufen müssen um dort verschiedene Werte einzusammeln, schon drin, resp. können aus nagios-exchange schnell nachinstalliert werden. Selber basteln muss man da nur noch ganz seltene, spezielle Sachen, ist aber auch kein Hexenwerk.

IdS, Baku

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren