View a markdown version of this page

Spezifikation: Eingebettetes Metrikformat - 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.

Spezifikation: Eingebettetes Metrikformat

Das CloudWatch eingebettete Metrikformat ist eine JSON-Spezifikation, mit der CloudWatch Logs angewiesen wird, in strukturierte Protokollereignisse eingebettete Metrikwerte automatisch zu extrahieren. Sie können CloudWatch es verwenden, um die extrahierten Metrikwerte grafisch darzustellen und Alarme zu erstellen. In diesem Abschnitt werden die Konventionen für die Spezifikation des eingebetteten Metrikformats und die Dokumentstruktur des eingebetteten Metrikformats beschrieben.

Anmerkung

Das eingebettete Metrikformat stellt sicher, dass Metriken, die aus Protokollereignissen extrahiert wurden, mindestens einmal bereitgestellt werden, wobei es gelegentlich zu doppelten Metrikwerten kommen kann.

Konventionen der Spezifikationen für eingebettete Metrikformate

Die Schlüsselwörter „MUSS“, „DARF NICHT“, „ERFORDERLICH“, „SOLL“, „DARF NICHT“, „SOLLTE“, „SOLLTE NICHT“, „EMPFOHLEN“, „KANN“ und „OPTIONAL“ in dieser Formatspezifikation sind wie in den Schlüsselwörtern RFC2119 beschrieben zu interpretieren.

Die Begriffe „JSON“, „JSON-Text“, „JSON-Wert“, „Mitglied“, „Element“, „Objekt“, „Array“, „Zahl“, „Zeichenfolge“, „boolean“, „true“, „false“ und „null“ in dieser Formatspezifikation sind wie in der JavaScript Objektnotation RFC8259 definiert zu interpretieren.

Anmerkung

Wenn Sie Alarme für Metriken erstellen möchten, die im eingebetteten Metrikformat erstellt wurden, siehe Alarme für Metriken setzen, die mit dem eingebetteten Metrikformat erstellt wurden für Empfehlungen.

Eingebettetes Metrikformat-Dokumentstruktur

Dieser Abschnitt beschreibt die Struktur eines Dokuments im eingebetteten Metrikformat. Dokumente im eingebetteten metrischen Format sind in Object Notation RFC8259 definiert. JavaScript

Sofern nicht anders angegeben, DÜRFEN in dieser Spezifikation definierte Objekte KEINE zusätzlichen Elemente enthalten. Elemente, die von dieser Spezifikation nicht erkannt werden, MÜSSEN ignoriert werden. In dieser Spezifikation definierte Elemente berücksichtigen Groß- und Kleinschreibung.

Das eingebettete metrische Format unterliegt denselben Beschränkungen wie CloudWatch Standard-Logs-Ereignisse und ist auf eine maximale Größe von 1 MB begrenzt.

Mit dem eingebetteten Metrikformat können Sie die Verarbeitung Ihrer EMF-Protokolle nach Metriken verfolgen, die im AWS/Logs-Namespace Ihres Kontos veröffentlicht werden. Diese können verwendet werden, um die fehlgeschlagene Metrikgenerierung von EMF nachzuverfolgen und festzustellen, ob Fehler aufgrund der Analyse oder der Validierung auftreten. Weitere Informationen finden Sie unter Überwachung mit CloudWatch Metriken.

Stammknoten

Die LogEvent Nachricht MUSS ein gültiges JSON-Objekt ohne zusätzliche Daten am Anfang oder Ende der LogEvent Nachrichtenzeichenfolge sein. Weitere Hinweise zur LogEvent Struktur finden Sie unter InputLogEvent.

Dokumente im eingebetteten Metrikformat MÜSSEN das folgende Element der obersten Ebene auf dem Stammknoten enthalten. Dies ist ein Metadatenobjekt-Objekt.

{ "_aws": { "CloudWatchMetrics": [ ... ] } }

Der Stammknoten MUSS alle Zielmitglieder-Elemente enthalten, die durch die Verweise in MetricDirective Objekt definiert sind.

Der Stammknoten KANN alle anderen Elemente enthalten, die nicht in den oben genannten Anforderungen enthalten sind. Die Werte dieser Elemente MÜSSEN gültige JSON-Typen sein.

Metadatenobjekt

Das _aws Element kann verwendet werden, um Metadaten über die Nutzlast darzustellen, anhand derer nachgelagerte Dienste darüber informiert werden, wie sie den LogEvent verarbeiten sollen. Der Wert MUSS ein Objekt sein und MUSS die folgenden Elemente enthalten:

  • CloudWatchMetrics— Ein Array, das MetricDirective Objekt verwendet wird, um das Extrahieren von Metriken aus dem Stammknoten des anzuweisen CloudWatch . LogEvent

    { "_aws": { "CloudWatchMetrics": [ ... ] } }
  • Zeitstempel – Eine Zahl, die den Zeitstempel für Metriken darstellt, die aus dem Ereignis extrahiert werden. Werte MÜSSEN als die Anzahl der Millisekunden nach dem 1. Januar 1970 00:00:00 UTC ausgedrückt werden.

    { "_aws": { "Timestamp": 1559748430481 } }

MetricDirective Objekt

Das MetricDirective Objekt weist nachgelagerte Dienste an, dass das Metriken LogEvent enthält, die extrahiert und veröffentlicht werden. CloudWatch MetricDirectives MUSS die folgenden Mitglieder enthalten:

  • Namespace — Eine Zeichenfolge, die den CloudWatch Namespace für die Metrik darstellt.

  • Dimensionen – Ein DimensionSet Reihe.

  • Metriken– – Ein Array von MetricDefinition-Objekten. Dieses Array DARF NICHT mehr als 100 MetricDefinition Objekte enthalten.

DimensionSet Reihe

A DimensionSet ist ein Array von Zeichenketten, das die Dimensionsschlüssel enthält, die auf alle Metriken im Dokument angewendet werden. Die Werte innerhalb dieses Arrays MÜSSEN auch Elemente auf dem Stammknoten sein, die als das Zielmitglieder bezeichnet werden.

A DimensionSet DARF NICHT MEHR ALS 30 DIMENSIONSSCHLÜSSEL ENTHALTEN. A DimensionSet KANN leer sein.

Das Zielelement MUSS einen Zeichenfolgenwert haben. Dieser Wert DARF NICHT mehr als 1024 Zeichen enthalten. Das Zielelement definiert eine Dimension, die als Teil der Metrikidentität veröffentlicht wird. Jeder DimensionSet Benutzer erstellt eine neue Metrik in CloudWatch. Weitere Informationen zu Dimensionen finden Sie unter Dimension und Dimensionen.

{ "_aws": { "CloudWatchMetrics": [ { "Dimensions": [ [ "functionVersion" ] ], ... } ] }, "functionVersion": "$LATEST" }
Anmerkung

Seien Sie vorsichtig, wenn Sie die Metrikextraktion konfigurieren, da sich dies auf Ihre benutzerdefinierte Metrikauslastung und die entsprechende Rechnung auswirkt. Wenn Sie versehentlich Metriken basierend auf hohen Kardinalitätsdimensionen erstellen (z. B. requestId), erstellt das eingebettete Metrikformat standardmäßig eine benutzerdefinierte Metrik, die jeder eindeutigen Dimensionskombination entspricht. Weitere Informationen finden Sie unter Dimensionen.

MetricDefinition Objekt

A MetricDefinition ist ein Objekt, das das folgende Mitglied enthalten MUSS:

  • Name – Eine Zeichenfolge Referenzwerte auf eine Metrik Zielmitglieder. Metrikziele MÜSSEN entweder aus einem numerischen Wert oder einem Array von numerischen Werten bestehen.

Ein MetricDefinition Objekt KANN die folgenden Mitglieder enthalten:

  • Einheit – Ein OPTIONALER Zeichenfolgenwert, der die Maßeinheit für die entsprechende Metrik darstellt. Die Werte SOLLTEN gültige CloudWatch metrische Einheiten sein. Hinweise zu gültigen Einheiten finden Sie unter MetricDatum. Wenn kein Wert angegeben wird, wird der Standardwert NONE angenommen.

  • StorageResolution— Ein OPTIONALER Ganzzahlwert, der die Speicherauflösung für die entsprechende Metrik darstellt. Wenn Sie diesen Wert auf 1 setzen, wird diese Metrik als hochauflösende Metrik angegeben, sodass die Metrik mit einer Auflösung von unter einer Minute auf eine Sekunde genau CloudWatch gespeichert wird. Wenn Sie diesen Wert auf 60 setzen, handelt es sich bei dieser Metrik um eine Standardauflösung, die mit einer Auflösung von 1 Minute CloudWatch gespeichert wird. Die Werte SOLLTEN gültige CloudWatch unterstützte Auflösungen sein, 1 oder 60. Wenn kein Wert angegeben wird, wird der Standardwert 60 angenommen.

    Weitere Informationen zu hochauflösenden Metriken finden Sie unter High-resolution Metriken.

Anmerkung

Wenn Sie Alarme für Metriken erstellen möchten, die im eingebetteten Metrikformat erstellt wurden, siehe Alarme für Metriken setzen, die mit dem eingebetteten Metrikformat erstellt wurden für Empfehlungen.

{ "_aws": { "CloudWatchMetrics": [ { "Metrics": [ { "Name": "Time", "Unit": "Milliseconds", "StorageResolution": 60 } ], ... } ] }, "Time": 1 }

Referenzwerte

Referenzwerte sind Zeichenfolgenwerte, die Zielmitglieder-Elemente auf dem Stammknoten referenzieren. Diese Referenzen sollten NICHT mit den in RFC6901 beschriebenen JSON Pointers verwechselt werden. Zielwerte können nicht verschachtelt werden.

Zielmitglieder

Gültige Ziele MÜSSEN Elemente auf dem Stammknoten sein und dürfen keine verschachtelten Objekte sein. Ein _reference_-Wert von "A.a" MUSS beispielsweise mit dem folgenden Element übereinstimmen:

{ "A.a" }

Er DARF NICHT mit dem verschachtelten Element übereinstimmen:

{ "A": { "a" } }

Gültige Werte von Zielelementen hängen davon ab, was sie referenziert. Ein Metrikziel MUSS ein numerischer Wert oder ein Array numerischer Werte sein. Numerische Array-Metrikziele DÜRFEN NICHT mehr als 100 Mitglieder haben. Ein Dimensionsziel MUSS einen Zeichenfolgenwert haben.

Beispiel für ein eingebettetes Metrikformat und JSON-Schema

Im Folgenden finden Sie ein gültiges Beispiel für ein eingebettetes Metrikformat.

{ "_aws": { "Timestamp": 1574109732004, "CloudWatchMetrics": [ { "Namespace": "lambda-function-metrics", "Dimensions": [["functionVersion"]], "Metrics": [ { "Name": "time", "Unit": "Milliseconds", "StorageResolution": 60 } ] } ] }, "functionVersion": "$LATEST", "time": 100, "requestId": "989ffbf8-9ace-4817-a57c-e4dd734019ee" }

Sie können das folgende Schema verwenden, um Dokumente im eingebetteten Metrikformat zu validieren.

{ "type": "object", "title": "Root Node", "required": [ "_aws" ], "properties": { "_aws": { "$id": "#/properties/_aws", "type": "object", "title": "Metadata", "required": [ "Timestamp", "CloudWatchMetrics" ], "properties": { "Timestamp": { "$id": "#/properties/_aws/properties/Timestamp", "type": "integer", "title": "The Timestamp Schema", "examples": [ 1565375354953 ] }, "CloudWatchMetrics": { "$id": "#/properties/_aws/properties/CloudWatchMetrics", "type": "array", "title": "MetricDirectives", "items": { "$id": "#/properties/_aws/properties/CloudWatchMetrics/items", "type": "object", "title": "MetricDirective", "required": [ "Namespace", "Dimensions", "Metrics" ], "properties": { "Namespace": { "$id": "#/properties/_aws/properties/CloudWatchMetrics/items/properties/Namespace", "type": "string", "title": "CloudWatch Metrics Namespace", "examples": [ "MyApp" ], "pattern": "^(.*)$", "minLength": 1, "maxLength": 1024 }, "Dimensions": { "$id": "#/properties/_aws/properties/CloudWatchMetrics/items/properties/Dimensions", "type": "array", "title": "The Dimensions Schema", "minItems": 1, "items": { "$id": "#/properties/_aws/properties/CloudWatchMetrics/items/properties/Dimensions/items", "type": "array", "title": "DimensionSet", "minItems": 0, "maxItems": 30, "items": { "$id": "#/properties/_aws/properties/CloudWatchMetrics/items/properties/Dimensions/items/items", "type": "string", "title": "DimensionReference", "examples": [ "Operation" ], "pattern": "^(.*)$", "minLength": 1, "maxLength": 250 } } }, "Metrics": { "$id": "#/properties/_aws/properties/CloudWatchMetrics/items/properties/Metrics", "type": "array", "title": "MetricDefinitions", "items": { "$id": "#/properties/_aws/properties/CloudWatchMetrics/items/properties/Metrics/items", "type": "object", "title": "MetricDefinition", "required": [ "Name" ], "properties": { "Name": { "$id": "#/properties/_aws/properties/CloudWatchMetrics/items/properties/Metrics/items/properties/Name", "type": "string", "title": "MetricName", "examples": [ "ProcessingLatency" ], "pattern": "^(.*)$", "minLength": 1, "maxLength": 1024 }, "Unit": { "$id": "#/properties/_aws/properties/CloudWatchMetrics/items/properties/Metrics/items/properties/Unit", "type": "string", "title": "MetricUnit", "examples": [ "Milliseconds" ], "pattern": "^(Seconds|Microseconds|Milliseconds|Bytes|Kilobytes|Megabytes|Gigabytes|Terabytes|Bits|Kilobits|Megabits|Gigabits|Terabits|Percent|Count|Bytes\\/Second|Kilobytes\\/Second|Megabytes\\/Second|Gigabytes\\/Second|Terabytes\\/Second|Bits\\/Second|Kilobits\\/Second|Megabits\\/Second|Gigabits\\/Second|Terabits\\/Second|Count\\/Second|None)$" }, "StorageResolution": { "$id": "#/properties/_aws/properties/CloudWatchMetrics/items/properties/Metrics/items/properties/StorageResolution", "type": "integer", "title": "StorageResolution", "examples": [ 60 ] } } } } } } } } } } }

Entity-Informationen im EMF-Format

Wenn Sie Protokolle CloudWatch mithilfe des Embedded Metric Format (EMF) bei Amazon veröffentlichen, können Sie Entitätsinformationen in das Protokollereignis aufnehmen. In diesem Abschnitt wird beschrieben, wie Entitätsinformationen angegeben werden und wie diese Informationen CloudWatch verarbeitet werden.

Entity-Typen

Wenn in der PutLogEvents Anfrage keine Entität angegeben ist, CloudWatch wird im Inhalt des EMF-Protokolls nach Entitätsinformationen gesucht:

  • Service-type Entitäten

    Pflichtfelder: Service und Environment

  • Resource-type Entitäten

    Pflichtfelder: ResourceType und Identifier

Plattformsattribute

CloudWatch bestimmt automatisch den Plattformtyp auf der Grundlage dieser Attribute:

  • Kubernetes (K8s):

    Erforderlich: K8s.Cluster

    Fakultativ: K8s.NamespaceK8s.Workload,K8s.Node,K8s.Pod,EC2.InstanceId, EC2.AutoScalingGroup

  • Amazon EKS

    Erforderlich: EKS.Cluster

    Fakultativ: K8s.NamespaceK8s.Workload,K8s.Node,K8s.Pod, EC2.InstanceId

  • Amazon ECS:

    Erforderlich: ECS.Cluster

    Fakultativ:ECS.Service, ECS.Task

  • Amazon EC2

    Erforderlich: EC2.InstanceId

    Fakultativ: EC2.AutoScalingGroup

  • Lambda:

    Erforderlich: Lambda.Function

  • Generische Hosts:

    Erforderlich: Host

Beispiel-EMF-Protokollformat

{ "_aws": { "CloudWatchMetrics": [ { "Metrics": [ {"Name": "RequestLatency", "Unit": "Milliseconds"} ], "Namespace": "MyApplication" } ] }, "Service": "PaymentService", "Environment": "Production", "K8s.Cluster": "main-cluster", "K8s.Namespace": "payment-ns", "K8s.Pod": "payment-pod-123", "K8s.Node": "worker-node-1", "K8s.Workload": "payment-deployment", "RequestLatency": 135.5, "timestamp": 1622163600000 }

Generierte Entity

Das obige EMF-Protokoll generiert die folgende Entity:

{ "KeyAttributes": { "Type": "Service", "Name": "PaymentService", "Environment": "Production" }, "Attributes": { "PlatformType": "K8s", "K8s.Cluster": "main-cluster", "K8s.Namespace": "payment-ns", "K8s.Pod": "payment-pod-123", "K8s.Node": "worker-node-1", "K8s.Workload": "payment-deployment" } }

Entity-Verarbeitung

CloudWatch verarbeitet die Entitätsinformationen wie folgt:

  • KeyAttributes:

    • Ermittelt den Entitätstyp anhand der Pflichtfelder

    • Für Service-type, extrahiert Dienstname und Umgebung

    • Diese werden zu den primären Identifikatoren für die Entity

  • Attribute:

    • Sätze, die PlatformType auf den enthaltenen Plattformattributen basieren

    • Umfasst alle relevanten plattformspezifischen Informationen

    • Behält Beziehungskontext für die Telemetriedaten bei

CloudWatch verwendet diese Entitätsinformationen, um Beziehungen zwischen verschiedenen Telemetriedaten herzustellen und ermöglicht so eine verbesserte Beobachtbarkeit und kontextbezogene Analyse Ihrer Anwendungen und Infrastruktur. Weitere Informationen finden Sie unter So fügen Sie der benutzerdefinierten Telemetrie, die an gesendet wurde, zugehörige Informationen hinzu. CloudWatch

Anmerkung

Mithilfe von Entitätsinformationen CloudWatch können Sie sich ein vollständiges Bild der Telemetriedaten Ihrer Anwendung und ihrer Beziehungen innerhalb Ihrer Infrastruktur machen.