Wir nutzen Cookies, um Ihnen eine optimale Nutzung dieser Webseite zu ermöglichen. Mehr Informationen finden Sie im Datenschutzhinweis. Wir nehmen an, dass Sie damit einverstanden sind, falls Sie diese Webseite weiter besuchen.

Ihre Cookie-Einstellungen
Ihre Einstellungen wurden aktualisiert.
Damit die Änderungen wirksam werden, löschen Sie bitte Ihre Browser-Cookies und den Cache und laden dann die Seite neu.

Die HW/SW-Inventur

Dieser Artikel ist noch nicht fertig und nur ein Entwurf!

1. Einleitung

Neben dem eigentlichen Monitoring – also dem Überwachen von Status-, Log- und Messdaten – bringt Ihnen Checkmk noch eine ganz andere Funktion quasi kostenlos mit: die Hardware-/Softwareinventur (oder kurz HW/SW-Inventur). Diese kann auf Ihren Hosts z. B. automatisch ermitteln:

  • Welche Softwarepakete sind in welchen Versionen auf einem Server installiert?
  • Welchen Ausbau an RAM-Bausteinen hat ein Server?
  • Welche BIOS-Version ist auf dem Mainboard installiert?
  • Welche Seriennummern haben die verbauten Festplatten?
  • Welche Ports auf einem Switch sind länger nicht genutzt worden (also wahrscheinlich frei)?
  • ... und vieles mehr

Die so ermittelten Daten werden pro Host in einem strukturierten Baum und verschiedenen anderen Ansichten dargestellt und sind auch über eine API verfügbar. Hier ist ein kleines Beispiel für die Inventarisierung von ORACLE-Datenbanken:

Mit der HW/SW-Inventur können Sie verschiedenste Aufgaben erledigen, z. B.:

  • Daten über installierte Software für ein Lizenzmanagementsystem bereitstellen
  • Typbezeichnungen für Ersatzteilbestellungen (RAM, Festplatten, Lüfter) ermitteln
  • generelle Daten über Hardware- und Softwareaustattung für den regelmäßigen Import in CMDBs liefern, damit diese auf aktuellen Daten basieren
  • Änderungen an Hardware- oder Software rückverfolgen, z. B. um festzustellen, wann ein bestimmtes BIOS-Update durchgeführt wurde
  • alarmiert werden, wenn sich etwas an der Hardware oder Software geändert hat
  • gezielt Server finden, die ein bestimmtes Servicepack noch nicht installiert haben

Der wichtigste Vorteil gebenüber vergleichbaren anderen Systemen liegt auf der Hand: Sie können dafür einfach die vorhandene Infrastruktur von Checkmk verwenden und sparen sich das Ausrollen und Administrieren einer weiteren Softwareumgebung. Sie rollen lediglich ein einziges zusätzliches Agentenplugin aus. Bei SNMP-Geräten ist nicht mal das notwendig, da der Inventurscanner auch SNMP unterstützt und sich die Daten einfach auf diesem Wege holt.

Und außerdem braucht sich Checkmk hinter anderen Inventurscannern nicht zu verstecken. Wie auch bei unseren Checkplugins auch arbeiten wir ständig an einer Erweiterung der gescannten Daten. Jede Checkmk-Version bringt von neue Plugins für den Inventurscanner und die eingesammelten Informationen werden immer detailierter und umfangreicher.

2. Einrichtung

Das Einrichten der HW/SW-Inventur geht in zwei Schritten:

  1. Die Inventur für die gewünschten Hosts einschalten
  2. Das Inventory-Plugin auf diesen Hosts ausrollen

2.1. Die Inventur für die gewünschten Hosts einschalten

Anlegen der Regel

Wie immer wenn Sie etwas für bestimmte Hosts konfigurieren wollen, geht das auch hier mithilfe einer Regel. Diese finden Sie unter WATO ➳ Host & Service Parameters ➳ Hardware/Software-Inventory ➳ Do hardware/software inventory oder natürlich noch einfacher mit der Regelsuche und dem Wort inventory (bitte verwecheseln Sie das nicht mit dem Regelsatz Hardware/Software-Inventory (Linux, Windows, Solaris, AIX). Dieser ist für das Agentenplugin, wie wir später sehen werden). Legen Sie also hier eine neue Regel für die Hosts an, für welche Sie die Inventur aktivieren möchten. Dort finden Sie etliche Einstellungen:

Für's erste lassen Sie einfach alles so wie voreingestellt. Die verschiedenen Möglichkeiten, die Sie hier noch sehen, besprechen wir weiter unten.

Die Regel, welche Sie gerade angelegt haben, erzeugt beim nächsten „Activate Changes“ pro Host einen aktiven Check, der alle Inventurdaten zu diesem Host einsammelt – sei es aus den Daten, die von normalen Checkmk-Agenten kommen oder durch zusätzliche SNMP-Abfragen. Den neuen Service finden Sie in der Serviceliste bei den Hosts und er sieht etwa so aus:

Bitte lassen Sie sich nicht verunsichern, dass der Check nur ein einziges Item gefunden hat. Das liegt daran, dass wir das Plugin noch nicht ausgerollt haben.

Intervall festlegen

Inventurdaten sind Dinge, die sich nur selten ändern. Und das Erkennen einer Änderung ist in der Regel auch nicht zeitkritisch. Deswegen ist es sehr sinnvoll, dass Sie das Intervall, in dem der Inventur-Check ausgeführt wird, anpassen und nicht einfach das übliche Intervall von einer Minute verwenden. Vor allem deswegen, weil das Verarbeiten der Inventurdaten in dem aktiven Check deutlich mehr Rechenzeit benötigt als für einen normalen Service.

Checkmk-Instanzen, die Sie mit Version 1.4.0 oder später angelegt haben, haben dazu automatisch eine Regel im Regelsatz Monitoring Configuration ➳ Normal check interval for service checks, welche für alle Services mit dem Namen Check_MK HW/SW Inventory das Intervall auf einen Tag festlegt:

Wichtig: Falls Sie diese Regel nicht finden, dann legen Sie bitte selbst eine an. Sonst wird der Check einmal pro Minute durchgeführt und auf Ihrem Checkmk-System unnötig Rechenzeit benötigen.

Falls Ihnen einen einmal am Tag zu selten ist, können Sie diese Regel natürlich auch anpassen – z. B. auf vier oder acht Stunden. Und natürlich besteht immer die Möglichkeit, dass Sie das mithilfe mehrerer Regeln für unterschiedliche Hosts unterschiedlich einstellen.

2.2. Das Inventory-Plugin auf diesen Hosts ausrollen

Der wichtigste Schritt ist das Installieren des Agentenplugins für die Inventur auf den betroffenen Hosts. Dies können Sie entweder manuell oder mit der Agentbakery (nur Enterprise Editions) machen.

Installation von Hand

Für eine manuelle Installation benötigen Sie zunächst das Plugin. Dies finden Sie auf den Enterprise Editions auf der Seite WATO ➳ Monitoring Agents ➳ Agent Files und auf der Raw Edition direkt unter WATO ➳ Monitoring Agents. Verwenden Sie je nach Betriebssystem folgendes Plugin:

Betriebssystem Kasten Plugin
Windows Windows Agent - Plugins mk_inventory.vbs
Linux Linux/Unix Agents - Plugins mk_inventory.linux
AIX Linux/Unix Agents - Plugins mk_inventory.aix
Solaris Linux/Unix Agents - Plugins mk_inventory.solaris

Sie finden diese Dateien auch auf der Kommandozeile in der Checkmk-Instanz im Unterverzeichnis share/check_mk/agents/plugins (Linux/Unix) bzw. share/check_mk/agents/windows/plugins (Windows).

Kopieren Sie das Plugin auf die Zielhosts in das korrekte Verzeichnis für Plugins. Beim Windows-Agenten ab Version 1.6.0 ist das C:\ProgramData\checkmk\agent\plugins. Einzelheiten finden Sie im Artikel zum Windows-Agenten.

Bei Linux und Unix lautet das Verzeichnis /usr/lib/check_mk_agent/plugins. Achten Sie hier bitte darauf, dass die Datei ausführbar ist (chmod +x ...). Einzelheiten erfahren Sie im Artikel zum Linux-Agenten.

Wichtig ist nun Folgendes: Der Agent wird ja von Checkmk in der Regel einmal pro Minute abgerufen. Das Inventurplugin benötigt aber mehr Rechenzeit als normale Plugins, weil es z. B. in vielen Verzeichnissen nach installierter Software suchen muss. Auch erzeugt es deutlich größere Datenmengen. Deswegen ist es so entwickelt, dass es nur alle vier Stunden (14400 Sekunden) neue Daten erzeugt und ausliefert.

Falls Sie also für Ihren Inventurcheck aus irgendeinem wichtigen Grund ein kürzeres Intervall als vier Stunden eingestellt haben, werden Sie trotzdem nur alle vier Stunden wirklich neue Daten bekommen. Falls Sie wirklich häufiger Daten ermitteln möchten, müssen Sie in so einem Fall das voreingestellte Berechnungsintervall anpassen.

Bei Windows ersetzen Sie die Zahl direkt im Plugin. Suchen Sie nach der Zahl 14400 und ersetzen Sie diese durch eine andere Anzahl von Sekunden. Diese Stelle sieht so aus (Ausschnitt):

mk_inventury.vbs
Dim delay
Dim exePaths
Dim regPaths

' These three lines are set in the agent bakery
delay = 14400
exePaths = Array("")
regPaths = Array("Software\Microsoft\Windows\CurrentVersion\Uninstall","Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall")

Bei Linux und Unix geht das etwas anders. Dort legen Sie zu diesem Zweck eine Konfigurationsdatei /etc/check_mk/mk_inventory.cfg an mit folgender Zeile (hier im Beispiel mit 7200 Sekunden):

/etc/check_mk/mk_inventury.cfg
INVENTORY_INTERVAL=7200

Noch ein Hinweis: Das Inventurplugin kümmert sich selbst darum, dass es nur alle vier Stunden ausgeführt wird. Verwenden Sie daher nicht den Mechanismus vom Agenten für eine asynchrone Ausführung von Plugins mit größeren Intervallen. Installieren Sie das Plugin auf die einfache normale Art zur direkten Ausführung.

Konfiguration über die Agent Bakery

Falls Sie für die Konfiguration Ihrer Agenten die Agentbakery verwenden, ist die Sache natürlich viel komfortabler. Hier gibt es unabhängig vom Betriebssystem nur einen einzigen Regelsatz. Dieser steuert das Ausrollen des nötigen Plugins sowie dessen Konfiguration. Sie finden ihn unter WATO ➳ Monitoring Agents ➳ Rules ➳ Hardware/Software-Inventory (Linux, Windows, Solaris, AIX):

Hier können Sie neben dem Intervall auch noch für Windows Pfade angeben, in denen nach ausführbaren .EXE-Dateien gesucht werden soll, wenn es darum geht, die auf dem System installierte Software zu finden. Auch die Pfade in der Windows-Registry, die als Indikator für installierte Software berücksichtigt werden sollen, können Sie hier konfigurieren.

2.3. Test

Wenn Sie das Plugin korrekt ausgerollt haben, dann müssen Sie bei der nächsten Ausführung des Inventurchecks eines Hosts deutlich mehr Datensätze finden. Das sieht dann z. B. so aus:

3. Mit den Inventurdaten arbeiten

3.1. Baumartige Darstellung

Die Inventurdaten der Hosts werden zum einen in einem je Inventurbaum pro Host und zum anderen in Tabellen dargestellt. Den Baum erreichen Sie auf verschiedenen Wegen. Wenn Sie in einer Ansicht zu einem Host sind (z. B. Services of Host...), finden Sie oben bei den Knöpfen auch einen mit der Aufschrift Inventory:

Alternativ gehen Sie zu dem Service Check_MK HW/SW Inventory, dort zum Menüsymbol und dort zum Eintrag Show Hardware/Software Inventory of this host:

Den gleichen Menüeintrag finden Sie auch im Menü des Hosts selbst, welches Sie in Ansichten finden, die nicht Services, sondern Hosts auflisten.

In allen drei Fällen landen Sie bei der Baumdarstellung der Inventurdaten des Hosts. Ausgehend von den drei Basiskategorien Hardware, Networking und Software können Sie Unteräste auf- und zuklappen:

3.2. Tabellarische Darstellungen

Viele der Inventurdaten sind Einzelwerte unter ganz konkreten Pfaden im Baum, z. B. der Eintrag Hardware ➳ System ➳ Manufacturer ➳ Apple Inc.. Es gibt aber auch Stellen im Baum mit Tabellen gleichartiger Objekte. Eine sehr wichtige ist. z. B. die Tabelle Software ➳ Packages:

Hier finden Sie die Tabelle aller auf dem Host installierten Softwarepakete. Bitte achten Sie auf den Link Open this table for filtering / sorting rechts oben. Dieser zeigt Ihnen, dass es diese Tabelle auch als Ansicht gibt – mit den üblichen Möglichkeiten wie Filtern und Sortieren. Das Wichtige hier ist: Diese Ansicht gibt Ihnen die Möglichkeit, in den Daten (z. B. Softwarepaketen) von allen Hosts zu suchen, nicht nur in einem.

Zu den Filtern gelangen Sie wie gewohnt mit dem Symbol :

Wenn Sie über den oben genannten Link hierhergekommen sind, dann ist im Filter Hostname (exact match) bereits der entsprechende Hostnamen eingetragen. Wenn Sie diesen entfernen, können Sie über alle Hosts in ihrem Monitoring suchen.

Alle tabellenartigen Inventuransichten finden Sie auch über das Views-Element in der Seitenleiste unter dem Eintrag Inventory. Diejenigen, die mit dem Wort Search beginnen, geben erst dann Daten aus, wenn Sie den Knopf Search drücken (nachdem Sie eventuell einige der Filter ausgefüllt haben).

Bitte beachten Sie, dass viele allgemeine Filter zu den Hosts nicht per Default in den Views verfügbar sind. Diese bekommen Sie, wenn Sie die View editieren und weitere Hostfilter hinzufügen.

Weitere Dinge, die Sie mit den Views machen können:

Übrigens können Sie auch solche Inventurdaten in Views aufnehmen, welche nicht tabellenartig sind. Dazu gibt es für jeden wohlbekannten Pfad im Inventurbaum einen Spaltentyp, welchen Sie in Views von Hosts hinzufügen können. Ein Beispiel dafür ist die vordefinierte Beispielview CPU Related Inventory of all Hosts. Das ist eine Tabelle der Hosts, welche pro Host zusätzliche Daten aus der Inventur anzeigt. Hier ist beispielhaft eine der Spaltendefinitionen, welche eine Spalte mit der Anzahl der physikalischen CPUs des Hosts hinzufügt:

4. Historischer Verlauf der Inventurdaten

Sobald Sie die HW/SW-Inventur für einen Host eingerichtet haben, wird Checkmk jede Änderung in den Inventurdaten erfassen und die Historie aufzeichnen. Sie finden diese von einer Hostview aus mit dem Knopf Inventory history:

Hier ist ein Ausschnitt aus der Historie. Sie sehen in der Tabelle der installierten Softwarepakete wie sich dort durch einen Softwareupdate auf einem Linuxsystem die Versionnummern etlicher installierter Pakete geändert haben. Unveränderte Daten werden hier nicht angezeigt:

Wenn Sie möchten, können Sie sich alarmieren lassen, wann immer eine Änderung in der Software oder Hardware auftritt. Dies geschieht über den Status des Services Check_MK HW/SW Inventory. Dazu editieren Sie die Regel, die Sie ganz am Anfang dieses Artikels angelegt haben (im Regelsatz Do hardware/software inventory). Dort finden Sie im Wert der Regel etliche Einstellungen, welche die Historie betreffen. Folgendes Beispiel setzt den Service auf WARN wenn sich Änderungen in Software oder Hardware ergeben:

Sobald der Inventurcheck das nächste Mal Änderungen feststellt, wird er auf WARN gehen. Das sieht dann z. B. so aus:

Bei der nächsten Ausführung des Checks, bei der sich nichts geändert hat, geht dieser wieder automatisch auf OK. Indem Sie die Ausführung manuell anstoßen, haben Sie damit auch eine Methode, den Service von Hand wieder auf OK zu setzen, wenn Sie nicht den normalen regelmäßigen Lauf abwarten möchten.

5. Statusdaten

Der Baum der Inventurdaten kann automatisch um aktuelle passende Statusdaten ergänzt werden. Das ist in einigen Fällen sehr nützlich. Ein Beispiel dafür sind die ORACLE Tablespaces. In den eigentlichen Inventurdaten sind lediglich relativ statische Dinge wie die SID, der Name und der Typ enthalten. Aktuelle Statusdaten können dies ergänzen um Angaben zur aktuellen Größe, freiem Platz usw.

Wenn Sie Statusdaten in Ihrem Baum möchten (und da spricht eigentlich nichts dageben), müssen Sie eigentlich nichts weiter tun, denn in der Regel, welche Sie am Anfang unter Do hardware/software inventory angelegt haben, sind diese per Default automatisch aktiviert:

Wenn Sie also nicht aktiv das Kreuz in der Checkbox Status data inventory entfernt haben oder die Einstellung dort geändert haben, bekommen Sie auch Statusdaten. Änderung in Statusdaten finden übrigens keinen Niederschlag in der Historie! Dies würde quasi zu ständigen Änderungen führen und diese Funktion nutzlos machen.

6. Externer Zugriff auf die Daten

6.1. Zugriff via Web-API

Sie können die HW/SW-Inventurdaten eines Hosts über eine Web-API exportieren. Die URL dazu lautet host_inv_api.py?host= und der Angabe des Hostnamens. Beispiel:

http://mycmkserver01/mysite/check_mk/host_inv_api.py?host=myhost123

Das Ausgabeformat in diesem Fall ist Python-Quellcode. Wenn Sie JSON bevorzugen, dann hängen Sie einfach ein &output_format=json dran:

http://mycmkserver01/mysite/check_mk/host_inv_api.py?host=myhost123&output_format=json

Das Ergebnis sieht dann etwas so aus:

myhost123.json
{
    "result": {
        "hardware": {
            "chassis": {
                "manufacturer": "Apple Inc.",
                "type": "Notebook"
            },
            "cpu": {
                "arch": "x86_64",
                "cache_size": 6291456,
                "cores": 4,
                "cores_per_cpu": 4,
                "cpus": 1,
                "max_speed": 2500000000.0,
                "model": "Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz",
                "threads": 8,
                "threads_per_cpu": 8,
                "vendor": "intel",
                "voltage": 1.1
            },
... usw...

    },
    "result_code": 0
}

Wenn Sie die URL in der Zeile Ihres Browsers eingeben, wir das sofort funktionieren, weil Sie dort bereits an Checkmk angemeldet sind. Von einem Skript aus machen Sie die Authentifizierung am besten mit einem Automation-User.

6.2. Zugriff via Datei

Alternativ können Sie auch einfach die Dateien auslesen, die Checkmk selbst erzeugt. Diese sind in Pythonformat und liegen im Verzeichnis var/check_mk/inventory. Für jeden Host gibt es dort eine Datei in unkomprimierter (z. B. myhost123) und eine in komprimierter Variante (z. B. myhost123.gz).

7. Inventur in verteilten Umgebungen

Auf den Enterprise Editions funktioniert die HW/SW-Inventur auch in verteilten Umgebungen. Hier werden die Inventurdaten zunächst durch die lokalen Instanzen ermittelt und dort unterhalb von var/check_mk/inventory abgelegt. Statusdaten werden nicht in Dateien abgelegt, sondern wie die Resultate von Checks direkt im Hauptspeicher vom Monitoringkern gehalten.

Der Livestatusproxy-Daemon überträgt turnusmäßig alle aktualisierten Inventurdaten von dem Remotesite in die Zentrale und legt sie dort ebenfalls unter var/check_mk/inventory ab. Dies ist wichtig, da diese Daten zu umfangreich sind, um sie bei einer Abfrage in diesem Augenblick live abzuholen.

Sobald über die Zentralinstanz Abfragen zu Inventurdaten macht, werden diese Dateien gelesen und dann noch mit aktuellen Statusdaten zusammengeführt, welche per Livestatus von den Remoteinstanzen geholt werden.

Kurz zusammengefasst: Sie müssen sich um nichts kümmern.

In der Raw Edition gibt es keinen Livestatusproxy. Daher ist auch die HW/SW-Inventur in der zentralen GUI unvollständig und zeigt nur die Statusdaten. Sie können sich dadurch behelfen, indem Sie die Dateien im Verzeichnis var/check_mk/inventory regelmäßig mit einem Skript oder dergleichen in die zentrale Site übertragen. Dabei genügt es, die Dateien ohne der Endung .gz zu kopieren. Für eine effiziente Übertragung eignet sich z. B. rsync.

8. Dateien und Verzeichnisse

8.1. Verzeichnisse auf dem Checkmk-Server

Pfad Bedeutung
share/check_mk/agents/plugins/ Hier liegen Agentenplugins für Linux und Unix
share/check_mk/agents/windows/plugins/ Agentenplugins für Windows
var/check_mk/inventory/ Inventurdaten der einzelnen Hosts als Python-Dateien (komprimiert und unkomprimiert)

8.2. Verzeichnisse auf den überwachten Hosts

Pfad Bedeutung
C:\ProgramData\checkmk\agent\plugins\ Ablageort für das Inventurplugin beim Windows-Agenten
/usr/lib/check_mk_agent/plugins/ Ablageort für das Inventurplugin beim Linux/Unix-Agenten
/etc/check_mk/mk_inventory.cfg Konfiguration für das Inventurplugin