Server-Monitoring via Pushover/Pushalot

„Wo nur bleibt die Mail, die ich mir vor 10 Minuten habe weiterleiten lassen? SPAM-Folder? Nein. Bei genauerem Hinsehen entdecke ich einen Fehler im Mail-Client, der beim Synchronisieren mit dem privaten Mailserver aufgetreten sei. Man möge es später nochmals versuchen oder sich an seinen Admin wenden orakeln die üblichen Beschwichtigungsversuche. Mist – ausgerechnet heute! Eine erste Prüfung ergibt wenig. DynDNS ist okay, Maschine lebt aber mehr ist von unterwegs vorerst nicht festzustellen. Am Abend dann die Gewissheit: Auf dem Mailserver ist die Platte voll. Mailbox-Database und Log-Files haben ihr Übriges dazu beigetragen – hätte man doch aber eigentlich rechtzeitig mitbekommen können…“

So oder ähnlich kommt man gelegentlich zu der Erkenntnis, dass auch die IT in den eigenen vier Wänden nicht gänzlich wartungsfrei vor sich hin säuselt. Sei es ein Dienst, der sich gerne mal verabschiedet, eine Netzwerk-Komponente die einen kleinen Tritt braucht oder gar der knapp gewordene Speicherplatz.

An denkbaren Lösungen mangelt es heute nicht mehr. So könnte man überlegen, ob ein Nagios, MOM, OpenNMS, WhatsUp, Zabbix, etc. die Mühe wert wäre. Im Funktionsumfang und auch in der Erweiterbarkeit ähneln sich die bekanntesten Vertreter des Server-/Netzwerk-Monitoring schon seit Jahren sehr. Bleibt noch die Qual der Wahl. Und natürlich müsste auch noch eine Datenbank her, eine brauchbare Erstkonfiguration und vielleicht ein Backup aber daran würde es sicher nicht scheitern.
Dennoch bin ich mir sicher, dass zumindest für meinen Hausgebrauch dieser Ansatz völlig am Ziel vorbeigehen würde. Ein Wort trifft es ganz gut: überdimensioniert. So möchte ich doch nur wissen, dass der Speicher nicht voll läuft, hier und dort ein paar für mich spannende Dienste laufen und zwei/drei Webinterfaces erreichbar sind. Theoretisch genügt es auch völlig im Falle eines Fehlers eine kurze Info zu erhalten – ich muss nicht ganz genau wissen seit wann das Problem besteht und Dashboards brauche ich auch nicht.

Die Anforderungen:

  • Keine Middleware: Clients und Server sollen direkt Bescheid sagen, wenn etwas nicht mehr so ist, wie erwartet
  • Kein Aufwand: Einfach und schnell zu konfigurieren
  • Kein SPAM: Statt auf Mails auf Push-Dienste setzen
  • Kein Overhead: „Small memory/resource footprint“

Die Idee zum „PushMonitoring“

Ein simples Kommandozeilen-Tool mit XML-Konfigurationsdatei, welches bei jeder Ausführung die per Konfiguration definierten Prüfungen einmalig ausführt, deren Ergebnisse zusammenfasst und bei Abweichungen vom SOLL per Pushalot oder Pushover informiert. Als Prüf-Typen sollten anfangs Ping, freier Speicher und HTTP-Requests genügen – später vielleicht noch Dienste, TCP, Up-time. Durch den minimalistischen Ansatz bleibt das Tool universell einsetzbar und flexibel. Per geplantem Task genügt beispielsweise eine stündliche oder je nach Aufgabe auch tägliche Ausführung.

Konfiguration

Neben den primären Konfigurationsbereichen wie <sendInterfaces> und <checksToRun> kann zusätzlich per <sendWithoutError> ein Zeitraum festgelegt werden, nachdem man auch ohne Fehlermeldung mal wieder ein Lebenszeichen vom System erhalten möchte. Diese Funktion kann jedoch nur verwendet werden, wenn die Anwendung irgendwo das Logfile (definiert in <logFile>) speichern kann.

Fertig ist das Monitoring für Puristen

Das Projekt

Die Quellen finden sich auf Github unter roschinsky/PushMonitoring. Wer sich berufen fühlt – das Portieren auf Mono- bzw. CLR Core steht noch aus…😉

Für alle die gerade kein Visual Studio am Start haben oder nur die Binaries brauchen gibt es natürlich noch die Pre-Build Version, die ich im One-Drive hinterlegt habe:

„PushMonitoring.zip“

QUELLE: OneDrive

GRÖßE: 0,02 MByte

DATUM: 30.06.2015

Über Thomas Roschinsky
Software Engineer | .NET | SharePoint | Dynamics CRM | BI | C# | C/C++

9 Responses to Server-Monitoring via Pushover/Pushalot

  1. Pingback: Frohes Fest! | Thomas Roschinsky

  2. Karl sagt:

    Hallo, bekomme leider das Server-Monitoring Tool nicht zum laufen. Fehlermeldung:

    *** PushMonitoring (Copyright © Thomas Roschinsky 2015) ***
    ————————————————————————-
    A simple command line utility for sending decentralized system monitoring
    notifications via push services.

    …using default config file „CheckConfigSample.xml“
    …an unexpected error occurred: Die Datei oder Assembly „PushMonitoringLib, Version=0.2.5836.27919, Culture=neutral, PublicKeyToken=null“
    oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.

    Danke für die Hilfe.
    Karl

  3. Hallo Karl,

    die Fehlermeldung hat leider recht – ich habe wohl versehentlich die DLL mit der Logik für das Monitoring vergessen mit ins ZIP zu legen. Die fehlende Datei ist jetzt mit dabei – bitte zieh Dir das ZIP-File erneut aus dem OneDrive und probiere, ob Du mit der Library (die DLL bitte in den gleichen Folder zur .EXE packen) weiter kommst.

    Alternativ kannst Du Dir das Github-Repo clonen und selbst kompilieren – dort findest Du stets die aktuellste Version.🙂

    Bei Fragen oder Problemen sag Bescheid.

    Viel Spaß mit dem Tool & schöne Grüße,
    Thomas

    • Karl sagt:

      Hallo Thomas,

      perfekt! Funktioniert jetzt wie es soll. Endlich eine saubere und minimalistische Lösung um die Heizung die CCU und meine ioBroker Instance zu überwachen.

      Danke.

      Viele Grüße
      Karl

  4. Karl sagt:

    Hallo Thomas, ich bin es nochmal. Das Servermonitoring läuft immer noch ohne Probleme. Aber ich habe eine Frage: Da ich zur Zeit meine ganzen Pushmeldungen von ioBroker auf Telegram umgestellt habe, läuft Pushover nur noch wegen der Serverüberwachung. Wäre es möglich, die Serverüberwachung auch auf Telegram umzustellen? Dokumentiert ist Telegram ja sehr gut.

    Viele Grüsse, Karl

    • Hallo Karl,

      es freut mich sehr, dass das PushMonitoring noch gute Dienste verrichtet!

      Im aktuellen Release ist Telegram nicht enthalten, sprich – nein, mit umstellen ist es momentan nicht getan. Ich hatte kürzlich darüber nachgedacht für Signal einen NotificationProvider zu ergänzen. Deine Idee auf Telegram zu setzen finde ich nicht uninteressant. Magst Du mir einen Feature Request / Issue bei GitHub dafür einstellen? Dann geht es mir nicht unter.🙂

      Schöne Grüße,
      Thomas

    • Hallo Karl, falls das Thema für Dich noch interessant ist: Eine erste Version, die Telegram als Notification-Endpoint bzw. SendInterface unterstützt, habe ich gerade zu Github gesynced.

      Schönen Gruß,
      Thomas

  5. Pingback: Push Notification via Telegram | Thomas Roschinsky

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: