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

  • Fährnisse des Buildprozesses unter Windows

    17.07.2019

    Nachdem ich begonnen hatte, mich mit der Beschleunigung der Berechnung des Mandelbrot-Fraktals unter Zuhilfenahme der Shadereinheiten in Graphikkarten zu beschäftigen und erste Erfolge feiern konnte, wollte ich das mal auf einer richtigen Graphikkarte ausprobieren...

    Weiterlesen...

Neueste Artikel

  • Datenvalidierung UTF8 mit BiDi-Steuerzeichen (TrojanSource 2.0)

    Ich bin heute nochmal inspiriert worden, weiter über die Trojan Source Vulnerability nachzudenken. Meiner Meinung nach bestehen hier noch Probleme - speziell bei Nutzereingaben oder Daten, die über externe Schnittstellen ampfangen werden.

    Weiterlesen...
  • OpenStreetMap Navi als Docker-Container

    Ich habe die auf OpenStreetMap basierende OpenSource Navigationslösung Graphhopper in einen Docker-Container gepackt und als neuestes Mitglied in meinem Docker-Zoo willkommen geheißen.

    Weiterlesen...
  • SQL-Aggregatfunktionen in SQLite als BeanShell-Scripts

    Ich habe neulich über eine Möglichkeit berichtet, SQLite mittels der sQLshell und Beanshell-Skripten um SQL-Funktionen zu erweitern. In diesem Artikel versprach ich auch, über eine solche Möglichkeit für Aggregatfunktionen zu berichten.

    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.