Forum: PC Hard- und Software Dashboard für Netzwerkgeräte


von M. M. (maik3)


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?

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?


von M. M. (maik3)


Lesenswert?

Irgend W. schrieb:
> Schau dir mal Grafana an:
> - https://grafana.com/docs/grafana/latest/dashboards/

Ich kenne Grafana.
Aber wie krieg ich die Daten da rein?
Woher weiß Grafana ob auf Host_XYZ der Apache läuft?
Dazu braucht es ja hostseitig eine Datenquelle die diese Daten im 
Grafana-Format versendet.

: Bearbeitet durch User
von Vax W. (Gast)


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.

von Kilo S. (kilo_s)


Lesenswert?

M. M. schrieb:
> Woher weiß Grafana ob auf Host_XYZ der Apache läuft?

Website Status check ist doch einfach.

Hab ich mit meinem lokalen Server immer für bestimmte Seiten gemacht.

https://www.codexworld.com/how-to/check-website-availability-php-curl/

Da gibt's bestimmt auch was in anderen Sprachen.

Und garantiert kann man das auf viele andere Services erweitern.

von M. M. (maik3)


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.

von Jan H. (j_hansen)


Lesenswert?

Zabbix wäre auch eine Möglichkeit.

von Vax W. (Gast)


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

von Kilo S. (kilo_s)


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/

: Bearbeitet durch User
von M. M. (maik3)


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.

von Kilo S. (kilo_s)


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.

: Bearbeitet durch User
von M. M. (maik3)


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.

von Kilo S. (kilo_s)


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

von Vax W. (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.