Checkmk
to checkmk.com
Tip

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

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. In den folgenden beiden Abschnitten erklären wir, worauf beim jeweiligen Verfahren zu achten ist.

2.1. Systembenutzer verwenden (nur Windows)

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. Der banalste: Auf Linux-Systemen gibt es keinen Windows-Systembenutzer. Weiter geht es dann bei Sicherheitsvorgaben im Unternehmen oder 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 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 über das Microsoft SQL Server Management Studio (mit einem beliebigen Benutzernamen) erstellen:

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

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.

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 SQL TO checkmk;
      GRANT CONNECT ANY DATABASE TO checkmk;
      GRANT VIEW ANY DATABASE TO checkmk;
      GO

3. Manuelle Einrichtung der Verbindung

Wenn Sie CRE 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.

3.1. Konfigurationsdatei erstellen

Auf dem Windows-Host legen Sie im unten angegebenen Verzeichnis eine Datei mk-sql.yml an:

Bei Verwendung des Systembenutzers genügt:

C:\ProgramData\checkmk\agent\config\mk-sql.yml
---
mssql:
  main:
    authentication:
      username: ''
      type: integrated

Verwenden Sie stattdessen das dezidierte Konto für das Monitoring, so brauchen Sie folgenden Inhalt:

C:\ProgramData\checkmk\agent\config\mk-sql.yml
---
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:

C:\ProgramData\checkmk\agent\config\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

3.2. Agentenplugin installieren

Unter Setup > Agents > Windows files finden Sie im Abschnitt Windows Agent die Datei mk-sql.exe.

Auswahl des Agentenplugins in Checkmk.

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.

3.3. 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:

Auszug der Service-Erkennung.

4. Erweiterte Konfiguration

4.1. 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:

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 Agentenplugins auf einem Windows-Host finden Sie im Artikel über den Windows-Agenten.

4.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öß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.

Einstellung der genutzten Dateigrößen.

5. 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 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 (Linux, Windows)' in den Agentenregeln.

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).

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

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.

Mehrere MSSQL-Instanzen in der Bakery-Regel.

5.1. 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

C:\ProgramData\checkmk\agent\plugins\

Verzeichnis zur Ablage der Agentenplugins.

C:\ProgramData\checkmk\agent\config\mk-sql.yml

Konfigurationsdatei für das Agentenplugin.

7.2. Auf dem MSSQL-Host (Linux)

Pfad Verwendung

/usr/lib/check_mk_agent/plugins/

Verzeichnis zur Ablage der Agentenplugins.

/etc/check_mk/mk-sql.yml

Konfigurationsdatei für das Agentenplugin.

7.3. Auf dem Checkmk-Server

Pfad Verwendung

~/share/check_mk/agents/windowss/mk-sql.exe

Das Agentenplugin, das Sie auf Ihre Windows-Hosts kopieren müssen, um MSSQL dort zu überwachen.

~/share/check_mk/agents/linux/mk-sql

Das Agentenplugin, das Sie auf Ihre Linux-Hosts kopieren müssen, um MSSQL dort zu überwachen.

Auf dieser Seite