Dieser Artikel ist derzeit im Entstehen begriffen und wird regelmäßig ergänzt. |
1. Einleitung
Checkmk ermöglicht Ihnen ein umfangreiches Monitoring von Microsoft SQL Server (im weiteren Verlauf nur noch mit "MSSQL" abgekürzt). Eine vollständige Auflistung aller verfügbaren Check-Plugins finden Sie in unserem Katalog der Check-Plugins.
Um die Datenbanken überwachen zu können, benötigen Sie neben dem Checkmk-Agenten zusätzlich noch das Agentenplugin mk-sql
.
Dieses Agentenplugin ist ab Checkmk 2.3.0 auch in der Lage, Datenbanken auf entfernten Systemen zu überwachen.
Zusätzliche Software wird weder auf dem Checkmk- noch auf dem Datenbank-Server benötigt.
Die einzige zwingende Voraussetzung für die Verwendung von mk-sql
ist, dass in der SQL-Server-Netzwerkkonfiguration das Protokoll TCP/IP aktiviert ist.
Sollte in Ihrer MSSQL-Server-Umgebung kein TCP/IP zugelassen beziehungsweise erlaubt sein, müssen Sie bis auf Weiteres auf das Legacy-Plugin mssql.vbs
zurückgreifen.
2. Login für die Überwachung einrichten (Windows)
Das Agentenplugin benötigt Zugang zu Ihren MSSQL-Instanzen. Im Regelfall steht — lange bevor das Monitoring-Team kommt — fest, wie ein solcher Zugang aussehen kann oder darf. Im Falle von MSSQL gibt es zwei Möglichkeiten. Entweder Sie verwenden ausschließlich den Windows Authentication mode oder den Mischbetrieb SQL Server and Windows Authentication mode.
2.1. Systembenutzer verwenden
Der Checkmk-Agent wird auf Windows-Systemen vom Systembenutzer (NT AUTHORITY\SYSTEM
) ausgeführt.
Wenn Sie diesen Systembenutzer auch für das Monitoring von MSSQL verwenden können, müssen Sie nur noch darauf achten, dass dieses Konto (login), mindestens Berechtigungen für die folgenden absicherungsfähigen Elemente (Securables) besitzt:
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 (Verbindung mit beliebiger Datenbank) zu erteilen.
2.2. Dediziertes Konto für das Monitoring verwenden
Es gibt auch gute Gründe dafür, das Monitoring von MSSQL nicht über den Systembenutzer von Windows laufen zu lassen. Denkbar sind unter anderem Sicherheitsvorgaben im Unternehmen oder einfach der Wunsch, dedizierte und klar benannte Logins zu haben, deren Sinn und Zweck schon am Namen ablesbar ist.
Selbstverständlich funktioniert das Agentenplugin auch mit solchen Konten (Logins).
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 wollen oder können, dürfte diese Voraussetzung zwar bereits erfüllt sein, sie soll aber auch nicht unerwähnt bleiben.
Sollte noch kein entsprechender Benutzer auf Ihrem MSSQL-Server bzw. in Ihrer -Instanz vorhanden sein, so können Sie diesen auf Ihrem Windows-System über das Microsoft SQL Server Management Studio (mit einem beliebigen Benutzernamen) erstellen:
Dieser Login benötigt die folgenden Berechtigungen:
View server state
Connect SQL
Connect any database
Erteilen Sie diese Berechtigungen im Object Explorer über Security > Logins. Öffnen Sie hier die Eigenschaften des Kontos (login) und klicken Sie auf Securables. Unter Explicit finden Sie die drei oben genannten Einträge. Setzen Sie in der Spalte Grant die entsprechenden Haken und bestätigen über OK.
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 SQL TO checkmk;
GRANT CONNECT ANY DATABASE TO checkmk;
GRANT VIEW ANY DATABASE TO checkmk;
GO
2.3. Manuelle Einrichtung der Verbindung
Wenn Sie Checkmk Raw nutzen oder die Agentenbäckerei der kommerziellen Editionen nicht nutzen wollen, richten Sie die Kommunikation manuell ein.
Für die weitere Beschreibung gehen wir davon aus, dass der Agent für die Windows-Überwachung bereits auf dem Host installiert ist.
Konfigurationsdatei erstellen
Auf dem Windows-Host legen Sie im unten angegebenen Verzeichnis eine Datei mk-sql.yml
an:
Bei Verwendung des Systembenutzers genügt:
---
mssql:
main:
authentication:
username: ''
type: integrated
Verwenden Sie stattdessen das dezidierte Konto für das Monitoring, so brauchen Sie folgenden Inhalt:
---
mssql:
main:
authentication:
username: checkmk
password: MyPassword123
type: sql_server
Sollten Sie auf dem Host mehrere MSSQL-Instanzen mit verschiedenen Benutzernamen und Passwörtern betreiben, erweitern Sie die yml
-Datei entsprechend um die Angaben zu den Instanzen.
Ihre yml
-Datei könnte dann beispielsweise so aussehen:
---
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
Agentenplugin installieren
Unter Setup > Agents > Windows files finden Sie im Abschnitt Windows Agent die Datei mk-sql.exe
.
Laden Sie die Datei herunter und legen Sie diese auf dem Windows-Host im Verzeichnis C:\ProgramData\checkmk\agent\plugins\
ab.
Führen Sie die Datei danach einmal aus.
Services einrichten
Nachdem Sie das Agentenplugin 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:
2.4. Erweiterte Konfiguration
Asynchrone Ausführung des Agentenplugins
Das Agentenplugin 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 Agentenplugin 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 Agentenplugins auf einem Windows-Host finden Sie im Artikel über den Windows-Agenten.
3. Login für die Überwachung einrichten (Linux)
3.1. Benutzer für das Monitoring anlegen
Der Checkmk-Agent wird auf Linux-Systemen von einem Systembenutzer (root
) ausgeführt.
Auch für das Monitoring von MSSQL können Sie einen Systembenutzer verwenden. Dieser Benutzer sollte mindestens die folgenden Berechtigungen besitzen:
View server state
Connect SQL
Connect any database`
Es gibt auch gute Gründe dafür, das Monitoring von MSSQL nicht über einen Systembenutzer von Linux laufen zu lassen. Diese reichen von Sicherheitsvorgaben im Unternehmen bis zu einfach dem Wunsch, dedizierte und klar benannte Logins zu haben, deren Sinn und Zweck schon am Namen ablesbar ist.
Selbstverständlich funktioniert das Agentenplugin auch mit solchen Konten (Logins).
Die Grundvoraussetzung in MSSQL ist, dass die Server authentication auf SQL Server and Windows Authentication mode gestellt ist. Wenn Sie keinen Linux-Systembenutzer verwenden wollen oder können, dürfte diese Voraussetzung zwar bereits erfüllt sein, sie soll aber auch nicht unerwähnt bleiben.
Sollte noch kein entsprechender Benutzer auf Ihrem MSSQL-Server bzw. in Ihrer -Instanz vorhanden sein, so können Sie diesen auf Ihrem Linux-System über die Befehlszeile erstellen:
Im folgenden Beispiel wird das für den Benutzer checkmk
erledigt:
sudo adduser --system checkmk --ingroup sudo
Folgen Sie den Aufforderungen zur Passwortvergabe etc.
Danach:
sudo
GRANT CONNECT SQL TO checkmk;
GRANT CONNECT ANY DATABASE TO checkmk;
GRANT VIEW ANY DATABASE TO checkmk;
GO
3.2. Manuelle Einrichtung der Verbindung
Wenn Sie Checkmk Raw nutzen oder die Agentenbäckerei der kommerziellen Editionen nicht nutzen wollen, richten Sie die Kommunikation manuell ein.
Für die weitere Beschreibung gehen wir davon aus, dass der Agent für die Linux-Überwachung bereits auf dem Host installiert ist.
Konfigurationsdatei erstellen
Auf dem Linux-Host legen Sie im unten angegebenen Verzeichnis eine Datei mk-sql.yml
an:
---
mssql:
main:
authentication:
username: checkmk
password: checkmkPW
type: sql_server
Sollten Sie auf dem Host mehrere MSSQL-Instanzen mit verschiedenen Benutzernamen und Passwörtern betreiben, erweitern Sie die yml
-Datei entsprechend um die Angaben zu den Instanzen.
Ihre yml
-Datei könnte dann beispielsweise so aussehen:
---
mssql:
main:
authentication:
username: checkmk
password: checkmkPW
type: sql_server
instances:
- sid: myInstance1
auth:
username: myUser1
password: 123456
type: sql_server
- sid: myInstance2
auth:
username: myUser2
password: 987654
type: sql_server
Agentenplugin installieren
Unter Setup > Agents > Linux, Solaris, AIX files finden Sie im Abschnitt /linux die Datei mk-sql.txt
.
Laden Sie die Datei herunter und legen Sie diese auf dem Linux-Host im Verzeichnis ~/usr/lib/check_mk_agent/plugins/mk-sql
ab.
Führen Sie die Datei danach einmal aus.
Services einrichten
Nachdem Sie das Agentenplugin 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.3. Erweiterte Konfiguration
Asynchrone Ausführung des Agentenplugins
Das Agentenplugin 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 Agentenplugin unter Linux 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 Agentenplugins auf einem Linux-Host finden Sie im Artikel über den Linux-Agenten.
4. Weitere Konfiguration in Checkmk
4.1. 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ößen überwachen
Auch für die Größe einzelner Dateien in MSSQL können Sie Schwellwerte festlegen. Dazu verwenden Sie den Regelsatz MSSQL datafile sizes.
5. 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 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:
5.1. Einrichtung der Agentenregel (Windows)
Je nachdem, wie sich das Agentenplugin an Ihrem MSSQL-Server anmelden darf (siehe Login für die Überwachung einrichten), wählen Sie unter Authentication nun die entsprechende Option aus.
Nutzen Sie den Systembenutzer (NT AUTHORITY\SYSTEM
), belassen Sie die Auswahl bei Local Integrated Authentication (Windows).
Verwenden Sie stattdessen die SQL Server Authentication, wählen Sie hier die Option SQL Database User Credentials, geben zusätzlich den Login name im Feld User ein und fügen das zugehörige Password hinzu.
Sollten Sie auf dem Host mehrere MSSQL-Instanzen mit verschiedenen Benutzernamen und Passwörtern betreiben, wählen Sie die Option Custom instances. Über Add new element gelangen Sie zu den Angaben für die erste — und danach jede weitere — Instanz, die überwacht werden soll. Tragen Sie hier, analog zur obigen Beschreibung, die Zugriffsdaten je Instanz ein.
5.2. Einrichtung der Agentenregel (Linux)
Wählen Sie unter Authentication die Option SQL database user credentials.
Geben Sie dann den Login name im Feld User ein und fügen Sie das zugehörige Password hinzu. Ergänzen Sie für die Connection den Host name.
Sollten Sie auf dem Host mehrere MSSQL-Instanzen mit verschiedenen Benutzernamen und Passwörtern betreiben, wählen Sie die Option Custom instances. Über Add new element gelangen Sie zu den Angaben für die erste — und danach jede weitere — Instanz, die überwacht werden soll. Tragen Sie hier, analog zur obigen Beschreibung, die Zugriffsdaten je Instanz ein.
5.3. Weitere Optionen
Mit den soeben vorgenommenen Einstellungen kreieren Sie zunächst einen einfachen Agenten zur Überwachung Ihrer MSSQL-Instanz, die sich direkt auf dem Host befindet. Alle verfügbaren Daten werden direkt in Checkmk ausgewertet und für den Standardfall sollte dies bereits genügen. Haben Sie eine komplexere MSSQL-Welt in Ihrem Unternehmen, so gibt es jedoch weitere Optionen, sowohl für die Überwachung der Datenbank auf dem gleichen Host als auch für die Überwachung auf einem entfernten Host. Diese sind prinzipiell für beide Verbindungstypen gleich.
Option | Funktion |
---|---|
Connection |
Brauchen Sie für die allgemeine Verbindung zum MSSQL-Server spezifischere Verbindungsdaten, so können Sie diese hier angeben. |
Data to collect (Sections) |
Hier können Sie abschnittsweise einschränken, welche Daten eingesammelt werden sollen bzw. ob diese synchron oder asynchron gesammelt werden sollen. |
Cache age for asynchronous checks |
Für die zuvor festgelegten asynchronen Checks können Sie den Caching-Zeitraum in Sekunden ändern. |
Map data to specific host (Piggyback) |
Piggyback-Daten können — unabhängig von der eigentlichen Quelle — einem Host zugeordnet werden. So lassen sich zum Beispiel die SQL-Informationen von den Daten des zugrundeliegenden Windows-Servers trennen. |
Discovery mode of databases |
Einstellungen für die Suche in der Instanz. |
Custom instances |
Ergänzend zu den allgemeinen Vorgaben zum Zugriff auf Ihren MSSQL-Server, können Sie hier für spezifische Instanzen eigene Einstellungen setzen. |
Options |
Die maximale Anzahl an parallelen SQL-Server-Verbindungen kann hier eingestellt werden. |
6. Diagnosemöglichkeiten
6.1. Mögliche Fehler und Fehlermeldungen
Fehlermeldung: Failed to gather SQL Server instances
Prüfen Sie, ob die TCP/IP-Verbindung konfiguriert ist und funktioniert.
7. Dateien und Verzeichnisse
7.1. Auf dem MSSQL-Host (Windows)
Pfad | Verwendung |
---|---|
|
Verzeichnis zur Ablage der Agentenplugins. |
|
Konfigurationsdatei für das Agentenplugin. |
7.2. Auf dem MSSQL-Host (Linux)
Pfad | Verwendung |
---|---|
|
Verzeichnis zur Ablage der Agentenplugins. |
|
Konfigurationsdatei für das Agentenplugin. |
7.3. Auf dem Checkmk-Server
Pfad | Verwendung |
---|---|
|
Das Agentenplugin, das Sie auf Ihre Windows-Hosts kopieren müssen, um MSSQL dort zu überwachen. |
|
Das Agentenplugin, das Sie auf Ihre Linux-Hosts kopieren müssen, um MSSQL dort zu überwachen. |