PromQL abfragen - Amazon CloudWatch

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.

PromQL abfragen

Wenn Sie OpenTelemetry Metriken in OpenTelemetry das CloudWatch via Protocol (OTLP) aufnehmen, wird das hierarchische OTLP-Datenmodell auf ProMQL-kompatible Labels reduziert. In diesem Abschnitt werden die Labelstruktur, die PromQL-Syntax für die Abfrage dieser Labels und die UTF-8-Unterstützung in PromQL beschrieben.

Anmerkung

PromQL in Prometheus 3 unterstützt vollständige UTF-8-Zeichen in Metriknamen und Labelnamen. Dies ist besonders wichtig für OTLP-Metriken, da OpenTelemetry semantische Konventionen Punkte in Attributnamen verwenden, wie z. service.name Bisher wurden diese Punkte bei der Übersetzung durch Unterstriche ersetzt, was zu Diskrepanzen zwischen dem, was in OTel Konventionen definiert war, und dem, was in Prometheus abfragbar war, führte.

Bei der Verwendung von PromQL in CloudWatch unterscheidet die @ Präfixkonvention OTLP-bezogene Labels von Standard-Prometheus-Labels. Felder innerhalb jedes Bereichs verwenden ein doppeltes @ Präfix (zum Beispiel@resource.@schema_url), während Attribute ein Präfix mit einem einzigen Gültigkeitsbereich verwenden, zum Beispiel. @ @resource.service.name Datenpunktattribute unterstützen auch den bloßen Zugriff (ohne Präfix), um beispielsweise die Abwärtskompatibilität mit Standard-PromQL-Abfragen zu gewährleisten, und sind gleichwertig. {"http.server.active_requests"} {"@datapoint.@name"="http.server.active_requests"}

Ein PromQL-Ausdruck wird in geschweifte Klammern eingeschlossen und gibt den Namen der Metrik und einen optionalen Satz von Label-Matchern an. Im folgenden Beispiel werden alle Zeitreihen für die Metrik ausgewählt: http.server.active_requests

{"http.server.active_requests"}

Im folgenden Beispiel werden alle Zeitreihen für die Metrik ausgewählt, http.server.active_requests bei denen das OpenTelemetry Ressourcenattribut service.name gleich istmyservice:

{"http.server.active_requests", "@resource.service.name"="myservice"}

Sie können mehrere Label-Matcher in einer einzigen Abfrage kombinieren. Im folgenden Beispiel werden alle Zeitreihen für die http.server.active_requests Metrik ausgewählt, bei denen das OpenTelemetry Ressourcenattribut myservice in allen US-Regionen service.name gleich ist:

{"http.server.active_requests", "@resource.service.name"="myservice", "@aws.region"=~"us-.*"}

Das folgende Beispiel zeigt eine Bereichsabfrage. Sie berechnet den Durchschnittswert aller Datenpunkte innerhalb eines bestimmten Zeitbereichs für jede Zeitreihe:

avg_over_time( {"http.server.active_requests", "@resource.service.name"="myservice"}[5m] )

In der folgenden Tabelle sind die Präfixkonventionen für jeden OTLP-Bereich zusammengefasst:

OTLP-Bereich Präfix für Felder Präfix für Attribute Beispiel

Ressource

@resource.@

@resource.

@resource.service.name="myservice"

Umfang der Instrumentierung

@instrumentation.@

@instrumentation.

@instrumentation.@name="otel-go/metrics"

Datenpunkt

@datapoint.@

@datapoint.oder nackt

cpu="cpu0" oder @datapoint.cpu="cpu0"

AWS-reserviert

@aws.

@aws.account_id="123456789"

Abfrage verkaufter Metriken mit PromQL AWS

Um AWS Verkaufsmetriken in PromQL abfragen zu können, müssen Sie zunächst die Anreicherung von Verkaufsmetriken aktivieren. OTel Siehe: Aktivierung von Verkaufsmetriken in PromQL.

Nachdem Sie die OTel Anreicherung aktiviert haben, können AWS Verkaufsmetriken über PromQL mit zusätzlichen Labels abgefragt werden. Der Metrikname ist derselbe wie der ursprüngliche CloudWatch Metrikname, und die ursprünglichen CloudWatch Dimensionen sind als Datenpunktattribute verfügbar. Die folgenden Labels sind verfügbar (das Beispiel unten bezieht sich auf eine EC2-Instance):

PromQL-Etikett Description Beispiel

InstanceId

Ursprüngliche CloudWatch Dimension als Datenpunkt-Attribut

i-0123456789abcdef0

"@resource.cloud.resource_id"

Vollständiger ARN der Ressource

arn:aws:ec2:us-east-1:123456789012:instance/i-0123456789abcdef0

"@resource.cloud.provider"

Cloud-Anbieter

aws

"@resource.cloud.region"

AWS Region, aus der diese Metrik stammt

us-east-1

"@resource.cloud.account.id"

AWS Konto-ID, aus der diese Metrik stammt

123456789012

"@instrumentation.@name"

Name des Instrumentierungsbereichs, der den Quelldienst identifiziert

cloudwatch.aws/ec2

"@instrumentation.cloudwatch.source"

Kennung des Quelldiensts

aws.ec2

"@instrumentation.cloudwatch.solution"

Kennung der Anreicherungslösung

CloudWatchOTelEnrichment

"@aws.tag.Environment"

AWS Ressourcen-Tag

production

"@aws.account"

AWS Konto, in das diese Metrik aufgenommen wurde (Systemlabel)

123456789012

"@aws.region"

AWS Region, in der diese Metrik aufgenommen wurde (Systemlabel)

us-east-1

Das folgende Beispiel wählt Invocations nach einer bestimmten Lambda-Funktion aus:

histogram_sum({Invocations, FunctionName="my-api-handler"})

Im folgenden Beispiel wird Lambda Errors für alle Funktionen ausgewählt, die mit einem bestimmten Team gekennzeichnet sind:

histogram_sum( {Errors, "@instrumentation.@name"="cloudwatch.aws/lambda", "@aws.tag.Team"="backend"} )

Das folgende Beispiel berechnet den gesamten Lambda, Invocations gruppiert nach Teams:

sum by ("@aws.tag.Team")( {Invocations, "@instrumentation.@name"="cloudwatch.aws/lambda"} )

Im folgenden Beispiel werden alle Zeitreihen für die CPUUtilization EC2-Metrik ausgewählt. Die Verwendung von "@instrumentation.@name"="cloudwatch.aws/ec2" dient ausschließlich dazu, die CPU-Auslastung von EC2 abzugleichen und nicht von anderen AWS Diensten wie Amazon Relational Database Service:

histogram_avg({CPUUtilization, "@instrumentation.@name"="cloudwatch.aws/ec2"})