Metriken mit Performance Insights abrufen API - Amazon DocumentDB

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.

Metriken mit Performance Insights abrufen API

Wenn Performance Insights aktiviert ist, API bietet das Einblick in die Instanzleistung. Amazon CloudWatch Logs ist die maßgebliche Quelle für angebotene Monitoring-Metriken für AWS Services.

Performance Insights bietet eine domänenspezifische Ansicht der Datenbanklast, gemessen als durchschnittliche aktive Sitzungen ()AAS. Diese Metrik erscheint API Verbrauchern als zweidimensionaler Zeitreihendatensatz. Die Zeitdimension der Daten stellt die Datenbanklastdaten für jeden Zeitpunkt im abgefragten Zeitraum bereit. Für jeden Zeitpunkt wird die Gesamtlast bezogen auf die angeforderten Dimensionen zerlegt, z. B. Query, Wait-state, Application oder Host, gemessen zum betreffenden Zeitpunkt.

Amazon DocumentDB Performance Insights überwacht Ihre Amazon DocumentDB-DB-Instance, sodass Sie die Datenbankleistung analysieren und Fehler beheben können. Eine Möglichkeit zum Anzeigen von Performance Insights-Daten bietet die AWS Management Console. Performance Insights bietet auch eine öffentliche API Ansicht, sodass Sie Ihre eigenen Daten abfragen können. Sie können das verwendenAPI, um Folgendes zu tun:

  • Auslagern von Daten in eine Datenbank

  • Hinzufügen von Performance Insights-Daten zu bestehenden Überwachungs-Dashboards

  • Entwickeln von Überwachungstools

Um Performance Insights zu verwendenAPI, aktivieren Sie Performance Insights auf einer Ihrer Amazon DocumentDB DocumentDB-Instances. Weitere Informationen zum Aktivieren von Performance Insights finden Sie unter Aktivieren und Deaktivieren von Performance Insights. Weitere Informationen zu Performance Insights API finden Sie in der Performance Insights API Insights-Referenz.

Performance Insights API bietet die folgenden Operationen.

Performance-Insights-Aktion

AWS CLI Befehl

Beschreibung

DescribeDimensionKeys

aws pi describe-dimension-keys

Ruft die Schlüssel der Top N-Dimension für eine Metrik für einen bestimmten Zeitraum ab.

GetDimensionKeyDetails

aws pi get-dimension-key-details

Ruft die Attribute der angegebenen Dimensionsgruppe für eine DB-Instance oder Datenquelle ab. Wenn Sie beispielsweise eine Abfrage-ID angeben und die Dimensionsdetails verfügbar sind, wird der vollständige Text der Dimension GetDimensionKeyDetails abgerufen, die dieser ID db.query.statement zugeordnet ist. Dieser Vorgang ist nützlich, weil er GetResourceMetrics das Abrufen von umfangreichem Text in Abfrageanweisungen DescribeDimensionKeys nicht unterstützt.

GetResourceMetadata

aws pi get-resource-metadata

Rufen Sie die Metadaten für verschiedene Funktionen ab. Die Metadaten könnten beispielsweise darauf hindeuten, dass eine Funktion für eine bestimmte DB-Instance ein- oder ausgeschaltet ist.

GetResourceMetrics

aws pi get-resource-metrics

Ruft Performance Insights-Metriken für eine Reihe von Datenquellen über einen Zeitraum ab. Sie können spezifische Dimensionsgruppen und Dimensionen bereitstellen und Aggregation und Filterkriterien für jede Gruppe bereitstellen.

ListAvailableResourceDimensions

aws pi list-available-resource-dimensions

Rufen Sie die Dimensionen ab, die für jeden angegebenen Metriktyp für eine bestimmte Instance abgefragt werden können.

ListAvailableResourceMetrics

aws pi list-available-resource-metrics

Rufen Sie alle verfügbaren Metriken der angegebenen Metriktypen ab, die für eine bestimmte DB-Instance abgefragt werden können.

AWS CLI für Performance Insights

Sie können Performance Insights-Daten über die anzeige AWS CLI. Hilfe zu den AWS CLI -Befehlen für Performance Insights erhalten Sie durch Eingabe der folgenden Befehle an der Befehlszeile.

aws pi help

Falls Sie das nicht AWS CLI installiert haben, finden Sie unter Installation der AWS Befehlszeilenschnittstelle im AWS CLI Benutzerhandbuch weitere Informationen zur Installation.

Abrufen von Zeitreihenmetriken

Mit der GetResourceMetrics-Operation werden ein oder mehrere Zeitreihenmetriken aus den Performance Insights-Daten abgerufen. Für GetResourceMetrics ist eine Metrik und ein Zeitraum erforderlich, damit eine Antwort mit einer Liste von Datenpunkten zurückgegeben wird.

Zum Beispiel die AWS Management Console Verwendung, GetResourceMetrics um die Diagramme „Counter Metrics“ und „Database Load“ auszufüllen, wie in der folgenden Abbildung dargestellt.

Zählermetriken- und Datenbanklastdiagramme

Alle von zurückgegebenen MetrikenGetResourceMetrics sind Standard-Zeitreihenmetriken, mit Ausnahme vondb.load. Diese Metrik wird im Diagramm Database Load (Datenbanklast) angezeigt. Diedb.load Metrik unterscheidet sich von den anderen Zeitreihenmetriken, da Sie sie in Unterkomponenten aufteilen können, die als Dimensionen bezeichnet werden. In der vorherigen Abbildung wird db.load unterteilt und nach Wartezuständen gruppiert, aus denen db.load besteht.

Anmerkung

GetResourceMetrics kann auch die db.sampleload-Metrik zurückgeben, aber die db.load-Metrik ist in den meisten Fällen angemessen.

Informationen zu den Zählermetriken, die von GetResourceMetrics zurückgegeben werden, finden Sie unter Performance Insights für Zählermetriken.

Die folgenden Berechnungen werden für die Metriken unterstützt:

  • Durchschnitt – Der durchschnittliche Wert für die Metrik über einen bestimmten Zeitraum. Fügen Sie dem Metriknamen .avg an.

  • Minimum – Der minimale Wert für die Metrik über einen bestimmten Zeitraum. Fügen Sie dem Metriknamen .min an.

  • Maximum – Der maximale Wert für die Metrik über einen bestimmten Zeitraum. Fügen Sie dem Metriknamen .max an.

  • Summe – Die Summe der Metrikwerte über einen bestimmten Zeitraum. Fügen Sie dem Metriknamen .sum an.

  • Beispielanzahl – Die Anzahl, wie oft die Metrik über einen bestimmten Zeitraum erfasst wurde. Fügen Sie dem Metriknamen .sample_count an.

Nehmen wir an, dass eine Metrik beispielsweise 300 Sekunden (5 Minuten) lang erfasst wird und dass die Metrik einmal pro Minute erfasst wird. Die Werte für jede Minute sind 1, 2, 3, 4 und 5. In diesem Fall werden die folgenden Berechnungen zurückgegeben:

  • Durchschnitt – 3

  • Minimum – 1

  • Maximum – 5

  • Summe – 15

  • Beispielanzahl – 5

Hinweise zur Verwendung des get-resource-metrics AWS CLI Befehls finden Sie unter get-resource-metrics.

Geben Sie für die --metric-queries-Option eine oder mehrere Abfragen an, um die entsprechenden Ergebnisse zu erhalten. Jede Abfrage besteht aus einem obligatorischen Metric- sowie optionalen GroupBy- und Filter-Parametern. Es folgt ein Beispiel für eine Spezifikation der --metric-queries-Option.

{ "Metric": "string", "GroupBy": { "Group": "string", "Dimensions": ["string", ...], "Limit": integer }, "Filter": {"string": "string" ...}

AWS CLI Beispiele für Performance Insights

Die folgenden Beispiele zeigen, wie Sie AWS CLI for Performance Insights verwenden können.

Abrufen von Zählermetriken

Der folgende Screenshot zeigt zwei Zählermetriken-Diagramme in der AWS Management Console.

Zählermetriken-Diagramme

Das folgende Beispiel veranschaulicht, wie die Daten, die die AWS Management Console zum Erstellen der beiden Zählermetriken-Diagramme verwendet, gesammelt werden.

Für Linux, macOS oder Unix:

aws pi get-resource-metrics \ --service-type DOCDB \ --identifier db-ID \ --start-time 2022-03-13T8:00:00Z \ --end-time 2022-03-13T9:00:00Z \ --period-in-seconds 60 \ --metric-queries '[{"Metric": "os.cpuUtilization.user.avg" }, {"Metric": "os.cpuUtilization.idle.avg"}]'

Für Windows:

aws pi get-resource-metrics ^ --service-type DOCDB ^ --identifier db-ID ^ --start-time 2022-03-13T8:00:00Z ^ --end-time 2022-03-13T9:00:00Z ^ --period-in-seconds 60 ^ --metric-queries '[{"Metric": "os.cpuUtilization.user.avg" }, {"Metric": "os.cpuUtilization.idle.avg"}]'

Sie können einen Befehl besser lesbar gestalten, indem Sie eine Datei für die Option --metrics-query angeben. Im folgenden Beispiel wird eine Datei namens query.json für die Option verwendet. Die Datei enthält Folgendes.

[ { "Metric": "os.cpuUtilization.user.avg" }, { "Metric": "os.cpuUtilization.idle.avg" } ]

Führen Sie den folgenden Befehl aus, um die Datei zu verwenden.

Für Linux, macOS oder Unix:

aws pi get-resource-metrics \ --service-type DOCDB \ --identifier db-ID \ --start-time 2022-03-13T8:00:00Z \ --end-time 2022-03-13T9:00:00Z \ --period-in-seconds 60 \ --metric-queries file://query.json

Für Windows:

aws pi get-resource-metrics ^ --service-type DOCDB ^ --identifier db-ID ^ --start-time 2022-03-13T8:00:00Z ^ --end-time 2022-03-13T9:00:00Z ^ --period-in-seconds 60 ^ --metric-queries file://query.json

Das vorige Beispiel gibt die folgenden Werte für die Optionen an:

  • --service-typeDOCDB für Amazon DocumentDB

  • --identifier – Die Ressource-ID für die DB-Instance

  • --start-timeund --end-time — Die ISO 8601 DateTime Werte für den abzufragenden Zeitraum, wobei mehrere Formate unterstützt werden

Der Abfragezeitraum beträgt eine Stunde:

  • --period-in-seconds60 für eine Abfrage pro Minute

  • --metric-queries – Ein Array mit zwei Abfragen, jeweils für nur eine Metrik.

    Der Metrikname verwendet Punkte, um die Metrik in eine sinnvolle Kategorie einzustufen, wobei das letzte Element eine Funktion ist. Im Beispiel lautet die Funktion avg für jede Abfrage. Wie bei Amazon CloudWatch sind die unterstützten Funktionen minmax,total, undavg.

Die Antwort sieht in etwa so aus:

{ "AlignedStartTime": "2022-03-13T08:00:00+00:00", "AlignedEndTime": "2022-03-13T09:00:00+00:00", "Identifier": "db-NQF3TTMFQ3GTOKIMJODMC3KQQ4", "MetricList": [ { "Key": { "Metric": "os.cpuUtilization.user.avg" }, "DataPoints": [ { "Timestamp": "2022-03-13T08:01:00+00:00", //Minute1 "Value": 3.6 }, { "Timestamp": "2022-03-13T08:02:00+00:00", //Minute2 "Value": 2.6 }, //.... 60 datapoints for the os.cpuUtilization.user.avg metric { "Key": { "Metric": "os.cpuUtilization.idle.avg" }, "DataPoints": [ { "Timestamp": "2022-03-13T08:01:00+00:00", "Value": 92.7 }, { "Timestamp": "2022-03-13T08:02:00+00:00", "Value": 93.7 }, //.... 60 datapoints for the os.cpuUtilization.user.avg metric ] } ] //end of MetricList } //end of response

Die Antwort enthält Werte für Identifier, AlignedStartTime und AlignedEndTime. Bei einem --period-in-seconds-Wert von 60 wurden Start- und Endzeiten auf die Minute ausgerichtet. Wenn der --period-in-seconds-Wert 3600 lautet, werden Start- und Endzeiten auf die Stunde ausgerichtet.

Die MetricList in der Antwort enthält eine Reihe von Einträgen, und zwar jeweils mit einem Key- und einem DataPoints-Eintrag. Jeder DataPoint verfügt über einen Timestamp und einen Value. Jede Datapoints-Liste enthält 60 Datenpunkte, da die Abfragen eine Stunde lang jede Minute Daten abfragen, und zwar mit den Werten Timestamp1/Minute1, Timestamp2/Minute2 usw. bis Timestamp60/Minute60.

Da sich die Abfrage auf zwei verschiedene Zählermetriken bezieht, enthält die -Antwort zwei Element MetricList.

Der DB-Lastdurchschnitt für die höchsten Wartezeiten wird abgerufen

Das folgende Beispiel ist dieselbe Abfrage, die AWS Management Console verwendet wird, um ein gestapeltes Flächenliniendiagramm zu generieren. In diesem Beispiel wird der Wert db.load.avg für die letzte Stunde abgerufen, wobei die Auslastung nach den sieben höchsten Wartezuständen aufgeteilt wird. Der Befehl ist mit dem Befehl unter identisc Abrufen von Zählermetriken. Die Datei query.json enthält hingegen Folgendes.

[ { "Metric": "db.load.avg", "GroupBy": { "Group": "db.wait_state", "Limit": 7 } } ]

Führen Sie den folgenden Befehl aus.

Für Linux, macOS oder Unix:

aws pi get-resource-metrics \ --service-type DOCDB \ --identifier db-ID \ --start-time 2022-03-13T8:00:00Z \ --end-time 2022-03-13T9:00:00Z \ --period-in-seconds 60 \ --metric-queries file://query.json

Für Windows:

aws pi get-resource-metrics ^ --service-type DOCDB ^ --identifier db-ID ^ --start-time 2022-03-13T8:00:00Z ^ --end-time 2022-03-13T9:00:00Z ^ --period-in-seconds 60 ^ --metric-queries file://query.json

Das Beispiel gibt die Metrik für db.load.avg und a GroupBy der sieben wichtigsten Wartezustände an. Einzelheiten zu gültigen Werten für dieses Beispiel finden Sie DimensionGroupin der Performance Insights API Insights-Referenz.

Die Antwort sieht in etwa so aus:

{ "AlignedStartTime": "2022-04-04T06:00:00+00:00", "AlignedEndTime": "2022-04-04T06:15:00+00:00", "Identifier": "db-NQF3TTMFQ3GTOKIMJODMC3KQQ4", "MetricList": [ {//A list of key/datapoints "Key": { //A Metric with no dimensions. This is the total db.load.avg "Metric": "db.load.avg" }, "DataPoints": [ //Each list of datapoints has the same timestamps and same number of items { "Timestamp": "2022-04-04T06:01:00+00:00",//Minute1 "Value": 0.0 }, { "Timestamp": "2022-04-04T06:02:00+00:00",//Minute2 "Value": 0.0 }, //... 60 datapoints for the total db.load.avg key ] }, { "Key": { //Another key. This is db.load.avg broken down by CPU "Metric": "db.load.avg", "Dimensions": { "db.wait_state.name": "CPU" } }, "DataPoints": [ { "Timestamp": "2022-04-04T06:01:00+00:00",//Minute1 "Value": 0.0 }, { "Timestamp": "2022-04-04T06:02:00+00:00",//Minute2 "Value": 0.0 }, //... 60 datapoints for the CPU key ] },//... In total we have 3 key/datapoints entries, 1) total, 2-3) Top Wait States ] //end of MetricList } //end of response

In dieser Antwort gibt es drei Einträge in derMetricList. Es gibt einen Eintrag für die Gesamtzahl db.load.avg und jeweils drei Einträge für die db.load.avg Aufteilung nach einem der drei höchsten Wartezustände. Da es eine Gruppierungsdimension gab (im Gegensatz zum ersten Beispiel), muss es für jede Gruppierung der Metrik einen Schlüssel geben. Für jede Metrik kann nicht nur ein Schlüssel vorhanden sein, wie im Anwendungsfall der Basiszählermetrik.

Der durchschnittliche DB-Ladestand für die oberste Abfrage wird abgerufen

Das folgende Beispiel db.wait_state gruppiert nach den 10 wichtigsten Abfrageanweisungen. Es gibt zwei verschiedene Gruppen für Abfrageanweisungen:

  • db.query— Die vollständige Abfrageanweisung, wie {"find":"customers","filter":{"FirstName":"Jesse"},"sort":{"key":{"$numberInt":"1"}}}

  • db.query_tokenized— Die tokenisierte Abfrageanweisung, wie {"find":"customers","filter":{"FirstName":"?"},"sort":{"key":{"$numberInt":"?"}},"limit":{"$numberInt":"?"}}

Bei der Analyse der Datenbankleistung kann es nützlich sein, Abfrageanweisungen, die sich nur durch ihre Parameter unterscheiden, als ein Logikelement zu betrachten. In diesem Fall können Sie db.query_tokenized beim Abfragen verwenden. Vor allem, wenn Sie daran interessiert sindexplain(), ist es manchmal sinnvoller, vollständige Abfrageanweisungen mit Parametern zu untersuchen. Es besteht eine Beziehung zwischen tokenisierten und vollständigen Abfragen, wobei mehrere vollständige Abfragen (untergeordnete Abfragen) unter derselben tokenisierten Abfrage (übergeordnete Abfrage) gruppiert sind.

Der Befehl in diesem Beispiel ähnelt dem Befehl unter Der DB-Lastdurchschnitt für die höchsten Wartezeiten wird abgerufen. Die Datei query.json enthält hingegen Folgendes.

[ { "Metric": "db.load.avg", "GroupBy": { "Group": "db.query_tokenized", "Limit": 10 } } ]

Im folgenden Beispiel wird verwende db.query_tokenized.

Für Linux, macOS oder Unix:

aws pi get-resource-metrics \ --service-type DOCDB \ --identifier db-ID \ --start-time 2022-03-13T8:00:00Z \ --end-time 2022-03-13T9:00:00Z \ --period-in-seconds 3600 \ --metric-queries file://query.json

Für Windows:

aws pi get-resource-metrics ^ --service-type DOCDB ^ --identifier db-ID ^ --start-time 2022-03-13T8:00:00Z ^ --end-time 2022-03-13T9:00:00Z ^ --period-in-seconds 3600 ^ --metric-queries file://query.json

In diesem Beispiel werden Abfragen über eine Stunde mit einer Minute abgefragt. period-in-seconds

Das Beispiel gibt die Metrik für db.load.avg und einen GroupBy der sieben höchsten Wartezustände an. Einzelheiten zu gültigen Werten für dieses Beispiel finden Sie DimensionGroupin der Performance Insights API Insights-Referenz.

Die Antwort sieht in etwa so aus:

{ "AlignedStartTime": "2022-04-04T06:00:00+00:00", "AlignedEndTime": "2022-04-04T06:15:00+00:00", "Identifier": "db-NQF3TTMFQ3GTOKIMJODMC3KQQ4", "MetricList": [ {//A list of key/datapoints "Key": { "Metric": "db.load.avg" }, "DataPoints": [ //... 60 datapoints for the total db.load.avg key ] }, { "Key": {//Next key are the top tokenized queries "Metric": "db.load.avg", "Dimensions": { "db.query_tokenized.db_id": "pi-1064184600", "db.query_tokenized.id": "77DE8364594EXAMPLE", "db.query_tokenized.statement": "{\"find\":\"customers\",\"filter\":{\"FirstName\":\"?\"},\"sort\":{\"key\":{\"$numberInt\":\"?\"}},\"limit\" :{\"$numberInt\":\"?\"},\"$db\":\"myDB\",\"$readPreference\":{\"mode\":\"primary\"}}" } }, "DataPoints": [ //... 60 datapoints ] }, // In total 11 entries, 10 Keys of top tokenized queries, 1 total key ] //End of MetricList } //End of response

Diese Antwort enthält 11 Einträge in der Abfrage MetricList (insgesamt 1, 10 am häufigsten tokenisierte Abfrage), wobei jeder Eintrag 24 Einträge pro Stunde enthält. DataPoints

Bei tokenisierten Abfragen gibt es drei Einträge in jeder Dimensionsliste:

  • db.query_tokenized.statement— Die tokenisierte Abfrageanweisung.

  • db.query_tokenized.db_id — Die synthetische ID, die Performance Insights für Sie generiert. In diesem Beispiel wird die synthetische ID pi-1064184600 zurückgegeben.

  • db.query_tokenized.id – Die ID der Abfrage innerhalb von Performance-Insights.

    In der AWS Management Console wird diese ID als Support-ID bezeichnet. Es trägt diesen Namen, weil es sich bei der ID um Daten handelt, die der AWS Support untersuchen kann, um Ihnen bei der Behebung eines Problems mit Ihrer Datenbank zu helfen. AWS nimmt die Sicherheit und den Schutz Ihrer Daten sehr ernst und fast alle Daten werden verschlüsselt zusammen mit Ihren gespeichert AWS KMS key. Daher AWS kann niemand im Inneren diese Daten einsehen. Im vorherigen Beispiel wird sowohl tokenized.statement als auch tokenized.db_id verschlüsselt gespeichert. Wenn Sie ein Problem mit Ihrer Datenbank haben, kann Ihnen der AWS Support unter Angabe der Support-ID weiterhelfen.

Beim Abfragen empfiehlt es sich ggf., eine Group in GroupBy anzugeben. Für eine präzisere Kontrolle der Daten, die zurückgegeben werden, sollten Sie allerdings die Dimensionsliste angeben. Wenn z. B. lediglich eine db.query_tokenized.statement erforderlich ist, kann der query.json-Datei ein Dimensions-Attribut hinzugefügt werden.

[ { "Metric": "db.load.avg", "GroupBy": { "Group": "db.query_tokenized", "Dimensions":["db.query_tokenized.statement"], "Limit": 10 } } ]

Abrufen des nach Query gefilterten DB-Ladedurchschnitts

Die entsprechende API Abfrage in diesem Beispiel ähnelt dem Befehl inDer durchschnittliche DB-Ladestand für die oberste Abfrage wird abgerufen. Die Datei query.json enthält hingegen Folgendes.

[ { "Metric": "db.load.avg", "GroupBy": { "Group": "db.wait_state", "Limit": 5 }, "Filter": { "db.query_tokenized.id": "AKIAIOSFODNN7EXAMPLE" } } ]

In dieser Antwort werden alle Werte entsprechend dem Beitrag der tokenisierten Abfrage gefiltert, die in der Datei query.json AKIAIOSFODNN7EXAMPLE angegeben ist. Die Schlüssel haben möglicherweise auch eine andere Reihenfolge als eine Abfrage ohne Filter, da die fünf Wartezustände mit der höchsten Wartezeit die gefilterte Abfrage beeinflusst haben.