View a markdown version of this page

Überwachung von Aurora DSQL-Clustern mit Aurora DSQL Database Insights - Amazon Aurora DSQL

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Überwachung von Aurora DSQL-Clustern mit Aurora DSQL Database Insights

Aurora DSQL Database Insights bietet Zugriff auf sekundengenaue Stichprobendaten für jede aktive Sitzung auf Ihrem Cluster, die vom DSQL Active Session History (DASH) -Sampler erfasst werden, der den Wartestatus und die normalisierte SQL-Anweisung jeder Sitzung aufzeichnet. Per-minute Die aggregierten Ergebnisse von DASH werden als (OTel) -Metriken veröffentlicht. CloudWatch OpenTelemetry Verwenden Sie diese Daten, um Ihre Datenbanklast zu verstehen, die Abfragen zu ermitteln, die die meisten Ressourcen verbrauchen, und Leistungsprobleme zu diagnostizieren.

Sie müssen DASH nicht einrichten. Es wird automatisch für jeden Aurora-DSQL-Cluster aktiviert, und aggregierte Daten pro Minute sind über Amazon CloudWatch Database Insights und über Prometheus Query Language (PromQL) -Abfragen verfügbar, die ohne zusätzliche Kosten anhand CloudWatch von OTel-Metriken ausgeführt werden.

Was ist DASH?

Eine aktive Sitzung stellt eine einzelne Verbindung zu Ihrem Cluster dar, für die eine Transaktion geöffnet ist. Zu jedem Zeitpunkt befindet sich jede aktive Sitzung in einem von drei Zuständen:

  • CPU verwenden

  • Es wird auf den Abschluss eines externen Vorgangs gewartet, z. B. ein Speicherlesevorgang oder eine Commit-Bestätigung

  • Die Transaktion ist inaktiv und wartet auf die nächste Anweisung Ihrer Anwendung in einer geöffneten Transaktion

DASH verfolgt nur Sitzungen, für die eine offene Transaktion vorliegt. DASH erfasst diese Aktivität, indem es alle aktiven Sitzungen in Ihrem Cluster einmal pro Sekunde abtastet. Jede Stichprobe zeichnet zwei Dinge auf:

  • Das Warteereignis — der Status, in dem sich die Sitzung zum Zeitpunkt der Probenahme befand. Die DASH-Warteereignisse vollständige Liste finden Sie unter.

  • Die SQL-Anweisung — die ersten 256 Zeichen der SQL, in der die Sitzung ausgeführt wurde. Dies reicht aus, um die meisten Abfragen zu identifizieren.

DASH aggregiert diese sekundengenauen Stichproben und veröffentlicht sie CloudWatch einmal pro Minute, aufgeschlüsselt nach Wait-Ereignis und SQL-Anweisung. Das Ergebnis ist eine einzelne Zeitreihenmetrikdb.active_sessions.avg, die die durchschnittliche Anzahl der aktiven Sitzungen in jedem Probenzeitraum aufzeichnet. Dieser Wert wird auch als Average Active Sessions (AAS) bezeichnet.

AAS ist das grundlegende Signal für die Aurora DSQL-Leistungsanalyse. Die Aufschlüsselung der Warteereignisse zeigt, wofür Ihre Sitzungen Zeit aufgewendet haben, und nicht nur, wie stark der Cluster ausgelastet ist. Die Attribute der SQL-Aufschlüsselung werden in einzelne Abfragen geladen.

Tipp

Aurora DSQL skaliert die CPU elastisch, sodass das nützlichste Diagnosesignal die Form des Warteprofils (die proportionale Verteilung der Sitzungszeit auf die Warteereignisse) ist, und nicht das AAS gegen eine feste vCPU-Obergrenze. Vergleichen Sie diese Form mit der Basislinie, die Sie während des normalen Betriebs beobachten. Eine Änderung dieser Proportionen deutet auf eine Veränderung der Arbeitslast oder des Systemverhaltens hin.

DASH-Metriken und Warteereignisse

DASH macht eine einzelne Metrik verfügbar, deren Dimensionen es Ihnen ermöglichen, die Datenbanklast nach Warteereignissen und SQL-Anweisungen zu unterteilen. In der folgenden Tabelle wird die DASH-Metrik beschrieben.

Metrik Einheit Description
db.active_sessions.avg Anzahl Die durchschnittliche Anzahl aktiver Sitzungen auf dem Cluster während des Probenzeitraums (AAS). Jede aktive Sitzung wird entweder auf der CPU oder in einem benannten Wartestatus ausgeführt.

Die Metrik hat die folgenden Dimensionen (Labels), anhand derer Sie die Daten gruppieren und filtern.

Dimension Description
db.wait.class Die umfassendere Klassifizierung von Wait-Ereignissen zur Identifizierung des allgemeinen Ressourcentyps, der zur Datenbanklast beiträgt. class:oncpuBedeutet beispielsweise, dass die Anweisung aktiv auf der CPU ausgeführt wird und class:io dass die Anweisung auf den Abschluss eines input/output Vorgangs wartet.
db.wait.event Der Wartestatus, in dem sich die gesampelten Sitzungen befanden. Die DASH-Warteereignisse vollständige Liste der Werte finden Sie unter.
db.session.state Der Sitzungsstatus — active (Ausführung einer Anweisung) oder idle in transaction (Warten auf den nächsten Befehl von der Anwendung, solange die Transaktion geöffnet bleibt).
db.query.id Der Fingerabdruck des normalisierten SQL-Textes der Anweisung, in der die Sitzungen ausgeführt wurden.
db.query.normalized_text Der normalisierte SQL-Text der Anweisung, in der die Sitzungen ausgeführt wurden. DASH entfernt Literalwerte, sodass Anweisungen gruppiert werden, die sich nur in ihren Parametern unterscheiden.
aws.auroradsql.session.role.arn Die IAM-Rolle, von der ARN ausgegangen ist, um eine Verbindung zum Aurora DSQL-Cluster herzustellen.
application.name Der Anwendungsname, den Sie in den Verbindungsparametern festgelegt haben. Sie können ihn beim Verbindungsaufbau überschreiben. DASH schließt diese Dimension nur ein, wenn Sie sie explizit festlegen.

DASH-Warteereignisse

Bei Aurora-DSQL-Sitzungen können die folgenden Warteereignisse auftreten. Die speicherbezogenen Warteereignisse —SequentialScanRead,, ScatteredBatchRead SingleReadUniqueConstraintCheck, und FkExistenceCheck — stellen die Kommunikation zwischen der Abfrageverarbeitungsebene und der Speicherebene dar und stellen die Kommunikation mit dem Commit Commit-Service dar. Diese Liste könnte sich im Laufe der Zeit erweitern, wenn Aurora DSQL neue Warteereignisse identifiziert.

Warteereignis Warte, Klasse Description
OnCpu class:oncpu Die Sitzung wartet nicht auf externe Eingaben und wird aktiv auf der CPU ausgeführt — sie analysiert, plant, bewertet Ausdrücke oder verarbeitet Ergebnisse.
ClientRead class:client Die Sitzung befindet sich innerhalb einer offenen Transaktion im Leerlauf und wartet darauf, dass die Anwendung die nächste SQL-Anweisung oder einen commit/rollback Befehl sendet. Häufige oder lange ClientRead Wartezeiten deuten oft auf übermäßige Anwendungs-Roundtrips oder auf Transaktionen hin, die Sie länger als nötig offen halten.
ClientWrite class:client Die Datenbank sendet die Ergebnisse über das Netzwerk an die Anwendung. Hoch ClientWrite kann auf große Ergebnismengen oder eine Netzwerklatenz zwischen der Anwendung und der Datenbank hinweisen.
SequentialScanRead class:io Die Sitzung liest einen zusammenhängenden Bereich von Schlüsseln aus dem Speicher. Dabei handelt es sich nicht unbedingt um einen vollständigen Tabellenscan — er deckt möglicherweise einen relativ kleinen Bereich zusammenhängender Schlüssel ab.
ScatteredBatchRead class:io Die Sitzung führt stapelweise Lesevorgänge aus dem Speicher durch und ruft mehrere nicht aufeinander folgende Schlüssel mit einem einzigen Speicheraufruf ab.
SingleRead class:io Die Sitzung liest ein einzelnes Tupel (Punktabfrage) aus dem Speicher. ScatteredBatchReadmit einer Batchgröße von 1 ersetzt dieses Ereignis weitgehend, was in aktuellen Aurora DSQL-Versionen ungewöhnlich ist.
UniqueConstraintCheck class:io Die Sitzung validiert eindeutige Schlüsseleinschränkungen, was Speicherlesevorgänge erfordert, um nach Duplikaten zu suchen. Dies gilt sowohl für eindeutige Beschränkungen für Spalten, die keine Primärschlüssel sind, als auch für Primärschlüsseleinschränkungen beim Einfügen neuer Zeilen.
FkExistenceCheck class:io In der Sitzung wird überprüft, ob eine Fremdschlüsselzeile, auf die verwiesen wird, existiert. Dazu sind Lesevorgänge erforderlich, um die Beziehung zu bestätigen.
StartTransaction class:io Die Sitzung bereitet sich auf den Beginn der verteilten Transaktion vor.
Commit class:io Die Sitzung hat einen Commit initiiert und wartet auf die Bestätigung durch den Commit-Dienst. Die Antwort ist entweder erfolgreich oder ein Abbruch (Serialisierungsfehler); beiden Ergebnissen geht eine Commit Wartezeit voraus.
PgSleep class:timeout Die Sitzung schläft, weil die Anwendung explizit aufgerufen wurde. pg_sleep() Dabei handelt es sich um eine von der Anwendung ausgelöste Wartezeit, nicht um eine von der Datenbank aufgezwungene Wartezeit.

Zugreifen auf DASH-Daten

Sie können auf drei Arten auf DASH-Daten zugreifen:

  • Amazon CloudWatch Database Insights — Eine kuratierte, codefreie Benutzeroberfläche (UI) zur Erkundung der Datenbanklast und Top-SQL. Dies ist der Ausgangspunkt für die meisten Untersuchungen.

  • PromQL — Fragen Sie die zugrunde liegende db.active_sessions.avg Metrik programmgesteuert ab, um sie in Überwachungstools von Drittanbietern zu integrieren oder interaktiv zu untersuchen.

  • Fähigkeit zur Aurora DSQL-Systemdiagnose — Ein auf künstlicher Intelligenz (KI) basierender Agent zur Gesundheitsprüfung, der DASH-Daten automatisch analysiert, die Verteilung von Warteereignissen über Zeitrahmen hinweg vergleicht und Diagnoseberichte generiert.

Alle diese Zugriffspfade werden aus demselben DASH-Datensatz gelesen.

Verwenden von CloudWatch Database Insights

Amazon CloudWatch Database Insights präsentiert DASH-Daten über ein von Aurora DSQL-specific kuratiertes Dashboard. Ihre Aurora DSQL-Cluster werden automatisch in Database Insights angezeigt. Sie benötigen keine weitere Einrichtung, außer den Cluster zu erstellen und Transaktionen darauf auszuführen.

Um DASH-Daten in Database Insights anzuzeigen

  1. Öffnen Sie die CloudWatch Konsole und wählen Sie im linken Navigationsbereich Database Insights aus.

  2. Suchen Sie in der Fleet Health-Ansicht Ihren Aurora DSQL-Cluster in der Liste der Datenbankressourcen. Alternativ können Sie direkt zur Seite „Datenbank-Instance“ navigieren und Ihren Cluster im linken Bereich auswählen.

  3. Wählen Sie den DB-Identifier, um das Database Instance Dashboard zu öffnen.

  4. Verwenden Sie das DB-Lastdiagramm, um die durchschnittlichen aktiven Sitzungen im Zeitverlauf anzuzeigen. Das Diagramm ist eine gestapelte Visualisierung, in der jedes farbige Band ein Warteereignis darstellt. Die Gesamthöhe zeigt also, wie stark der Cluster ausgelastet ist, und die Bänder zeigen, mit welchen Sitzungen ihre Zeit verbracht wird.

  5. Verwenden Sie das Slice By-Steuerelement im DB-Load-Diagramm, um zwischen Wait-Ereignissen und SQL-Text umzuschalten.

  6. Im Abschnitt DB-Load Analysis werden AAS nach Top-Wait-Ereignissen und Top-SQL nach ihrem Beitrag zu AAS sortiert.

  7. Verwenden Sie die Zeitbereichsauswahl oben auf der Seite, um sich auf ein bestimmtes Überwachungsfenster zu konzentrieren, z. B. auf den Zeitraum einer gemeldeten Verlangsamung.

Verwenden von PromQL

DASH stellt Daten als CloudWatch Metrik zur Verfügungdb.active_sessions.avg, die Sie mit PromQL in Query Studio abfragen können. CloudWatch

Die folgenden Beispiele funktionieren in Query Studio, wo der aktive Workspace die Ergebnisse bereits auf Ihr Konto und Ihre Region begrenzt und die Zeitauswahl das Evaluierungsfenster steuert. Da der Metrikname Punkte enthält, verwenden die Beispiele das PromQL-Selektorformular für Anführungszeichen,. {"db.active_sessions.avg"}

Anmerkung

Alle Beispiele enthalten einen @resource.aws.auroradsql.cluster_id Labelfilter, um die Ergebnisse auf einen einzelnen Cluster zu beschränken. cluster-idErsetzen Sie es durch Ihre Cluster-ID. Wenn Sie nur einen Cluster haben, können Sie diesen Filter weglassen oder stattdessen die Query Studio-UI-Filter verwenden. Um alle Labels zu ermitteln, die für die Metrik in Ihrer Umgebung verfügbar sind, führen {"db.active_sessions.avg"} Sie eine Serienabfrage aus und überprüfen Sie die Bezeichnungen, die für jede zurückgegebene Reihe festgelegt sind.

Die Datenbank wird durch ein Warte-Ereignis geladen

Gibt die durchschnittliche Anzahl aktiver Sitzungen zurück, gruppiert nach dem Warteereignis — dieselbe AAS-by-wait-event Ansicht, die im DB-Load-Diagramm von Database Insights verfügbar ist, auf die jedoch programmgesteuert zugegriffen werden kann.

avg by ("db.wait.event") ( { "db.active_sessions.avg", "@resource.aws.auroradsql.cluster_id"="cluster-id" } )

Das Ergebnis enthält eine Reihe pro eindeutigem db.wait.event Wert, wobei jede den durchschnittlichen AAS-Beitrag dieses Wartestatus enthält.

Top-SQL nach durchschnittlich aktiven Sitzungen

Ordnet SQL-Anweisungen nach ihrem durchschnittlichen Beitrag zur Datenbanklast ein. Dies ist das PromQL-Äquivalent zur Top-SQL-Ansicht von Database Insights.

topk(5, avg by ("db.query.normalized_text") ( { "db.active_sessions.avg", "@resource.aws.auroradsql.cluster_id"="cluster-id" } ) )

Fügen Sie der Grouping-Klausel hinzudb.wait.event, um die Top-SQL-Statements- und Wait-Ereigniskombinationen nach ihrem Anteil am Ladevorgang anzuzeigen. Da dabei alle Kombinationen in einer Rangfolge aufgeführt werden, können die Ergebnisse mehrere Wait-Ereignisse für dieselbe Anweisung mit hohem Nutzwert enthalten:

topk(5, avg by ("db.query.normalized_text", "db.wait.event") ( { "db.active_sessions.avg", "@resource.aws.auroradsql.cluster_id"="cluster-id" } ) )
SQL-Anweisungen, die die meisten Speicherlesevorgänge ausführen

Gibt die fünf SQL-Anweisungen zurück, die am meisten Zeit mit Speicherlesevorgängen verbringen, indem nach den Speicherlesewarteereignissen gefiltert wird.

topk(5, sum by ("db.query.normalized_text") ( { "db.active_sessions.avg", "db.wait.event"=~"S.*Read|.*Check", "@resource.aws.auroradsql.cluster_id"="cluster-id" } ) )

Der reguläre Ausdruck S.*Read entspricht den Storage-Read-Ereignissen, deren Namen mit Read (SequentialScanRead,,) beginnen S und enden. ScatteredBatchRead SingleRead Das Muster schließt .*Check explizit mit ein, weil die Ereignisse UniqueConstraintCheck und FkExistenceCheck wait nicht dem ersten Muster entsprechen, sondern ebenfalls Speicherlese-Warte-Ereignisse sind.

Verwenden der KI-Fähigkeit zur Aurora DSQL-Systemdiagnose

Die KI-Fähigkeit zur Aurora DSQL-Systemdiagnose automatisiert die Health-Check-Analyse Ihres Aurora DSQL-Clusters, indem sie DASH-Daten liest, die Verteilung von Warteereignissen über Zeitrahmen hinweg vergleicht und einen Diagnosebericht generiert. Der Skill ist Teil des Plug-ins „Databases-on-aws“ in Agent Plugins for AWS im awslabs/agent -plugins-Repository und funktioniert mit jedem unterstützten KI-Codierungsagenten.

Um den Zustand des Clusters zu analysieren, geben Sie eine Aufforderung wie die folgende aus:

„Prüfen Sie die Leistung meines Aurora-DSQL-Clusters cluster-id in us-east-1 und schreiben Sie mir einen Markdown-Bericht.“

Der Skill verwendet den CloudWatch Model Context Protocol (MCP) -Server, um die db.active_sessions.avg Metrik über eine Auswahl von Zeitrahmen hinweg zu analysieren, und gibt einen Markdown-Bericht zurück. Sie können dieses Fenster für den Leistungsvergleich in der Eingabeaufforderung aufrufen:

„Überprüfe die Leistung der letzten 4 Stunden und vergleiche sie mit der Leistung vom letzten Montag.“

Wenn bestimmte Abfragen problematisch erscheinen, leitet der Skill einen tieferen SQL-focused Diagnose-Workflow ein und meldet mögliche Lösungen für diese Aussage. Es entscheidet anhand der festgestellten Verschiebung des Warteereignisses, ob eine Abfrage detailliert untersucht werden soll, sodass Sie keine zusätzlichen Eingabeaufforderungen benötigen.