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:
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.
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:
[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:
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:
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.
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.
4. Konfiguration über die Agentenbäckerei
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:
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.
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 |
---|---|
|
Plugin-Verzeichnis |
|
Konfigurationsverzeichnis |
6.2. Auf dem Checkmk-Server
Pfad | Verwendung |
---|---|
|
Das Plugin, welches auf dem MSSQL-Host die Daten holt. |