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

1. Einleitung

Neben dem klassischen Monitoring – also dem Überwachen von Status-, Log- und Messdaten – bringt Checkmk noch eine ganz andere Funktion quasi kostenlos mit: die Hardware-/Software-Inventur (oder kurz HW/SW-Inventur). Diese kann auf Ihren Hosts z. B. folgende Informationen 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 in 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 Lizenz-Management-System 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 zurü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 gegenüber vergleichbaren anderen Systemen liegt auf der Hand: Sie können dafür einfach die vorhandene Infrastruktur von Checkmk verwenden und sparen sich das Einrichten und Administrieren einer weiteren Softwareumgebung. Sie rollen lediglich ein einziges zusätzliches Agenten-Plugin aus. Bei SNMP-Geräten ist nicht mal das notwendig, da der Inventurscanner auch SNMP unterstützt und sich die Daten einfach auf diesem Weg holt.

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

2. Einrichtung

Das Einrichten der HW/SW-Inventur geht in zwei Schritten. Voraussetzung ist, dass auf den Hosts bereits der Checkmk-Agent installiert ist (falls diese nicht per SNMP überwacht werden):

  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. Verwechseln Sie das nicht mit dem Regelsatz Hardware/Software-Inventory (Linux, Windows, Solaris, AIX). Dieser ist für das Agenten-Plugin, wie wir später sehen werden. Legen Sie also hier eine neue Regel für die Hosts an, für die Sie die Inventur aktivieren möchten. Dort finden Sie etliche Einstellungen:

Fürs Erste übernehmen Sie die Voreinstellungen. Die anderen Möglichkeiten besprechen wir im Verlauf dieses Artikels.

Die Regel, die Sie gerade angelegt haben, erzeugt beim nächsten Activate Changes einen aktiven Check pro Host, der alle Inventurdaten zu diesem einsammelt, darunter Daten von einem normalen Checkmk-Agenten, aber auch solche, die über SNMP-Abfragen hereinkommen. Den neuen Service finden Sie in der Serviceliste bei den Hosts, und er sieht etwa so aus:

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 den Standard (1 Minute) verwenden – vor allem, 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 höher angelegt haben, haben dazu automatisch eine Regel im Regelsatz Monitoring Configuration ➳ Normal check interval for service checks, die 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 selbst eine an. Sonst wird der Check einmal pro Minute durchgeführt und auf Ihrem Checkmk-System unnötig Rechenzeit benötigen.

Falls Ihnen 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 anders einstellen.

2.2. Das Inventory-Plugin auf diesen Hosts ausrollen

Der wichtigste Schritt ist das Installieren des Agenten-Plugins für die Inventur auf den entsprechenden Hosts. Das können Sie entweder manuell oder mit der Agent Bakery (nur Enterprise Editions) machen.

Installation von Hand

Für eine manuelle Installation benötigen Sie zunächst das Plugin. Dass 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 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 Inventur-Plugin benötigt aber mehr Rechenzeit als normale Plugins, weil es z. B. in vielen Verzeichnissen nach installierter Software suchen muss. Es erzeugt darüber hinaus 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 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 das voreingestellte Berechnungsintervall anpassen.

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

mk_inventory.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_inventory.cfg
INVENTORY_INTERVAL=7200

Noch ein Hinweis: Das Inventur-Plugin 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 normale Art zur direkten Ausführung.

Konfiguration über die Agent Bakery

Falls Sie für die Konfiguration Ihrer Agenten die Agent Bakery 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 finden Sie bei der nächsten Ausführung des Inventurchecks eines Hosts deutlich mehr Datensätze. Das sieht dann z. B. so aus:

3. Mit den Inventurdaten arbeiten

3.1. Baumartige Darstellung

Die Inventurdaten der Hosts werden einmal in einem Baum pro Host und noch einmal in Tabellen dargestellt. Den Baum erreichen Sie beispielsweise in einer Hostansicht (z. B. Services of Host...) über den Knopf Inventory:

Alternativ gehen Sie zu dem Service Check_MK HW/SW Inventory, 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, das 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. 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 zum Filtern und Sortieren. Das Wichtige hier ist: Diese Ansicht gibt Ihnen die Möglichkeit, in den Daten (z. B. Softwarepaketen) aller Hosts zu suchen, nicht nur in den Daten von einem einzigen.

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 Ihrer Monitoring-Umgebung 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).

Beachten Sie, dass in der Voreinstellung viele allgemeine Filter zu den Hosts nicht in den Views verfügbar sind. Sie finden sie, wenn Sie die Ansicht bearbeiten und weitere Filter für den Host hinzufügen.

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

Übrigens können Sie auch solche Inventurdaten in Views aufnehmen, die nicht tabellenartig sind. Dazu gibt es für jeden bekannten Pfad im Inventurbaum einen Spaltentyp, den Sie in Views von Hosts hinzufügen können. Ein Beispiel dafür ist die vordefinierte Beispielansicht CPU Related Inventory of all Hosts. Das ist eine Tabelle der Hosts, die jeweils zusätzliche Daten aus der Inventur anzeigt. Hier ist beispielhaft eine der Spaltendefinitionen, die 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 ein Softwareupdate auf einem Linux-System die Versionsnummern 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. Das geschieht über den Status des Services Check_MK HW/SW Inventory. Dazu bearbeiten 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 geht dieser wieder automatisch auf OK, wenn sich nichts geändert hat. Das heißt, dass Sie den Check von Hand ausführen können, um den Service wieder auf OK zu setzen, wenn Sie nicht bis zum nächsten regelmäßigen Lauf warten 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 um Angaben zur aktuellen Größe, zu freiem Platz usw. ergänzen.

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

Wenn Sie also die Checkbox Status data inventory nicht explizit deaktivieren, erhalten Sie auch Statusdaten. Änderung in Statusdaten finden übrigens keinen Niederschlag in der Historie! Dies würde quasi zu ständigen Änderungen führen und die 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=, gefolgt vom Hostnamen, z. B.:

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 an die URL an:

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
}

Geben Sie die URL in die Adressleiste Ihres Browsers ein. Sie sehen dann sofort ein Ergebnis, weil Sie bereits bei Checkmk angemeldet sind. Von einem Skript aus authentifizieren Sie sich 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 im Python-Format 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 Livestatus-Proxy-Daemon überträgt turnusmäßig alle aktualisierten Inventurdaten von der Remotesite in die Zentrale und legt sie dort ebenfalls unter var/check_mk/inventory ab. Das 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 kommen, 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 Livestatus-Proxy. Daher ist auch die HW/SW-Inventur in der zentralen GUI unvollständig und zeigt nur die Statusdaten. Sie können sich behelfen und die Dateien im Verzeichnis var/check_mk/inventory regelmäßig mit einem Skript o.Ä. an die zentrale Site übertragen. Dabei genügt es, die Dateien ohne die 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 Agenten-Plugins für Linux und Unix.
share/check_mk/agents/windows/plugins/ Agenten-Plugins 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 Inventur-Plugin beim Windows-Agenten
/usr/lib/check_mk_agent/plugins/ Ablageort für das Inventur-Plugin beim Linux-/Unix-Agenten
/etc/check_mk/mk_inventory.cfg Konfiguration für das Inventur-Plugin beim Linux-/Unix-Agenten