Server Monitor - Agent programmieren, welche Methode?

Kantholy

Lt. Junior Grade
Registriert
Aug. 2006
Beiträge
323
Hallo Leute - ich hab heute mal eine etwas andere Frage, dazu ne kleine Einführung:

Was ich vorhabe zu erstellen ist ein web basierter Server Monitor der aber nicht nur sich selbst sondern auch andere Server "monitoren" kann. Erstmal reicht es mir dass ich so blödsinn wie cpu load, memory usage, uptime usw. messen und anzeigen kann.

Jedenfalls brauch ich einen Agent auf den zu überwachenden Servern - so, jetzt ist die Frage - wie designe ich den? Also designen im Sinne von, wie handle ich das Abfragen der web basierten Oberfläche zu den einzelnen Servern?

Soll ich den Umweg über MySQL gehen, dass der Daemon quasi einfach zeitgesteuert, sagen wir alle 10Sek alle Daten vom Server aufnimmt, also aktuelle CPU/Ram Auslastung usw. und die einfach an einen Webserver sendet und dieser wiederum trägt das dann in eine Tabelle in der SQLDB ein?

Oder soll lieber der Daemon alle Daten zwischenspeichern und auf einem Port einfach hören und dann kommt mein Monitor und holt sich die Daten direkt vom Agent ab...


Ich weiß nicht so richtig wie ichs machen soll, der Umweg über die Datenbank wäre schon nicht schlecht, weil wenn dann würde mein Monitor sowieso PHP bzw. Flashbasiert sein, und das lesen einer MySQL Datenbank is echt simpel mit PHP - dafür hab ich aber den Nachteil dass meine SQL Tabelle mit den "Rohdaten" wahrscheinlich explodieren wird wenn ich paar Server (wären ~10 Server) alle - sagen wir mal 10 Sekunden - in die SQL Tabelle dumpen... 1Stunde - 600 Datensätze...
Desweiteren könnte man natürlich genau sehen seit wann ein Server offline ist wenn der seit xxx-Sekunden nicht mehr in die Tabelle neue Daten schreibt. Auswertungen wären ebenfalls leichter...


Was meint ihr zu diesem Thema - welche Methode würdet ihr bevorzugen bzw. gibts vielleicht noch Alternativen?
 
mkay - naja, eigentlich wollt ich mich ja selber bissl weiterbilden und ausprobieren, aber gut, dieses nagios sieht ja auch interessant aus...


checkt man das auch alleine ohne stundenlanges dokulesen oder soll ich gleich nen dienstleister beauftragen das mit einzurichten?
 
Ist normalerweise ganz einfach. Die Meta-Package dürftest du bei allen Linux - Serverdistibutionen finden.
Der 'Agent' ist die nrpe. Als Beispiel mal die Packages für Gentoo http://www.gentoo-portage.com/Search?search=nagios

Howto: http://www.nagios-wiki.de/nagios/howtos

Buch z.B: http://www.terrashop.de/Buch/Nagios...Wolfgang-Barth-ISBN-3937514465/art/93751446A/

Google + Nagios wirft dir gleich die erste Reklame aus:
http://www.systemmonitoring.de/

Selbst einrichten dürfte auf jeden Fall einfacher sein als selbst programmieren.
 
Zuletzt bearbeitet:
hmm ne - ich hab mir das mal angeguckt - is nicht so mein Ding, da bastel ich lieber selber was..

also zurück zu meinem ersten Post, welche Methode wäre die bessere?
 
1.) Clientdemon auf jedem zu überwachenden Rechner, Programmiersprache -> freie Auswahl
Sendet alle x Sec / Min / * Statusmeldungen an die zentrale Datenbank
2.) Zentrale Datenbank (?Datenmodell? / ?Datenbank-Programmierung?)
3.) Visualisierung der releventen Daten aus der Datenbank.

Mit MySQL habe ich keinen Plan, verwende hauptsächlich Oracle.
Das Problem mit der History kannst du in der Datenbank mit Trigger etc. lösen.
Z.B. Falls eine neue Zeile eingefügt wird lösche alle die älter als xxx sind.
 
hmm, wenn ich die nach einiger zeit wieder lösche würde ich halt das größenproblem umgehen - verbau mir aber damit die chance auf statistiken von längerem zeitraum...


ich hab mir das mal so zum spaß durchgerechner btw. da kommt schon was zusammen an datensätzen...


wenn ich das alle 10 Sekunden abfrage - dann hab ich mit EINEM server nach einer Woche schon 60480 Datensätze in meiner Tabelle - mit 5 Servern hätte ich dann nach einer Woche schon 302400 Datensätze...

Ich weiß auch nicht wie performant MySQL ist wenns ich dann mit sagen wir mal 5 Servern das ganze einen Monat laufen lasse...
 
Was für Server? Welche OS-Landschaft? Grundsätzlich wäre ein möglicher Ansatz, dass sich jeder Server selbst überwacht und die Statistiken über eine Zeitspanne X selber vorhält. Die müssten dann "nur noch" abgeholt und präsentiert werden...
 
erstmal nur meine paar Windows Server, danach vllt. noch die Linuxbüchen, allerdings müsste ich da wohl nochmal neu programmieren weil ich vermute mal nicht das mono auch die windows api bzw. diese hässlichen windows managementdinger kann...

das mit der datenbank hab ich mir mal überlegt, ich hab mir so gedacht, dass man die "alten" daten ja zusammenfassen könnte, also sagen wir mal: man macht aus den daten die älter sind als eine woche einfach weniger indem man diese zusammenfasst, sagen wir mal statt 10sekündlich nur nur einen datensatz für eine Minute, also dass man quasi 6 zusammenfasst und da halt den durchschnittswert errechnet aus cpulast, ramauslastung, etc. etc...
 
Klingt aber auch nicht ganz einfach. Auch aus einer strategischen Sicht heraus, solche Konstrukte nicht unnötig mehr zu errrr verkomplexen... :D ...halt prüfen, wie weit zurück die Daten überhaupt benötigt werden. Pauschal könnte ich mir erstmal 1 Woche vorstellen, danach ist das doch zu 99,X% uninteressant?! Die Woche lokal an jedem Server vorhalten und halt zentral monitoren...entweder live oder noch mit einer zentralen DB, wo ggf. auch ausgewählte Daten länger festgehalten werden...
 
jo eine woche würde theoretisch sogar zu viel sein mit den datensätzen, ein live view der server wäre interessant, aber nur in 10 oder 20 Sek Schritten

Aber was interessant wäre wäre so eine Durchschnittslast über einen Monat oder so, wie gesagt, mann könnte da ja einfach die Datensätze eines Tages selektieren und dann da den Durchschnitt errechnen und das von mir aus in eine andere Tabelle schreiben...

Klar, das wird unter Umständen etwas rechenintensiv, aber das wäre das was ich brauche...


Oh mann, ich hab mir das alles bissl zu leicht vorgestellt...
 
Zurück
Oben