Bash-Monitoring

vorhergehende Artikel in: Linux TeleGrafana Git(lab|hub)
02.01.2018

Ich wollte versuchen, ob es nicht möglich wäre, eine zuverlässige, nur auf der Bash basierende Lösung zur Überwachung eines Rechners zu finden.

In einem früheren Artikel beschrieb ich bereits eine Möglichkeit, die Rechnergesundheit zu überwachen. Der in diesem damaligen Artikel beschriebene Ansatz verschwieg die Tatsache, daß es natürlich auch wichtig ist, die Gesundheit des Überwachers zu überwachen.

Dazu könnte man einfach einen Zeitstempel generieren. Vergleicht man diesen mit der aktuellen Uhrzeit und weichen beide um mehr als einen bestimmten Wert voneinander ab, ist die Überwachung ausgefallen, da der Zeitstempel offensichtlich nicht mehr aktualisiert wird.

Darauf aufbauend kam mir der Gedanke (ich gebe zu, ein wenig von Nagios inspiriert), ob man nicht ein System schaffen könnte, das aus simplen Bash-Skripten besteht. Dieses System sollte erweiterbar sein. Ergebnis der Überwachung wäre eine Textdatei. Enthält diese lediglich einen Zeitstempel, wurden alle Tests erfolgreich durchgeführt. Ist das nicht So., beschreibt der enthaltene Test, welcher Test fehlschlug.

Dazu müsste es ein Master-Skript geben, das alle Sensor-Skripts in einem festgelegten Verzeichnis ausführt. Dabei gilt die Festlegung, daß Sensoren, die einen Fehler melden wollen, die Ursache mittels echo auf stdout schreiben und als Rückgabewert einen Wert größer 0 liefern. Ansonsten dürfen Sensoren nur Ausgaben auf stderr erzeugen.

Die erzeugte Datei kann man auf eine Netzwerkfreigabe legen, auf einen Webserver, sie per XMPP oder EMail versenden,...

Startet man das Master-Skript über Cron zyklisch hat man ein nettes kleines Monitoringsystem mit Bordmitteln erstellt, das kein Perl, PhP oder Python verlangt. Selbstverständlich bleibt die Zukunftssicherheit gewahrt, da man auch andere Skripte oder sogar ausführbare Dateien als Sensoren definieren kann.

Angehängt findet man eine erste prototypische Implementierung dieses Ansatzes.

Lizenz
Archiv

Aktualisierung vom 25. Juli 2015

Nunmehr ist es auch möglich, einzelne der Sensoren als "lenient" zu markieren - das bedeutet, dass man für jeden einzelnen Sensor definieren kann, wie oft er aufeinanderfolgend ausfallen muss, bevor ein Alarm signalisiert wird.

Damit ist es zum Beispiel möglich, einen Sensor zu definieren, der die Speicherauslastung überwacht und sofort alarmiert, wenn diese einen Grenzwert überschreitet. Parallel dazu kann man einen Sensor definieren, der die Anzahl geöffneter TCP-Ports überwacht, jedoch erst dann einen Alarm auslöst, wenn der definierte Schwellwert fünfmal hintereinander verletzt wurde.

Aktualisierung vom 2. Januar 2018

Die gesammelten Skripte sind ab sofort in einem GitHub-Repository verfügbar gemacht.

Artikel, die hierher verlinken

Todo.txt

18.10.2015

Todo.txt style="max-width:256px;" Beim ziellosen Browsen im Internet bin ich über Todo.txt gestolpert, das mir aus verschiedensten Gründen sofort aus dem Herzen gesprochen hat.

Serverüberwachung per EMail

09.06.2015

In früheren Artikeln habe ich bereits beschrieben, wie man mit einfachen Mitteln ressourcenschonend Serverüberwachung einrichten kann. Nachdem das für einen Server schon relativ gut funktioniert, habe ich ein wenig weitergedacht und bin zu folgender Lösung für die Überwachung mehrerer Server gekommen:

Alle Artikel rss Wochenübersicht Monatsübersicht Github Repositories Gitlab Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Testdatengeneratoren als Microservices mit Docker

    02.11.2019

    Ich habe die verschiedenen Testdatengeneratoren mittels Microservices über HTTP zugänglich gemacht, um sie unabhängig von der verwendeten Programmiersprache und/ oder Version (Java 11) verwenden zu können.

    Weiterlesen...

Neueste Artikel

  • Generator für syntaktisch korrekten Python Code

    Nachdem es nun bereits seit einiger Zeit ein wenig stiller um meine diversen Generatoren für Testdaten geworden ist, habe ich über den Feiertag in Thüringen einen neuen begonnen.

    Weiterlesen...
  • ethersyncj - Java Bindings für Ethersync

    Ich wurde über einen Post auf Mastodon auf ein Projekt aufmerksam, das mir so interessant erschien, dass ich daraus meine neueste Fingerübung machte...

    Weiterlesen...
  • sQLshell Version 7.7pre8 build 10681

    Eine neue Version der sQLshell ist verfügbar!

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muß damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.