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

  • Aviator + Websockets

    15.06.2019

    Nachdem ich in den letzten Wochen und Monaten meine Zeit und Energie in die sQLshell gesteckt habe - was sowohl Bugfixing als auch neue Features betraf - habe ich nun endlich die Zeit gefunden, ein bereits lange überfälliges Feature an dWb+ und speziell am aviator zu implementieren.

    Weiterlesen...

Neueste Artikel

  • Neue Version plantumlinterfaceproxy napkin look

    Es gibt eine neue Version des Projektes plantumlinterfaceproxy - Codename napkin look.

    Weiterlesen...
  • Apache HTTPCore5 funktioniert nicht mit Docker

    Ich habe neulich drei Stunden meines Lebens verschwendet weil ich unbedingt die neueste Version der HTTPCore5 Library von Apache einsetzen wollte.

    Weiterlesen...
  • Entwurfsmodus für beliebige SVG Graphiken

    Nachdem ich in der Vergangenheit immer wieder Weiterentwicklungen der Idee vorgestellt habe, Graphiken mit dem Computer so zu ezeugen dass sie eine gewisse "handgemachte" Anmutung haben, habe ich nunmehr die durchschlagende Idee gehabt:

    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.