Das mit Checkmk 2.3 veröffentlichte und komplett neu entwickelte MS-SQL-Plugin bietet eine Reihe von Funktionen und Verbesserungen, die mit dem Vorgänger-Plugin kaum zu realisieren waren. Die Überarbeitung des MS-SQL-Plugins ist in den letzten Jahren immer notwendiger geworden. In Zuge dessen haben wir die Codebasis des Plugins vollständig erneuert, ohne bestehende Funktionen zu beeinträchtigen.

Eine komplette Überarbeitung des Plugins war hinfällig, da es 12 Jahre nach seiner Einführung nicht mehr ausreichend die Herausforderungen der heutigen Cloud- und Hybrid-Infrastrukturen abdeckte. Das neue Plugin unterstützt jetzt nicht nur komplexe, cloudbasierte Setups, sondern ist auch performanter. Das liegt unter anderem daran begründet, dass wir es aufgrund der Abschaffung von VBScript (Virtual Basic Script) durch Microsoft in einer anderen Programmiersprache entwickelt haben. 

Erkennung von Datenbanken

Für das Plugin bedeutet das enorme Verbesserungen in vielen Bereichen. So kann das neue Plugin nicht nur wie bisher lokale Datenbanken, sondern zusätzlich auch Datenbanken in Cloud-Umgebungen erkennen. Ferner ermöglicht es das Monitoring von Windows-basierten Datenbankinstanzen von Windows- oder Linux-Systemen aus –  vorausgesetzt, die Windows- und Datenbank-Authentifizierungsmethoden werden unterstützt. Das Erkennen von Datenbanken erfolgt automatisch, man muss im Anschluss nur eine Service-Erkennung durchführen.

Performance

Der Monitoring-Output lässt sich zudem optional über mehrere Datenbanken kapseln, um unterschiedliche Cache-Zeiten pro Datenbank zu erreichen. Das ist eine gute Ergänzung zu der ebenfalls neu eingeführten parallelen Ausführung von Calls. Mit dem alten Plugin war man gezwungen, auf die Summe aller Calls zu warten, was den Vorteil von schnellen gegenüber langsameren Datenbanken einschränkte. Außerdem führt Checkmk mit dem neuen Plugin die SQL-Calls nun schneller aus, wodurch das Datenbank-Monitoring generell schneller ist.

Unterstützung für Datenbanken ausgebaut

Mit dem neuen Plugin verbessert sich zudem der Support für MS-SQL-Datenbanken, einschließlich Azure-Datenbanken. Das Vorgänger-Plugin deckte im Vergleich dazu nur Windows-Datenbanken ab, die sich auf demselben Server wie der Monitoring-Agent befanden. Mit dem neuen Plugin ist das Monitoring von Cloud- und LAN/WAN-Datenbanken problemlos möglich. Hauptanwendungsfall ist hier das Azure-SQL-Monitoring. Prinzipiell lässt sich jede Datenbank überwachen, die mit MS-SQL-Abfragen kompatibel ist. 

Ferner ist das neue Plugin nicht allein auf das Monitoring von einem Windows-System aus beschränkt. Dadurch lassen sich jetzt auch MS-SQL-Datenbanken von einem Linux-Rechner aus überwachen. Checkmk verwendet dabei dieselbe Codebasis und dieselben Funktionen. 

Tschüss VBScript, willkommen Rust

Apropos Codebasis: Nach der Abkündigung von VBScript haben wir das Plugin in Rust geschrieben. Das bringt eine Reihe von Vorteilen mit sich. Erstens war das Plugin noch nie schneller, da Rust-Code um ein Vielfaches leistungsfähiger als VBScript ist. Zweitens lässt sich das Plugin plattformübergreifend kompilieren, was das Testen und die Entwicklung weiter beschleunigt. Und da es sich um eine einzige ausführbare Datei haltet, muss man keine Abhängigkeiten auf dem Monitoring-System installieren. Alle Abhängigkeiten sind in der ausführbaren Datei gebündelt. Dadurch ist es jetzt viel einfacher, dass Plugin zu installieren.

Abgesehen von VBScript haben wir auch die Konfiguration des Plugins überarbeitet. Das alte Plugin verwendete ini-Dateien, die auf Windows-Systemen üblich sind. Jetzt verfügt das Plugin über neue Funktionen, die besser auf andere Plugins zur Datenbanküberwachung übertragbar sind. Das schließt auch das Konfigurationsformat mit ein, das auf allen Plattformen gut unterstützt wird. Die Wahl hier fiel auf YAML, da es mit am weitesten verbreitet ist und in Checkmk bereits anderweitig verwendet wird. YAML erwies sich aufgrund seiner hierarchischen Konfigurationsstruktur als sehr vorteilhaft, da sich individuelle Datenbankoptionen leicht von Standardoptionen trennen lassen. 

So verwenden Sie das neue MS-SQL-Plugin

Für das Monitoring von MS-SQL-Datenbanken sind zunächst die entsprechenden Zugriffsrechte notwendig. Das neue Plugin unterstützt zwei Authentifizierungsmethoden: Windows und ein Mix aus Windows und SQL. 

Der Checkmk-Agent läuft unter Windows als Systembenutzer. Wenn dieser über ausreichend Berechtigungen verfügt – und im Falle einer MS-SQL-Datenbank sind das: Serverstatus anzeigen, SQL-Verbindungen herstellen und optional eine Verbindung zu einer beliebigen Datenbank herstellen – dann funktioniert das Plugin Out-of-the-Box. 

Wenn die Verwendung des normalen Windows-Systembenutzers, etwa aus Sicherheitsgründen oder aufgrund interner Richtlinien, unerwünscht oder unmöglich ist, lässt sich ein spezieller Benutzer verwenden, der Zugriff auf die zu überwachenden Datenbanken hat. Dieser Benutzer benötigt die gleichen Berechtigungen wie oben beschrieben. 

Die Installation und Konfiguration des Plugins sind dank der Agent Bakery in den kommerziellen Checkmk-Editionen stark vereinfacht. Sie unterscheidet sich auch nicht von der alten Version. Es genügt, eine Regel für das MS-SQL-Plug-in hinzuzufügen. Dazu gehen Sie auf Setup und suchen Sie im Suchfeld nach Microsoft SQL Server (Linux, Windows). Anschließend konfigurieren Sie das Plugin bequem über die Checkmk-Oberfläche. 

Das Plugin bietet eine ganze Reihe an Optionen. Mit wenigen Handgriffen lassen sich jedoch die meisten Anwendungsfälle schon abdecken. Achten Sie vor allem darauf, den richtigen Wert für die Authentifizierung auszuwählen: Belassen Sie den Standardwert Local Integrated Authentication (Windows), wenn Sie den Systembenutzer unter Windows für die Verbindung zur Datenbank verwenden. 

Authentication field is set to Local integrated authentication

Andernfalls wechseln Sie zu SQL Database User Credentials und fügen Sie den erforderlichen Anmeldenamen und das Passwort hinzu.

Authentication set to SQL db user credentials

Wenn Sie mehrere MS-SQL-Datenbankinstanzen auf demselben Host betreiben, wählen Sie die Option Custom instances. Mit Add new element fügen Sie so viele Datenbankinstanzen hinzu, wie auf dem Host vorhanden sind, und geben die jeweiligen Anmeldedaten wie oben beschrieben ein.

Add custom instances to the monitoring

Falls Sie bestimmte Anmeldedaten für die Verbindung mit dem Host-Server einer Datenbank benötigen, können Sie diese eingeben, wenn Sie die Option Connection aktivieren.

activated connection checkbox with further options

Unter Data to collect (Sections) legen Sie gezielt fest, welche Sektionen Checkmk abfragen und welche Checks es synchron oder asynchron ausführen soll. Wenn Sie ein Feld ignorieren wollen, können Sie dies ebenfalls hier tun.

Configuration of the field Data to collect (Sections)

Für asynchrone Checks können Sie außerdem das Cache-Alter in Sekunden festlegen, indem sie die Option Cache age for asynchronous checks am Ende des Abschnitts auswählen.

Option to configure Cache age for asynchronous checks

Mit der nächsten Checkbox können Sie die (Piggyback-)Daten in Checkmk einem anderen Host zuordnen.

checkbox to map data to a specific host (Piggyback)

Unter Discovery mode of database instances wählen Sie aus, welche Datenbankinstanzen auf dem Host Checkmk überwachen soll – oder welche Sie aus dem Monitoring exkludieren wollen.

Options to discover database instances present on Server

Unter Options legen Sie fest, wie viele parallele Verbindungen erlaubt sind. Der Standardwert ist 6.

Field to configure the max allowed connections

Manuelle Installation und Konfiguration

Sie können das neue MS-SQL-Plugin auch manuell installieren – wie es bei der Checkmk Raw der Fall ist – und auch editieren. Denken Sie jedoch daran, dass, wenn sie die Konfiguration händisch anpassen, aber die Agent Bakery der kommerziellen Checkmk-Editionen zum Aktualisieren des Agenten verwenden, Ihre Änderungen bei jeder Aktualisierung verloren gehen. 

Ab Checkmk 2.3.0 finden Sie das Plugin mk-sql.exe unter Setup > Agents > Windows files. Kopieren Sie die Datei unter C:\ProgramData\checkmk\agent\plugins\ und führen Sie sie einmal aus. Damit haben Sie das Plugin installiert.

Die Konfiguration erfolgt über YAML. Die Konfigurationsdatei finden Sie unter C:\ProgramData\checkmk\agent\config\mk-sql.yml. Ein gutes Grundgerüst ist:

mk-sql.yml---
mssql:
  main:
    authentication:
      username: ""
      type: integrated
    instances:
      - sid: myInstance 1
        auth:
          username: myUser1
          password: "123456"
          type: sql_server
      - sid: myInstance 2
        auth:
          username: myUser2
          password: "987654"
          type: sql_server

Wenn Sie einen normalen Windows-Benutzer für die Datenbanken verwenden, können Sie für username und password einen leeren String (“”) als Wert eintragen. Wenn Sie nur eine einzelne MS-SQL-Datenbankinstanz verwenden, können Sie instances und alle darunter aufgeführten Elemente entfernen. 

Nach der Installation des Plugins und der Erstellung der Konfigurationsdatei, ist es an der Zeit, eine Service-Discovery auf dem Host der Datenbank durchzuführen. Checkmk sollte nun die Datenbankinstanz(en) erkennen und die dazugehörigen Metriken ins Monitoring aufnehmen.

Das Plugin weiter anpassen

Nach der erfolgreichen Einrichtung des Plugins können Sie dieses noch weiter an Ihre Bedürfnisse anpassen. 

Eine Option ist das Festlegen von Schwellwerten für aktive Datenbank-Verbindungen. Sie können den Wert anpassen, wenn Sie die Regel MSSQL Connections auswählen und den Wert ändern. 

Add rule MSSQL Connections

Sie können auch Schwellwerte für die einzelnen Dateien in den Datenbanken festlegen. Mit der Regel MSSQL datafile sizes lassen sich Sie die Schwellwerte für Levels of Datafile used, Levels of Datafile used of allocation und Levels of Datafile allocated anpassen.

Add rule MSSQL Datafile sizes

Beide Regeln finden Sie unter Setup > Services > Service monitoring rules.

Zukünftige Entwicklung und aktuelle Einschränkungen

Das neue MS-SQL-Plugin ist nur ein Puzzle-Stück zur Verbesserung des Datenbank-Monitorings mit Checkmk. Weitere sind bereits in Planung. Wir streben ein einfaches und robustes Datenbank-Monitoring mit Checkmk an, das nicht nur MS SQL umfasst. 

Ein weiterer Punkt ist unter anderem die Erweiterung der Authentifizierungsoptionen. Zu den bereits unterstützten Windows- und Datenbankauthentifizierungen planen wir beispielsweise, zusätzlich eine Token-basierte Authentifizierung hinzuzufügen.

Aktuell arbeiten wir bereits an Verbesserungen bei der automatischen Erkennung von Datenbankinstanzen. Während wir einige bereits implementiert haben, werden andere erst zu einem späteren Zeitpunkt folgen. Damit wollen wir den Aufwand für die Einrichtung des Monitorings von Datenbanken weiter vereinfachen.

Zudem wollen wir den Aufwand für die Installation und Konfiguration des neuen Plugins in Setups verschlanken, bei denen nicht viele Optionen notwendig sind, inklusive Datenbanken wie Microsoft SQL Server Express.

Fazit

Das neue MS-SQL-Plugin ist ein Schritt nach vorn für ein leistungsstarkes, robustes und flexibles Datenbank-Monitoring. Es eröffnet nicht nur die Möglichkeit, viele weitere Funktionen hinzuzufügen, sondern stellt auch ein Sprungbrett für weitere Plugins für das Datenbank-Monitoring dar. Diese sollen auf einer ähnlichen Codebasis fußen, sodass es einfacher ist, Verbesserungen für alle Plugins verfügbar zu machen und gleichzeitig eine schnellere Weiterentwicklung all dieser Plugins zu ermöglichen.