Mobile-Menu

Workshop: Monitoring mit Checkmk – Teil 9 Checkmk: Android-Geräte überwachen – oder nicht?

Von Mirco Lang 6 min Lesedauer

Anbieter zum Thema

Checkmk kann mit weit über 2.000 Plugins fast alles überwachen, von Tintenpatronen bis hin zu flüchtigen Cloud-Instanzen. Aber beim Thema Android sieht es nicht allzu gut aus – in der Praxis schlechter als in der Theorie. Aber es geht!

Android-Geräte ins Monitoring mit Checkmk integrieren? Einfache Erreichbarkeitsprüfungen sind möglich – mit Termux geht sogar mehr. So gelingt die Umsetzung auch ohne Root.(Bild:  Lang | Checkmk)
Android-Geräte ins Monitoring mit Checkmk integrieren? Einfache Erreichbarkeitsprüfungen sind möglich – mit Termux geht sogar mehr. So gelingt die Umsetzung auch ohne Root.
(Bild: Lang | Checkmk)

Checkmk ist kein Mobile Device Management (MDM), kann aber natürlich mobile Geräte im Sinne von Laptops überwachen und auch x86-Tablets mit Linux oder Windows stellen kein Problem dar – letztlich sind es einfach „normale“ Computer. Mobilgeräte im Sinne von Android-Tablets und -Smartphones auf ARM-Basis stellen allerdings eine Herausforderung dar.

In diesem Artikel zeigen wir Möglichkeiten und Grenzen auf und stellen auch ganz konkrete Wege vor, wie sich Android-Geräte ins Monitoring aufnehmen lassen.

Bildergalerie
Bildergalerie mit 5 Bildern

Eine simple Überwachung auf Erreichbarkeit ist natürlich trivial. Ob ein Host Up oder Down ist, wird über einen schlichten Ping geprüft. Da Mobilgeräte naturgemäß regelmäßig nicht erreichbar sind, kann man über die Sinnhaftigkeit leidenschaftlich streiten – aber je nach Situation kann es nützlich sein! Mal ein simples Beispiel: Angenommen, Sie haben Konferenzräume, die fix mit Tablets für Vorträge oder Raum-Infos ausgestattet sind. Nun ließe sich über einen simplen Ping-Check prüfen, ob diese Tablets beispielsweise ab 30 Minuten vor Beginn regelmäßiger Meetings auch wirklich online sind. Im Sinne des Energiemanagements würden sich auch Checks anbieten, die prüfen, ob Tablets gegen Dienstschluss ausgeschaltet werden.

Für solch ein simples Host-Monitoring bietet Checkmk allerlei Regeln und Optionen, natürlich auch, um Verfügbarkeiten berichten zu können. Wenn es allerdings nur darum geht, Präsenzen sowie An- und Abmeldungen von Geräten im Netzwerk zu überwachen, könnte eine darauf spezialisierte Lösung wie NetAlertX interessanter sein.

Bevor es an die frickeligen Lösungen geht, eine letzte Abfahrt in Richtung einsatzbereiter COTS: Sie können freilich separate MDMs nutzen und mit Checkmk kombinieren. Für Ivanti Neurons for MDM existiert zum Beispiel ein Spezialagent. Andere Systeme könnten zum Beispiel über gemeinsame Benachrichtigungsdienste wie Apprise involviert werden.

Mehr Daten! Mit SNMP?

Wirklich interessant sind allerdings ganz andere Daten, beispielsweise der Batterie-Status oder die Auslastung des Dateisystems. Es gibt nun mehrere Wege, um die Daten zu erheben, aufzubereiten und ins Monitoring zu bekommen: SNMP, Spezialagent und Plugin.

Die professionellste Variante ist grundsätzlich das Plugin. Da es allerdings keinen Android-Agenten gibt, in den sich das Plugin einstöpseln könnte, würde das vermeintliche Plugin auf die Entwicklung eines eigenen Agenten hinaus laufen – freilich keine Option und hier nur der Vollständigkeit halber erwähnt.

Und was ist die übliche Vorgehensweise, wenn man Infos von Netzwerkgeräten bekommen möchte, auf denen sich keine individuellen Programme ausführen lassen? Natürlich SNMP – nur dass viele Netzwerker das S wohl eher als Stress denn als Simple interpretieren.

Und bei Android wird es nicht weniger stressig, selbst unterstützt es SNMP nämlich schon mal nicht. Also muss eine Drittlösung her – und vorweg: Freude sieht anders aus.

Auf Google Play findet sich gerade mal ein SNMP-Agent gleichen Namens, der aktuell und für 9,99 Euro erschwinglich ist, allerdings keinen Support bietet, keine Dokumentation und auf den hiesigen Testgeräten leider auch keine Funktion.

Minimal besser sieht Probe for OMD and Nagios aus, ein SNMP-Agent, der speziell fürs Monitoring geschrieben wurde. Auf einem Pixel 6 mit aktuellem Android ließ sich die App nicht installieren, auf einem Honor 6X mit älterem Android hingegen schon – wenn auch mit Problemen bei der Kommunikation mit Checkmk, das dem Agenten keine reellen Daten entlocken konnte (siehe Abbildung 1).

In etwa zum selben Ergebnis kommt auch SNMP Trap, dessen letzte Version zwar „nur“ 5 Jahre alt ist, letztlich aber auch gänzlich ohne Doku oder Support auskommen muss (siehe Abbildung 2).

Darüber hinaus lassen sich hier und da noch SNMP-Agenten in den Tiefen alter GitHub-Repos finden, aber eine ernsthafte Lösung ist nicht in Sicht. Die einzige größere Studie zu dem Thema stammt von 2014 und selbst die in dessen Rahmen entstandene Implementierung ist nicht mehr verfügbar.

Letzte Hoffnung: net-snmp ist eine Sammlung von SNMP-Werkzeugen inklusive Agent – und verfügbar für Termux, Terminal-Emulator und Linux-Umgebung für Android.

Mit net-snmp ließ sich hier testweise verhältnismäßig einfach ein SNMP-Agent in Termux entwickeln, allerdings freilich nicht ohne Probleme: Es funktioniert nur mit gerooteten Geräten – folglich keine Option im Business-Umfeld.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Netzwerktechnik, IP-Kommunikation und UCC

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Und dennoch ist eine mögliche Lösung nahe: Termux!

Root-lose Lösung: Termux

Mit Termux ist es letztlich mit sehr überschaubarem Aufwand möglich, Dinge wie den Akkuladestand oder den Speicherplatz zu monitoren – mit ein paar Zeilen Shell-Skript und Standard-Tools.

Das Konzept ist simpel: Als Client dient ein Shell-Skript in Termux, das über bekannte Kommandos wie „df“ (Dateisystem-Infos), das auch der Checkmk-Agent nutzt, an Systemdaten gelangt – hier bereinigt um uninteressante Dateisysteme:

df | egrep -v 'loop|block|tmpfs'

Und dank der Termux-API (siehe Abbildung 3) gibt es auch Zugriff auf Hardware-Daten. Benötigen Sie beispielsweise den Ladestand in Prozent:

termux-battery-status | jq -r '.percentage'

Die Termux-API gibt Daten als JSON aus und mit jq kommt man sehr einfach an die reinen Zahlen.

Die erhobenen Daten müssen noch etwas aufbereitet und in einer Datei gespeichert werden. Die Details zu Datenformaten finden Sie im Handbuch, für Dateisysteminformationen könnte ein Ergebnis so aussehen – die Datei „my-df-data“:

<<<df>>>/dev/sda1 ext4 150 100 50 66% /media/foobar

Die erste Zeile entspricht der sogenannten „Sektion“ in der Ausgabe des Checkmk-Agenten und auch die eigentlichen Daten würden dort ebenso aussehen. An dieser Stelle ist das die einfachste Variante, denn für eben diese Daten in dieser df-Sektion gibt es in Checkmk bereits die entsprechenden Checks für die Auswertung!f – so dass Sie etwa festlegen können, dass dieses Dateisystem ab 70 Prozent Auslastung auf WARN gehen soll.

Damit ist der Client erledigt – fast! Zwei Dinge fehlen noch: Das Skript muss regelmäßig ausgeführt werden und für den Checkmk-Server erreichbar sein – schließlich muss dieser sich die Daten abholen.

Beides sind alte Hüte, die es eben auch für Termux gibt: Regelmäßiges Ausführen übernimmt cron und das Verteilen ein Apache-Webserver – der obige Befehl muss anschließend nur in den Webroot schreiben; in Kürze:

pkg install apache2apachectldf | egrep -v 'loop|block|tmpfs' > ../usr/share/apache2/default-site/htdocs/my-data-file

Nun liegen die Daten also bereit und weiter geht es auf dem Checkmk-Server.

Auf dem Server kann nun ein neuer Host für das Android-Gerät erstellt werden, die Standard-Angaben genügen. Der eigentliche Trick liegt nämlich in der Regel „Individual program call instead of agent access“: Ihr eigenes Datenquellprogramm ist dann schlicht ein Skript innerhalb des Instanzverzeichnisses in „~/local/bin“, hier also „~/local/bin/my-df-script“:

#!/bin/bashcurl my-android-device:8080/my-df-data

Das Skript wird in der obigen Regel einfach als „my-df-data“ angegeben – da es im local-bin-Ordner liegt, kann Checkmk es direkt ausführen. Die Ausgabe dieses Skripts entspricht dann der üblichen Agenten-Ausgabe von Checkmk – ein hochspezialisierter Mini-Agent quasi. Und in Checkmk gibt es dann die übliche Ansicht zu Dateisystemen samt Status, Graphen und so weiter (siehe Abbildung 4).

Zugegeben, die Variante klingt zunächst kompliziert, aber letztlich ist es nur das:

  • Android: Shell-Skript schreibt Systemdaten in eine Datei, die im lokalen Webroot liegt.
  • CMK-Server: Ein Datenquellprogramm besorgt per curl-Kommando den Inhalt der Datei.
  • CMK-Server: Ein Bestands-Check wertet die Daten aus.

Anschließend warten nur noch Details, etwa die Planung des Skripts via cron, der Webserver sollte beim Systemstart booten, die Batterieschutzfunktionen sollten den Server im Hintergrund nicht stoppen etc.

Und selbstverständlich: In Termux läuft ebenso Python – auch darüber ließen sich Daten besorgen und per Webserver bereitstellen. Oder man setzt auf ein komplexes Datenquellprogramm, das selbst Androids eigene Managment-API abfragt. Aber dann wird es eben wieder ein echtes Entwicklungsprojekt.

(ID:50447085)