Open Source im professionellen Einsatz

© sig-plutonik, photocase.com

Datenbanküberwachung mit dem MySQL Monitoring and Advisory Service

Gesundheitscheck

In Datenbankanwendungen gestalten sich Überwachung und Fehlersuche oft nicht gerade trivial. Lässt sich der globale Status noch leicht ermitteln, erfordert die Ursachenforschung im Problemfall Einblicke ins Innenleben. MySQL Enterprise will hier mit einem eigenen Monitoring-Tool helfen.

Läuft, läuft nicht - das ist meist noch einfach zu entscheiden und alle gängigen Programme fürs System-Monitoring bringen für das verbreitete MySQL auch fertige Agenten mit, die das leisten. Sie überwachen in der Regel die Datenbankprozesse oder Logs und verstehen sich manchmal auch auf simple funktionale Tests. Das Nagios-Plugin-Repository beispielsweise kennt ein knappes Dutzend entsprechender Helfer [1].

Ein dramatischer Performance-Einbruch oder Deadlocks können für den Anwender aber bedeuten, dass seine Applikation nicht mehr verfügbar ist, obwohl ein einfacher Prozess-Monitor das Gegenteil behauptet. Wer diesen Widerspruch auflösen will, muss die Überwachung auf die Qualität ausweiten, mit der die Datenbank ihre Dienste erbringt.

Entsprechende Quality-of-Service-Kennzahlen (QoS) finden sich daher auch immer öfter in Service Level Agreements (SLA). Ob die Datenbank sie einhält und woran es liegt, sollte es nicht so sein, lässt sich nur entscheiden, wenn man interne Informationen heranzieht.

DB-Röntgen auf der Kommandozeile

Dafür gibt es eine ganze Reihe mehr oder weniger umfangreicher Diagnose-Tools. So wissen etwa »mtop« [2] und »mytop« [3] schon einiges über das MySQL-Innenleben zu berichten: Die Anzahl aktiver Benutzer und Queries, die Trefferhäufigkeit im Cache, eine Übersicht über lange laufende Abfragen und aktuell geöffnete Tabellen oder Hinweise auf unterdimensionierte interne Puffer liefern beide (Abbildung 1).

Abbildung 1: Das schlichte Kommandozeilentool »mytop« liefert bereits eine brauchbare Hilfestellung bei einfachen Fragen.

Abbildung 1: Das schlichte Kommandozeilentool »mytop« liefert bereits eine brauchbare Hilfestellung bei einfachen Fragen.

Wesentlich weiter geht »innotop« [4], das fast ein Dutzend Modi kennt, die jeweils auf einer Bildschirmseite auch Aussagen über Deadlocks, wartende Transaktionen, die Performance der I/O-Operationen oder den Status einer Replikation präsentieren. Alle diese Ansichten sind konfigurierbar. Auch der SQL-Befehlstext einzelner Abfragen ist einsehbar. Das Tool inspiziert auf Wunsch sogar mehrere Datenbanken gleichzeitig und kann im Bedarfsfall direkt suspekte Sessions killen.

Bleiben bei »innotop« (Abbildung 2) bezüglich der Informationsfülle auch nicht mehr allzu viele Wünsche offen, so beschränkt sich das Tool dennoch erstens auf den namensgebenden Tabellentyp Inno DB, liefert zweitens nur eine Momentaufnahme ohne die Möglichkeit, die Entwicklung eines Parameters in der Zeit effektiv zu verfolgen, und kann drittens auch nur Zahlenkolonnen darbieten, denen es nicht selten an Anschaulichkeit mangelt. Auch gibt es viertens keinen Mechanismus, der den Admin bei Überschreitung bestimmter Schwellenwerte alarmieren würde oder ihm - fünftens - raten könnte, was in diesem oder jenem Fall zu tun sei.

Abbildung 2: Innotop hält in elf Ansichten eine Fülle an Informationen aus dem Innenleben der Datenbank bereit. Im Bild der Buffer-Modus.

Abbildung 2: Innotop hält in elf Ansichten eine Fülle an Informationen aus dem Innenleben der Datenbank bereit. Im Bild der Buffer-Modus.

Schrankenlos

Alle diese Beschränkungen will der neue Monitoring and Advisory Service [5] der MySQL-Bezahlvariante Enterprise DB überwinden. Das Werkzeug führte MySQL im vergangenen Jahr ein, eben erlebte es mit der Spring Edition 2007 eine Neuauflage. Dem Dienst arbeiten Agents zu, die über eine beliebige Anzahl MySQL-Server verteilt sein dürfen. Ihre Daten bereitet eine zentrale Komponente auf und stellt sie anschließend in einem Web-GUI dar, dem so genannten Dashboard.

In der Einstiegsansicht (Abbildung 3) prangt auf der rechten Seite eine als Heat Chart bezeichnete Grafik, die die wichtigsten Parameter in einer Art Ampeldarstellung zusammenfasst. Überwacht der Service mehrere Server, bilden sie die Zeilen einer Tabelle, deren Spalten farbkodierte Statusinformationen enthalten. Das ergibt einen schnell erfassbaren Überblick über den Allgemeinzustand der Datenbank. Daneben liefern die vier Charts auf der linken Seite einen ersten Überblick über wesentliche Parameter: Trefferverhältnis im Cache, CPU-Auslastung, Anzahl aktiver Verbindungen und Datenbankaktivität.

Abbildung 3: Auf der rechten Seite des Dashboard findet sich das Wichtigste im Überblick. Das so genannte Heat Chart weist hier auf drei kritische Alarme und eine Warnung hin. Ein Klick auf eine Spalte führt zu den zugehörigen Details.

Abbildung 3: Auf der rechten Seite des Dashboard findet sich das Wichtigste im Überblick. Das so genannte Heat Chart weist hier auf drei kritische Alarme und eine Warnung hin. Ein Klick auf eine Spalte führt zu den zugehörigen Details.

Noch mehr Grafiken fördert der Tab »Graphs« zutage (Abbildung 4). Hier lagern, verborgen hinter aufklappbaren Stichpunkten, weitere Zeitreihendarstellungen. Was der Anwender genau zu sehen bekommt, richtet sich allerdings nach dem Geldbeutel, sprich dem vereinbarten Subscription Level (Tabelle 1). Die Stufe Silver ist für netto 1600 Euro pro Server und Jahr erhältlich, Gold kostet 2400 Euro und für Platin muss man rund 4000 Euro berappen.

Tabelle 1: Graphen
pro Subscription Level

 

Grafik

Metrik

Level

Cache Hit Ratios

Innodb Query Cache/Key Cache

Silver

CPU Utilization

Kernel/User, Wait I/O

Silver

RAM Usage

Total/Free/Used RAM

Silver

Virtual Memory Usage

Total/Free/Used VM

Silver

Connections

Current/Active/Aborted

Silver

Database Activity

Selects/Inserts/Updates/Deletes

Silver

KBytes In/Out

Received/Sent/Total

Silver

Replication Delay

Slave Running/Seconds Slave Behind Master

Gold

Thread Cache

New Connections/Free MB/Lowmem

Gold

InnoDB Buffer Pool

Total/Used/Free/Modified

Gold

Temporary Tables

Memory Temp Tables/ Disk Temp Tables

Gold

Row Accesses

Avg Rows Per Query/Rows via Indexes

Platinum

Sort Activity

Merge Passes

Platinum

Query Cache Efficiency

Hits/Inserts

Platinum

Table Locks

Waited/Immediate

Platinum

Ein weiterer Reiter des Dashboard mit dem Titel »Advisors« (Abbildung 5) führt zu einem Abschnitt des GUI, der es gestattet, Regeln zu hinterlegen. Deren Einhaltung überwacht dann der MySQL-Service. Das können einfache Schwellenwerte sein oder auch Formeln, die verschiedene Parameter zueinander ins Verhältnis setzen und daraus bestimmte Grenzwerte berechnen.

Abbildung 4: Der Reiter »Graphs« bringt weitere Zeitreihendarstellungen in übersichtlicher Darstellung zum Vorschein. Den Umfang der angebotenen Charts bestimmt allerdings der vereinbarte Subscription Level.

Abbildung 4: Der Reiter »Graphs« bringt weitere Zeitreihendarstellungen in übersichtlicher Darstellung zum Vorschein. Den Umfang der angebotenen Charts bestimmt allerdings der vereinbarte Subscription Level.

Abbildung 5: In dem GUI lassen sich Regeln definieren, die der Monitoring-Dienst auswertet und überwacht. Die Definition ist auch später noch jederzeit aufrufbar.

Abbildung 5: In dem GUI lassen sich Regeln definieren, die der Monitoring-Dienst auswertet und überwacht. Die Definition ist auch später noch jederzeit aufrufbar.

Einen bereits recht umfangreichen Regelsatz liefert der Hersteller gleich mit, er reicht von der RAM-Benutzung oder CPU-Auslastung bis zur Trefferquote im Query-Cache oder der Häufigkeit von Table Scans. Zusätzlich kann der Anwender eigene definieren. Jede Regel lässt sich mit Schranken für die Alarmstufen »Critical«, »Warning« und »Info Alert« versehen, die entsprechende Benachrichtigungen - auf Wunsch auch per E-Mail - und die Anzeige im oben bereits beschriebenen Heat Chart steuern.

Zu jeder Regel kann man jederzeit die zugehörige Definition einblenden, außerdem hält das Tool auch Handlungsvorschläge bei einer Grenzwertüberschreitung parat. Die fallen allerdings häufig sehr pauschal aus. Bei einer CPU-Überlastung erhält der Anwender beispielsweise den Rat, er möge mit geeigneten Tools nach der Ursache forschen. Aha.

Dennoch ist das Prinzip der regelbasierten Überwachung sehr leistungsfähig und anpassbar - das nötige MySQL-Know-how freilich vorausgesetzt. Aussagekräftige und an Ereignisse gekoppelte Handlungsempfehlungen leisten ebenfalls Hilfe, können sie doch im Krisenfall für den sicheren Umgang mit der Ausnahmesituation sorgen.

Auch die eingegangenen Events sowie die Logs des MySQL-Dienstes sind über einige weitere Dashboard-Reiter erreichbar. Außerdem ist das Systems über die Seite »Settings« des Dashboard weitgehend konfigurierbar.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

Ähnliche Artikel

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook