Einleitung

Das Monitoring von SQL-Servern ist ein entscheidender Aspekt des Datenbankmanagements, um Leistung, Verfügbarkeit und Sicherheit zu gewährleisten. Es gibt eine Vielzahl von Tools, sowohl kostenpflichtige als auch Open-Source-Optionen, die speziell für diese Aufgabe entwickelt wurden. Hier sind einige herausragende Beispiele:

  1. SolarWinds Database Performance Analyzer: Bietet tiefgehende Performance-Analysen und -Optimierungsvorschläge für SQL Server und andere Datenbankplattformen.
  2. Redgate SQL Monitor: Ein umfassendes Monitoring-Tool, das Echtzeit-Performance-Daten und Warnungen bietet, um SQL Server-Umgebungen zu optimieren.
  3. IDERA SQL Diagnostic Manager: Überwacht die Leistung von SQL Servern, identifiziert Probleme, und bietet Lösungen zur Optimierung.
  4. Paessler PRTG Network Monitor: Ein Netzwerk-Monitoring-Tool, das auch SQL Server-Überwachung durch spezifische Sensoren unterstützt.
  5. ManageEngine Applications Manager: Überwacht SQL Server-Performance, erkennt Engpässe und hilft bei der Kapazitätsplanung.
  6. ApexSQL Monitor: Bietet detaillierte Einblicke in die SQL Server-Leistung, inklusive Deadlocks, Wartezeiten und Ressourcennutzung.
  7. SQLWATCH.IO: Ein Open-Source-Tool für das Performance-Monitoring von SQL Server, das auf erweiterte Analysen und Dashboards setzt.
  8. Checkmk: Ein flexibles Monitoring-Tool, das auch für SQL Server genutzt werden kann, mit starken Anpassungsoptionen.
  9. Nagios: Ein Open-Source-Netzwerküberwachungssystem, das auch die Überwachung von SQL Servern unterstützt, mit Fokus auf Infrastruktur-Health.
  10. Zabbix: Ein Open-Source-Netzwerk- und Anwendungsüberwachungstool, das SQL Server-Überwachung durch integrierte Vorlagen und Sensoren ermöglicht.
  11. Quest Spotlight: Bietet eine umfassende SQL Server-Überwachung mit Diagnosefunktionen zur schnellen Problemlösung.
  12. SentryOne: Überwacht SQL Server-Performance und bietet detaillierte Analysen zur Optimierung.
  13. DBForge Monitor: Ein kostenloses SQL Server-Überwachungstool, das detaillierte Statistiken zur Serverleistung bietet.
  14. SQL Sentry: Bietet Performance-Monitoring, -Analyse und -Optimierung für SQL Server.
  15. Datadog: Ein Cloud-basiertes Monitoring-Tool, das SQL Server-Überwachung zusammen mit anderen Technologien unterstützt.
  16. LogicMonitor: Eine Cloud-basierte Überwachungsplattform, die umfassende Einblicke in SQL Server-Umgebungen bietet.
  17. Dynatrace: Bietet tiefgehende SQL Server-Performance-Analysen innerhalb einer umfassenden APM-Lösung.
  18. New Relic: Ein Application Performance Management (APM) Tool, das auch SQL Server-Überwachung einschließt.
  19. AppDynamics: Bietet SQL Server-Monitoring im Kontext breiterer Anwendungsleistungsmanagement-Funktionen.
  20. Opsview: Ein IT-Überwachungstool, das SQL Server zusammen mit anderen Servern und Netzwerkkomponenten überwacht.

Beispiel: SQLWATCH.IO

SQLWATCH.IO, ein Open-Source-Tool, wurde speziell für die Leistungsüberwachung von SQL Servern entwickelt. Es bietet SQL-Administratoren eine umfangreiche Palette an Funktionen zur Überwachung der Serverleistung, indem es wesentliche Leistungsindikatoren sammelt und visualisiert. Administratoren und Entwickler erhalten mit SQLWATCH.IO wertvolle Einblicke in die Performance ihrer SQL Server-Instanzen, können Engpässe aufdecken und die Effizienz ihrer Datenbanken steigern. Durch die Bereitstellung von Dashboards zur visuellen Datenrepräsentation ermöglicht SQLWATCH.IO eine intuitive Performance-Analyse und fördert die proaktive Wartung sowie Feinabstimmung von SQL Server-Umgebungen.

Vorbereitung

Basierend auf praktischen Erfahrungen ist es empfehlenswert, den Namen des Servers zu überprüfen, vor allem nach einer Umbenennung des Rechners post Installation des SQL-Servers, um Fehler zu vermeiden.

Um spezifische Fehlermeldungen wie „Error SQL72014: .Net SqlClient Data Provider: Msg 15404, Level 16, State 11, Line 1 Could not obtain information about Windows NT group/user ‚XXXX‘, error code 0x534.“ zu umgehen, ist es ratsam, die Benutzerkonfiguration am SQL Server genau zu überprüfen. Dies lässt sich effektiv durchführen, indem man folgendes ausführt.

Select * from sys.server_principals

Im Rahmen der Vorbereitung und Konfiguration von SQLWATCH.IO ist es entscheidend, die Korrektheit des Servernamens zu überprüfen. Diese Prüfung ist besonders wichtig, falls der Rechner, auf dem der SQL Server läuft, nach der Installation umgenannt wurde. Eine Diskrepanz zwischen dem tatsächlichen Rechnernamen und dem im SQL Server registrierten Namen kann zu unerwarteten Fehlern führen. Es gibt mehrere SQL-Befehle, die Administratoren nutzen können, um den aktuell hinterlegten Servernamen zu überprüfen:

  1. Der Befehl SELECT @@SERVERNAME liefert den Namen, unter dem der SQL Server sich selbst erkennt. Dieser Name sollte nach einer Umbenennung des Rechners aktualisiert werden, um Konsistenz zu gewährleisten.
  2. Eine weitere Möglichkeit bietet der Befehl SELECT * FROM sys.servers, der eine Auflistung aller auf dem SQL Server konfigurierten Server, einschließlich des lokalen Servers, zurückgibt. Auch hier sollte der korrekte, aktuelle Servername ersichtlich sein.
  3. Für eine zuverlässige Gegenkontrolle dient der Befehl SELECT SERVERPROPERTY('MachineName'), der den physischen Namen des Rechners zurückgibt, auf dem der SQL Server läuft. Dieser Wert spiegelt immer den aktuellen, korrekten Rechnernamen wider und kann somit als Referenz für die Überprüfung der anderen Namen dienen.

Die Installation und korrekte Funktion von SQLWATCH.IO hängt maßgeblich vom Wert ab, der durch @@SERVERNAME zurückgegeben wird, da dieses Tool darauf basiert, den Server korrekt zu identifizieren. Sollte sich herausstellen, dass @@SERVERNAME einen veralteten oder inkorrekten Namen liefert, ist es notwendig, diesen zu korrigieren, um die Integrität der Überwachungsfunktionen von SQLWATCH.IO zu gewährleisten.

Die Korrektur kann durch ein einfaches Skript erfolgen, das den aktuellen physischen Rechnernamen mittels SERVERPROPERTY('ComputerNamePhysicalNetBIOS') abruft und diesen Namen dann verwendet, um den alten Servernamen zu entfernen (sp_dropserver) und den neuen, korrekten Namen zu registrieren (sp_addserver @s, local). Dieser Prozess stellt sicher, dass SQLWATCH.IO und andere abhängige Dienste und Funktionen korrekt arbeiten können, indem sie auf den aktualisierten, korrekten Servernamen zugreifen.

Zusammengefasst ist die Überprüfung und gegebenenfalls Korrektur des Servernamens ein kritischer Schritt in der Vorbereitung der SQLWATCH.IO-Installation. Diese Maßnahmen helfen, mögliche Fehlerquellen zu eliminieren und die Zuverlässigkeit sowie Effizienz der Serverüberwachung und -wartung zu verbessern.

Installation der dbatools

Die Installation von SQLWATCH.IO wird durch die Verwendung der dbatools, einer Sammlung von PowerShell-Modulen für Datenbankadministratoren, erheblich vereinfacht. Bevor man jedoch mit der Installation beginnt, ist es essentiell, die installierte Version von PowerShell zu überprüfen, um sicherzustellen, dass die dbatools korrekt installiert werden können. Dies lässt sich leicht mit dem folgenden Befehl in der PowerShell durchführen:

$PSVersionTable.PSVersion

Für Benutzer, deren PowerShell-Version 7 oder höher ist, erfolgt die Installation der dbatools direkt durch den Einsatz des folgenden Befehls:

Install-Module dbatools -Scope CurrentUser

Dieser Befehl installiert die dbatools nur für den aktuellen Benutzer, was bedeutet, dass keine administrativen Rechte für die Installation auf dem System erforderlich sind. Es ist eine einfache und direkte Methode, die notwendigen Tools für SQLWATCH.IO zu installieren, ohne das System global zu verändern.

Für Anwender, die mit einer älteren Version von PowerShell (unter Version 7) arbeiten, ist die Installation etwas komplizierter, da die direkte Installation der dbatools möglicherweise nicht unterstützt wird. In solchen Fällen kann auf PowerShellGet als alternative Methode zurückgegriffen werden, um die notwendigen Module zu installieren. PowerShellGet ist ein Paketmanager für PowerShell, der die Installation von Modulen und Skripten aus dem PowerShell Gallery ermöglicht.

Sollten während des Installationsprozesses Probleme mit der Internetverbindung auftreten, etwa Fehlermeldungen, die auf Probleme mit dem Sicherheitsprotokoll hinweisen, ist eine Anpassung des Sicherheitsprotokolls erforderlich. Dies lässt sich durch Setzen des Sicherheitsprotokolls auf TLS 1.2 mit dem folgenden Befehl bewerkstelligen:

[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12

Dieser Befehl konfiguriert die PowerShell-Sitzung so, dass eine sichere Internetverbindung unter Verwendung des TLS 1.2 Protokolls aufgebaut wird, was häufig notwendig ist, um moderne Sicherheitsanforderungen zu erfüllen und Verbindungsprobleme zu vermeiden.

Installation von DBASQLWATCH

Falls die Identifizierung des SQL-Servernamens noch nicht erfolgt ist, ist es unerlässlich, diesen Schritt nun vorzunehmen. Die korrekte Identifikation des Servernamens bildet die Grundlage für die weiteren Schritte, insbesondere wenn es um die Installation von SQLWATCH mithilfe der dbatools geht. Der SQL-Servername lässt sich einfach mit dem folgenden SQL-Befehl abfragen:

Select @@ServerName

Nachdem diese Information ermittelt wurde, kann sie für die Installation von SQLWATCH auf einem oder mehreren SQL-Server-Instanzen verwendet werden. Der entsprechende PowerShell-Befehl für die Installation lautet:

Install-DbaSqlWatch -SqlInstance Server1, Server2, Server3 -Database SQLWATCH

Hierbei wird Install-DbaSqlWatch genutzt, um SQLWATCH auf den angegebenen Serverinstanzen (Server1, Server2, Server3) mit der Datenbank SQLWATCH zu installieren. Dieser Vorgang ermöglicht eine flexible und effiziente Überwachung der Leistung über mehrere Server hinweg.

Probleme mit der Zertifizierungsstelle

Im Kontext der Installation können Probleme bezüglich der Zertifizierungsstelle auftreten, die sich in Form von Fehlermeldungen manifestieren:

Diese Probleme lässt sich auch anders reprodzieren, wenn während des Anmeldevorgangs die Option „Encrypt connection“ aktiviert ist, was auf eine verschlüsselte Verbindung hindeutet. Näheres dazu auch unter folgenden Artikel.

Sollte keine Installation eines Zertifikats erwünscht sein, was besonders in Entwicklungsumgebungen der Fall sein kann, bietet sich eine alternative Lösung über PowerShell an, um eine sichere Verbindung ohne Zertifikat zu ermöglichen:

Set-DbatoolsInsecureConnection -SessionOnly

Dieser Befehl konfiguriert die aktuelle PowerShell-Sitzung so, dass eine Verbindung ohne die strenge Überprüfung durch eine Zertifizierungsstelle möglich ist. Es ist jedoch zu beachten, dass diese Lösung nur temporär für die Dauer der Sitzung wirksam ist und vor allem in sicheren und kontrollierten Umgebungen eingesetzt werden sollte, um Sicherheitsrisiken zu minimieren.

Installation von Grafana (unter Ubuntu)

Falls das Power BI Dashboard von SQLWATCH nicht Ihren Vorstellungen entspricht, bietet sich die Installation von Grafana als eine ausgezeichnete Alternative an. Diese kann entweder direkt auf dem SQL-Server oder auf einem dedizierten Server für Grafana erfolgen. Aus persönlicher Erfahrung empfehle ich die Nutzung eines Linux-Systems, beispielsweise Ubuntu LTS, für den Grafana-Server. Der Vorteil eines separaten Servers wird besonders deutlich, sobald man die vielfältigen Einsatzmöglichkeiten von Grafana entdeckt, die weit über das Monitoring eines einzelnen SQL-Servers hinausgehen.

Die Installation von Grafana auf einem Ubuntu-System erfolgt in mehreren Schritten, die jeweils wichtige Aspekte der Systemvorbereitung und der eigentlichen Installation abdecken. Im Folgenden werden diese Schritte detailliert erklärt, einschließlich der Bedeutung jedes Befehls.

Schritt 1: Aktualisieren des Systems

Der Befehl sudo apt update -y && sudo apt upgrade -y dient dazu, die Liste der verfügbaren Pakete und deren Versionen von den Ubuntu-Repositories zu aktualisieren (apt update) und anschließend alle installierten Pakete auf die neuesten Versionen zu aktualisieren (apt upgrade). Die Option -y bestätigt automatisch alle Aufforderungen, die während des Prozesses auftreten könnten.

sudo apt update -y && sudo apt upgrade -y
Update system packages

Schritt 2: erforderliche Pakete installieren

Mit sudo apt install -y apt-transport-https software-properties-common wget werden Pakete installiert, die für die Installation von Grafana notwendig sind. apt-transport-https ermöglicht die Übertragung von Paketen über das HTTPS-Protokoll, software-properties-common bietet Skripte zur Verwaltung der Softwarequellen, und wget ist ein Programm zum Herunterladen von Dateien aus dem Internet.

sudo apt install -y apt-transport-https software-properties-common wget
Install required packages

Schritt 3: Grafana GPG-Schlüssel hinzufügen

Der Befehl sudo mkdir -p /etc/apt/keyrings/ erstellt einen Ordner für die Speicherung von Schlüsselringen, falls dieser noch nicht existiert. Der nachfolgende Befehl lädt den Grafana GPG-Schlüssel herunter und speichert ihn in diesem Verzeichnis, um die Authentizität der Grafana-Pakete zu gewährleisten. Das | gpg --dearmor-Teil des Befehls konvertiert den heruntergeladenen Schlüssel in ein Format, das von APT verwendet werden kann.

sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
Add Grafana GPG key

Schritt 4: Grafana APT-Repository hinzufügen

Durch das Hinzufügen des Grafana-Repositories mit echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list wird sichergestellt, dass Ihr System die Pakete von Grafana direkt beziehen kann. Dieser Befehl fügt die Repository-Adresse den APT-Quellen hinzu und signiert sie mit dem zuvor hinzugefügten GPG-Schlüssel.

echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Nach Hinzufügen des Repositories, muss man den apt aktualisieren:

sudo apt update
Add Grafana APT repository

Schritt 5: Installation von Grafana

sudo apt install grafana installiert Grafana mithilfe des APT-Paketmanagementsystems. Dieser Befehl sucht im zuvor hinzugefügten Repository nach dem Grafana-Paket und installiert es auf Ihrem System.

sudo apt install grafana
Install Grafana

Schritt 6: Grafana-Dienst starten

sudo grafana-server -v

Nach der Installation von Grafana müssen Sie den Grafana-Server mit sudo systemctl start grafana-server starten. Der Befehl sudo systemctl enable grafana-server sorgt dafür, dass Grafana automatisch bei jedem Systemstart gestartet wird.

sudo systemctl start grafana-server
sudo systemctl enable grafana-server
Start Grafana service

Schritt 7: Grafana Dienststatus überprüfen

sudo systemctl status grafana-server überprüft den Status des Grafana-Dienstes. Dieser Befehl gibt Informationen darüber aus, ob der Dienst aktiv läuft und ob es beim Starten zu Problemen kam.

sudo systemctl status grafana-server

If the Grafana service was started successfully, you should see a sign that it is active and running.

Check Grafana service status

Schritt 8: Firewall-Port öffnen

Die Befehle sudo ufw enable, sudo ufw allow ssh und sudo ufw allow 3000/tcp konfigurieren die Uncomplicated Firewall (UFW) von Ubuntu, um den SSH-Zugang zu erlauben und den TCP-Port 3000 für Grafana zu öffnen. Dies ist notwendig, damit externe Benutzer auf die Grafana-Webinterface zugreifen können.

sudo ufw enable 
sudo ufw allow ssh
sudo ufw allow 3000/tcp
Enable firewall and open port

Schritt 9: Zugriff auf die Webseite von Grafana

Um auf das Grafana-Webinterface zuzugreifen, müssen Sie die IP-Adresse Ihres Servers gefolgt von Port 3000 in einem Webbrowser eingeben (http://your_server_IP:3000). Beim ersten Zugriff werden Sie aufgefordert, sich mit den Standardanmeldedaten (Benutzername: admin, Passwort: admin) anzumelden.

Konfiguration des Grafana Dashboards

Anlegen eines SQL-Users

Um eine effektive Überwachung und Visualisierung der Daten Ihrer SQLWATCH-Datenbank mit Grafana zu gewährleisten, ist es ein kritischer vorbereitender Schritt, auf der SQL-Server-Seite einen spezifischen Benutzeraccount anzulegen. Dieser Benutzer sollte ausschließlich Lesezugriff auf die SQLWATCH-Datenbank besitzen. Der Grund für diese Maßnahme liegt in der Notwendigkeit, die Sicherheit und Integrität der Datenbank zu wahren, während man gleichzeitig Grafana den notwendigen Zugang zu den Überwachungsdaten gewährt.

DECLARE @Username NVARCHAR(50) = 'NeuerBenutzer';
DECLARE @Password NVARCHAR(50) = 'StarkesPasswort123!';
DECLARE @Database NVARCHAR(50) = 'ZielDatenbank';
DECLARE @SQL NVARCHAR(MAX);

-- Anlegen eines Logins für den SQL Server
SET @SQL = 'CREATE LOGIN ' + QUOTENAME(@Username) + ' WITH PASSWORD = ''' + REPLACE(@Password, '''', '''''') + ''', CHECK_EXPIRATION = OFF, CHECK_POLICY = OFF;';
EXEC sp_executesql @SQL;

-- Wechsel zur Ziel-Datenbank und Anlegen eines Benutzers
SET @SQL = 'USE ' + QUOTENAME(@Database) + '; CREATE USER ' + QUOTENAME(@Username) + ' FOR LOGIN ' + QUOTENAME(@Username) + '; ALTER ROLE db_datareader ADD MEMBER ' + QUOTENAME(@Username) + ';';
EXEC sp_executesql @SQL;

Abschließend ist es wichtig, die Funktionsfähigkeit des neu angelegten Benutzeraccounts zu testen, bevor Sie mit der Konfiguration des Grafana-Dashboards fortfahren. Dies kann durch eine einfache Abfrage in der SQLWATCH-Datenbank unter Verwendung der Anmeldeinformationen des neuen Benutzers erfolgen. Ein erfolgreicher Test bestätigt, dass Grafana bereit ist, eine Verbindung zur SQLWATCH-Datenbank herzustellen und die erforderlichen Daten für das Monitoring und die Visualisierung abzurufen.

Durch das sorgfältige Anlegen eines dedizierten Benutzeraccounts mit ausschließlichem Leserecht stellt man eine sichere und effiziente Datenintegration zwischen der SQLWATCH-Datenbank und Grafana sicher, was eine fundierte Basis für die Überwachung und Analyse der SQL Server-Leistung bildet.

Einbinden des Dashboards

Nachdem ein spezieller SQL-Benutzer mit Leserechten für die SQLWATCH-Datenbank erfolgreich angelegt wurde, ist der nächste wesentliche Schritt die Konfiguration der Datenquelle (Data Source) in Grafana, um die Verbindung zum SQL-Server herzustellen. Diese Konfiguration ist entscheidend, da sie Grafana ermöglicht, Daten aus der SQLWATCH-Datenbank zu beziehen und für das Monitoring und die Visualisierung zu nutzen.

Beginnen Sie diesen Prozess, indem Sie sich bei Ihrem Grafana-Server anmelden. Navigieren Sie zum Grafana-Dashboard und suchen Sie die Option für die Datenquellenverwaltung, üblicherweise zu finden unter dem Einstellungsmenü als „Data Sources“. Wählen Sie hier die Option „Add data source“ aus. Unter den verfügbaren Typen von Datenquellen wählen Sie „Microsoft SQL Server“ als Typ für die neue Datenquelle. Diese Auswahl ist wichtig, da sie Grafana anweist, eine Verbindung zum SQL-Server herzustellen, auf dem Ihre SQLWATCH-Datenbank gehostet wird.

Bei der Konfiguration der SQL-Server-Datenquelle müssen Sie spezifische Informationen angeben, die eine erfolgreiche Verbindung ermöglichen. Dazu gehören der Servername (oder die IP-Adresse) und der Port des SQL-Servers, die Datenbankname (in diesem Fall „SQLWATCH“), sowie die Anmeldeinformationen des Benutzers, den Sie zuvor speziell für den Lesezugriff angelegt haben. Stellen Sie sicher, dass Sie die Option „Encrypt connection“ aktivieren, falls Ihr SQL-Server eine verschlüsselte Verbindung erfordert, und konfigurieren Sie weitere Einstellungen nach Bedarf, um die Sicherheit und Leistung der Verbindung zu optimieren.

Nachdem die Datenquelle konfiguriert wurde, ist der nächste Schritt das Hochladen und Einrichten der Grafana-Dashboards, die speziell für die Visualisierung der Daten aus der SQLWATCH-Datenbank entwickelt wurden. Grafana ermöglicht das Importieren von Dashboards über die Dashboard-Verwaltungsoption, die Sie im Grafana-UI finden. Für SQLWATCH sind möglicherweise vordefinierte Dashboards verfügbar, die Sie direkt von der offiziellen SQLWATCH-Website oder aus der Grafana Dashboard-Bibliothek herunterladen können. Beim Import eines Dashboards in Grafana müssen Sie die zuvor konfigurierte Datenquelle auswählen, damit das Dashboard Daten aus Ihrer SQLWATCH-Datenbank abrufen kann.

Details dazu hier.

Links: