Checkmk
to checkmk.com

1. Einleitung

Checkmk erlaubt Ihnen die umfangreiche Überwachung von Microsoft SQL Server. Eine vollständige Liste der Überwachungsmöglichkeiten können Sie in unserem Katalog der Check-Plugins nachlesen. Unter anderem kann Checkmk die folgenden Werte überwachen:

Um die Datenbanken überwachen zu können, benötigen Sie neben dem Checkmk-Agenten lediglich das Agentenplugin auf dem Datenbank-Server. Zusätzliche Software wird weder auf dem Checkmk- noch auf dem Datenbank-Server benötigt.

Im Folgenden wird die Einrichtung für Windows-Hosts beschrieben. Weiter unten gehen wir auf die Einrichtung über die Agentenbäckerei ein.

2. Überwachung einrichten

2.1. Systembenutzer verwenden

Wenn Sie den Systembenutzer (NT AUTHORITY\SYSTEM) für das Monitoring verwenden können, achten Sie darauf, dass dieses Konto (login), mindestens Berechtigungen für die folgenden sicherungsfähigen Elemente (Securables) benötigt:

  • Verbindung mit beliebiger Datenbank (Connect any database)

  • View Server State

  • Connect SQL

In Abhängigkeit davon, welche Datenbanken Ihrer Instanzen Sie überwachen möchten und je nachdem über welche Server-Rollen und Mappings der Systembenutzer (NT AUTHORITY\SYSTEM) bereits verfügt, kann es notwendig sein, auch die Berechtigung für Connect Any Database zu erteilen.

2.2. Exkurs: Neuen Benutzer einrichten

Sollte es unbedingt notwendig sein, dass in Ihrem Unternehmen nicht der Systembenutzer verwendet wird, so müssen Sie in den zu überwachenden Instanzen einen passenden Datenbankbenutzer für das Monitoring anlegen. Die Grundvoraussetzung in MSSQL ist, dass die Server authentication auf SQL Server and Windows Authentication mode gestellt ist. Wenn Sie nicht den Windows-eigenen Systembenutzer verwenden können, dürfte diese Voraussetzung zwar bereits erfüllt sein, sie soll aber auch nicht unerwähnt bleiben.

Melden Sie sich nun mit einem Benutzer mit ausreichenden Zugriffsberechtigungen in MSSQL an und erstellen Sie über das Microsoft SQL Server Management Studio einen neuen Datenbankbenutzer:

Auswahl der Option 'New Login...' in MSSQL.

Dieser neu angelegte Benutzer benötigt die oben genannte Berechtigung. Gehen Sie in den Object Explorer, öffnen Sie Security > Logins und dann die Eigenschaften des Kontos (login), welche Sie für das Agentenplugin konfiguriert haben. Unter Securables finden Sie die explizite Berechtigung Connect any database, welche Sie erteilen müssen.

Berechtigung 'Connect any database' erteilen.

Alternativ können Sie den Benutzer und die Berechtigungen auch über die Befehlszeile erzeugen. Im folgenden Beispiel wird das für den Benutzer checkmk erledigt:

mssql> USE master;
      CREATE USER checkmk WITH PASSWORD = 'MyPassword123';
      GO

und danach:

mssql> USE master;
      GRANT CONNECT ANY DATABASE TO checkmk;
      GO

Konfigurationsdatei erstellen

Auf dem Windows-Host legen Sie im unten angegebenen Verzeichnis eine Datei mssql.ini an:

C:\ProgramData\checkmk\agent\config\mssql.ini
[client]
user=checkmk
password=MyPassword123

Sollten Sie auf dem Host mehrere MSSQL-Instanzen mit verschiedenen Benutzernamen und Passwörtern betreiben, erstellen Sie einfach pro Instanz eine ini-Datei nach dem Namensschema mssql_instance-ID.ini.

2.3. Agentenplugin installieren

Der Agent für Windows wird standardmäßig bereits mit einer ganzen Reihe von Plugins ausgeliefert. Deshalb finden Sie auch das Plugin für die Überwachung von MSSQL nach der Installation des Agenten bereits auf Ihrem Host. Die Plugin-Datei kopieren Sie für die Verwendung nur noch in das richtige Verzeichnis:

PS> copy "c:\Program Files (x86)\checkmk\service\plugins\mssql.vbs" c:\ProgramData\checkmk\agent\plugins\

2.4. Services einrichten

Nachdem Sie das Plugin nun installiert und konfiguriert haben, können Sie für diesen Host eine Service-Erkennung durchführen. Der folgende Screenshot zeigt dabei nur eine Auswahl der auffindbaren Services:

Auszug der Service-Erkennung.

3. Erweiterte Konfiguration

3.1. Asynchrone Ausführung des Agentenplugins

Das Plugin für die Überwachung von MSSQL kann - wie so viele andere - asynchron ausgeführt werden, um beispielsweise längeren Laufzeiten bei großen MSSQL-Instanzen Rechnung zu tragen.

Um das Plugin unter Windows asynchron auszuführen, passen Sie die Konfiguration des Agenten an und erweitern die Sektion execution unter plugins um den folgenden Eintrag:

C:\ProgramData\checkmk\agent\check_mk.user.yml
plugins:
    execution:
        - pattern: mssql.vbs
          cache_age: 300
          async: yes

Eine detaillierte Anleitung zur asynchronen Ausführung von Plugins auf einem Windows-Host finden Sie im Artikel über den Windows-Agenten.

3.2. Schwellwerte konfigurieren

Verbindungen überwachen

Für die Auslastung der durch MSSQL vorgegebenen maximalen Anzahl an gleichzeitigen Verbindungen können Sie eigene Schwellwerte vorgeben, da diese viel stärker als bei anderen Services vom Aufbau Ihrer MSSQL-Instanz abhängig sind. Die Einrichtung entsprechender Schwellwerte lässt sich mit einer Regel aus dem Regelsatz MSSQL Connections im Handumdrehen bewerkstelligen.

Einstellung der oberen Schwellwerte für aktive Verbindungen.

Dateigröße überwachen

Auch für die Größe einzelner Dateien in MSSQL können Sie Schwellwerte festlegen. Dazu verwenden Sie den Regelsatz MSSQL datafile sizes.

Einstellung der genutzten Dateigrößen.

4. Konfiguration über die Agentenbäckerei

CEE Die Einrichtung wird in den kommerziellen Editionen mittels der Agentenbäckerei sehr vereinfacht, da Syntaxfehler in den Konfigurationsdateien vermieden werden und Anpassungen an sich verändernde Umgebungen einfach bewerkstelligt werden können. Der wesentliche Unterschied zu einer manuellen Installation ist, dass Sie nur noch dann auf dem MSSQL-Host auf der Kommandozeile arbeiten müssen, wenn Sie spezielle MSSQL-spezifische Konfigurationen vornehmen möchten.

Für die erste Einrichtung reicht es, wenn Sie den Datenbankbenutzer auf dem MSSQL-Host einrichten und eine entsprechende Regel in der Agentenbäckerei anlegen. Sie finden den Regelsatz unter Setup > Agents > Windows, Linux, Solaris, AIX > Agent rules. In dem Suchfeld können Sie dann nach mssql suchen:

Die Regel 'Microsoft SQL Server' in den Agentenregeln.

Wählen Sie in der neuen Regel im Abschnitt Microsoft SQL Server (Windows) idealerweise die Option System Authentication für eine einfache und problemlose Anbindung.

Mögliche Einstellungen für den MSSQL Server in der Agentenbäckerei.

Entscheiden Sie sich stattdessen für die Option Database User Credentials, so müssen Sie zusätzlich User ID und Password des gewünschten Datenbanknutzers angeben (z.B. des Benutzers, den Sie zuvor angelegt haben).

5. Diagnosemöglichkeiten

Sollte es beispielsweise bei der Einrichtung der Überwachung zu unerwartetem Verhalten oder Problemen kommen, so empfiehlt sich eine Prüfung direkt auf einem betroffenen Host. Da es sich bei dem Plugin für die Überwachung von MSSQL um Shell- bzw. Visual Basic-Skripte handelt, können diese leicht auch ohne den Agenten ausgeführt werden. Der Shell bzw. der Kommandozeile muss vorher nur das jeweilige Konfigurationsverzeichnis bekannt gemacht werden.

Um das Plugin manuell anführen zu können, öffnen Sie zuerst eine Kommandozeile mit Admin-Rechten. Setzen Sie in dieser Kommandozeile nun die Umgebungsvariable MK_CONFDIR. Diese wird benötigt, damit das Plugin die Konfigurationsdateien finden kann.

PS> set MK_CONFDIR=c:\ProgramData\checkmk\agent\config

Hinweis: Auch hier ist die gesetzte Umgebungsvariable nicht permanent, sondern besteht nur, solange diese Kommandozeile offen ist.

Bei der eigentlichen Ausführung des Plugins empfiehlt es sich, die Ausgabe auf die Kommandozeile umzulenken. Zu diesem Zweck liefert Windows das Bordwerkzeug cscript mit.

PS> cscript c:\ProgramData\checkmk\agent\plugins\mssql.vbs

5.1. Mögliche Fehler und Fehlermeldungen

Failed to connect to database

Es gibt drei verschiedene Treiber mit deren Hilfe Checkmk alternativ versucht sich mit der MSSQL-Datenbank zu verbinden: msoledbsql, sqloledb und sqlncli11.

Standardmäßig sind alle drei in der Regel vorhanden und werden beim Verbindungsaufbau nacheinander getestet. In einzelnen Fällen kann es vorkommen, dass diese sukzessive Abarbeitung zu Fehlermeldungen führt. Gegebenenfalls müssen Sie dann ein oder sogar zwei der genannten Treiber aus der Syntax des Aufrufs entfernen.

mssql.vbs: "no backup found"

Meldet ein Plugin "no backup found", so sollten Sie als erstes manuell prüfen, ob ein Backup vorhanden ist. Ist ein Backup vorhanden und das Problem besteht dennoch weiter, so liegt dies möglicherweise an den Namenskonventionen auf der MSSQL-Seite.

Checkmk interpretiert Host-Namen grundsätzlich in Kleinbuchstaben, werden diese aber im Rahmen der Backups vom Host beispielsweise in Großbuchstaben übermittelt, so entstehen Verständigungsprobleme.

Sie können dann den Wert der serverproperty('collation') auf der MSSQL-Seite prüfen. Ist hier zum Beispiel SQL_Latin1_General_CP1_CS_AS gesetzt, so steht CS für „Case Sensitive“. Das Plugin kann den Host-Namen dann nicht anpassen und es kann zu Problemen aufgrund der Schreibweise kommen. Ein Wechsel auf SQL_Latin1_General_CP1_CI_AS, d.h. auf CI für „Case Insensitive“ sollte das Problem beheben.

Alternativ können Sie auch die Schreibweise des ursprünglichen Namens des MSSQL-Servers ändern. Dies ist nur nicht in jedem Unternehmen und in jeder Umgebung möglich.

6. Dateien und Verzeichnisse

6.1. Auf dem MSSQL-Host

Pfad Verwendung

C:\ProgramData\checkmk\agent\plugins\

Plugin-Verzeichnis

C:\ProgramData\checkmk\agent\config\

Konfigurationsverzeichnis

6.2. Auf dem Checkmk-Server

Pfad Verwendung

~/share/check_mk/agents/plugins/mssql

Das Plugin, welches auf dem MSSQL-Host die Daten holt.

Auf dieser Seite