Was ist Azure-Database-Monitoring?

Unter Azure-Database-Monitoring versteht man das Monitoring von Datenbanken, die in Azure-Cloud-Umgebungen bereitgestellt werden. Dazu gehören sowohl Cloud-native Datenbanken wie Azure Cosmos DB, als auch vollständig von Azure Cloud verwaltete Datenbank-Instanzen. Das Azure-Database-Monitoring ist ein Bereich des allgemeinen Cloud-Database-Monitorings. Es umfasst sämtliche Datenbanken, die in einer Cloud laufen. Da das Cloud-Monitoring auch die Überwachung von Cloud-Datenbanken beinhaltet, schließt es auch das Cloud-Database-Monitoring mit ein.

Azure-Datenbankdienste haben verschiedene Anwendungsbereiche und unterstützen mehrere Arten von Datenbanken. Neben der Azure-eigenen Cosmos DB ist es möglich, Microsoft SQL Server, MySQL, PostgreSQL und MariaDB zu hosten. Da es sich hier allein um SQL-Datenbanken handelt, gibt es auch keine wesentlichen Unterschiede beim Monitoring dieser Datenbanken. Dies vereinfacht das Azure-Database-Monitoring etwas. Bevor wir jedoch auf die tatsächlichen Unterschiede zwischen den verschiedenen Azure-Datenbanken in Bezug auf ihr Monitoring eingehen, schauen wir uns zunächst an, wie man Azure-Datenbanken überhaupt überwachen kann.

cloud

Wie führt man ein Azure-Database-Monitoring durch?

Die erste Anlaufstelle für das Monitoring von Azure-Datenbanken ist Azure Monitor. Dabei handelt es sich um das wichtigste integrierte Monitoring-Tool für Azure-Clouds. Es fasst die Daten aus allen Diensten und Ressourcen der Azure-Cloud, einschließlich Datenbanken, zusammen. Ferner bietet es anpassbare Dashboards, die es Admins ermöglichen, einen unmittelbaren Überblick über die Leistung ihrer Datenbanken zu erhalten. Für die Fehlersuche und tiefere Einblicke steht Azure Database Insights für das Azure-SQL-Database-Monitoring zur Verfügung und bietet maßgeschneiderte Leistungseinblicke, Leistungsempfehlungen und proaktive Monitoring-Funktionen. Es unterstützt alle Azure SQL-Datenbanken, unabhängig davon, ob sie vollständig von Azure verwaltet werden oder nicht.

Weitere Einblicke gewinnen Sie mit den Dashboards in Azure SQL Analytics. Dabei handelt es sich um eine cloudbasierte Monitoring-Lösung, die in Azure Monitor integriert ist und sich insbesondere für das Performance-Monitoring sämtlicher Azure-SQL-Datenbanken über mehrere Abonnements hinweg in einer einzigen Ansicht eignet.

Sowohl mit einem dieser zusätzlichen Dashboards als auch mit Azure Monitor ist es möglich, benutzerdefinierte Monitoring-Regeln und Warnmeldungen einzurichten. Diese sind nicht so anpassbar wie bei einem Monitoring-Tool eines Drittanbieters, aber für den Anfang sind sie ausreichend.

Wenn man mehr benötigt, und das wird höchstwahrscheinlich bei mittleren bis großen Unternehmen der Fall sein, ist eine spezielle Monitoring-Lösung erforderlich, die über integrierte Azure-Database-Monitoring-Funktionen verfügt. Diese Lösungen, die sowohl das Azure SQL-Monitoring als auch das Azure NoSQL-Monitoring unterstützen, bieten Cloud-Admins eine umfassendere und anpassbare Hilfe, um die Leistung ihrer Datenbanken zu verstehen und Störungen zu vermeiden. Die Nutzung solcher Lösungen ist über die Azure REST API oder durch die Implementierung von benutzerdefinierten Monitoring-Agenten möglich. Vor allem letztere können viel Spielraum für Anpassungen sowie eine Reihe von zugänglichen Metriken bieten und sind daher die geeignetere Lösung für viele Extremfälle, wie etwa Monitoring-Umgebungen, die entweder riesig sind und eine große Anzahl von Hardwarekomponenten oder Diensten überwachen müssen, oder wenn Sie benutzerdefinierte Anforderungen haben, die keines der verfügbaren Azure-Database-Monitoring-Tools erfüllt.

Azure-SQL-Database-Monitoring

Unabhängig davon, ob Sie Azure-Datenbank für MySQL oder Azure-Datenbank für PostgreSQL verwenden, basiert die Azure-SQL-Überwachung auf einem ähnlichen Satz von Metriken. Diese lassen sich grob in Compute-, Speicher- und Request-Metriken unterteilen.

Zur ersten Kategorie gehören die klassische CPU-Nutzung und die Speichernutzung, aber nicht nur diese. Azure-SQL-Monitoring verwendet zwei Modelle zur Berechnung der Ressourcennutzung und der damit verbundenen Kosten. DTU (database transaction units) fasst die Rechen- und Speichernutzung von Azure-Datenbanken in DTUs zusammen. Dies wird zu einer Maßeinheit, die Ihnen, je nach Service-Tier, Gebühren und Limits auferlegt, sobald die Ressourcennutzung hoch genug ist. Das andere Modell sind vCores (virtuelle Kerne), zur Berechnung der Rechenkosten Ihrer Datenbanken, mit Unterschieden zwischen provisionierten und serverlosen Datenbanken.

Daher ist es wichtig, die Computing-Metriken im Auge zu behalten, um zu verfolgen, wie Sie die Azure-Cloud-Ressourcen ausschöpfen, ob eine andere Nutzungsstufe erforderlich sein könnte, und um die Kosten zu kontrollieren.  Das vCores-Modell stützt sich auf die typischen Computing-Metriken in Bezug auf Speicher- und CPU-Nutzung, während das DTU-Modell spezifische Metriken wie DTU-Prozentsatz und DTU-Limit hinzufügt, die Ihnen mitteilen, welcher Prozentsatz der DTUs im Verhältnis zum zulässigen Maximum genutzt wird.

Datenbanken sind nicht nur Rechenlasten, ihr genutzter Speicherplatz ist ein wichtiger Aspekt ihres effizienten Betriebs. Daher umfasst das Monitoring von Azure-SQL die Erfassung von Metriken in Bezug auf den verfügbaren Gesamtspeicher, den genutzten Speicherplatz und den prozentualen Anteil des XTP-Speichers (prozentualer Anteil des Speichers, der für die Verarbeitung von In-Memory-Transaktionen genutzt wird).

Workers und Sessions sind ebenfalls wichtige Metriken beim Azure-SQL-Database-Monitoring. Workers umfassen die Anfragen an eine Datenbank, sowohl Abfragen, Anmeldungen als auch Abmeldungen. Sessions sind die Gesamtzahl der aktiven Verbindungen. Beide Metriken sind je nach Service-Tier Ihres Azure-Cloud-Abonnements begrenzt und helfen dabei, die Kosten zu berechnen und zu verfolgen, wie gut die Azure-Datenbankdienste funktionieren.

Azure-NoSQL-Database-Monitoring

Wenn wir zu Azure NoSQL-Datenbanken wechseln, sprechen wir von Azure-Cosmos-DB. Ein Cloud-nativer Datenbankdienst, der mit vielen SQL-Datenbanken kompatibel ist und gleichzeitig auch Key-Value-, Wide-List-Store- und Graph-Datenbanken unterstützt. Bei der Verwendung von Cosmos DB als SQL-Datenbank gelten also die oben genannten Metriken, mit Ausnahme der Nutzungsmodelle. Azure Cosmos DB verwendet RU (Request Units) als Metrik, um die verbrauchten Ressourcen für jede auf der Datenbank durchgeführte Operation zu messen. RU umfasst alle Kosten, einschließlich Rechenleistung, Arbeitsspeicher, Speicherung und Datenübertragung.

Azure Cosmos DB skaliert horizontal, in sogenannten Partitionen. Das Monitoring ihrer relativen Metriken ist wichtig, um zu verstehen, wie die Datenbank skaliert. Zu diesen Metriken gehören Key Distribution, Range Distribution, Partition Key Distribution und Data Distribution. Mit diesen Informationen können Cloud-Teams überwachen, wie die Cosmos-DB auf die Partitionen aufgeteilt ist und wie sie performt.

Abgesehen von der Beachtung dieser Besonderheiten von Azure Cosmos DB gibt es keine großen Unterschiede bei der Überwachung im Vergleich zu anderen Azure-SQL-Datenbanken.

Best Practices für das Azure-Database-Monitoring

Wie bei jeder Aufgabe in der IT sind auch bei dem Azure-Database-Monitoring einige Best Practices zu beachten. Diese gehen über das Monitoring von Metriken hinaus. Azure-Monitor und jede Monitoring-Lösung eines Drittanbieters kann Ihnen dabei helfen, einen gewünschten Schwellwert festzulegen und Sie warnen, wenn dieser fast erreicht oder überschritten ist. Dies ist der Schlüssel zu einem proaktiven Monitoring-Setup, mit dem Sie bei Bedarf sofort reagieren können.

Apropos Schwellwerte: Es ist eine gute Praxis, die aktiven und fehlgeschlagenen Verbindungen zu Ihren Azure-Datenbanken zu überwachen und eine Warnung einzurichten, wenn die aktiven Verbindungen 80 % ihres Gesamtlimits überschreiten oder in den letzten 30 Minuten mehr als 10 ausgefallen sind. Dies liegt daran, dass zu viele aktive Verbindungen, sofern nicht gewünscht, je nach Arbeitslast der spezifischen Datenbank ein Zeichen für eine überlastete Datenbank sein können. Zudem ist eine zu hohe Ausfallrate ein Hinweis darauf, dass man die Datenbank-Logs überprüfen sollte, um den Grund für diesen Zustand herauszufinden.

Wenn bezüglich der Verbindungen alles in Ordnung ist, sollten Sie die Latenz und die Netzwerkauslastung aller Ihrer Azure-Datenbankdienste überwachen. Diese geben Ihnen auch Aufschluss über die tatsächliche Leistung der Dienste und darüber, ob sich einer von ihnen den Grenzen der Tier-Nutzung nähert.

Sobald man dies alles routinemäßig überprüft, sollte Ihre Azure-Data-Monitoring-Lösung die typischen CPU-Speicher- und I/O--Prozentsätze aufnehmen. Wenn diese Werte über einen längeren Zeitraum sehr hoch sind, können sie auf eine erhöhte Arbeitslast bis hin zu einer Unterbrechung hindeuten. 

Das Monitoring dieser Schwellwerte ist sinnvoll, um bei Überschreitung zumindest eine Warnmeldung auszulösen. Die meisten Azure-Database-Monitoring-Tools können dies tun, aber nicht alle mit der gewünschten Granularität. Checkmk kann die meisten Azure-Database-Workloads abdecken und bietet eine fortgeschrittene Alternative zu den einfachen Azure-Monitor-Dashboards. Azure-Datenbanken sind der wichtigste Teil von Cloud-Infrastrukturen und verdienen die Überwachung mit einem hochmodernen Produkt und Checkmk ist bereit diese Rolle zu übernehmen.