Spécifications : format de métrique intégrée - Amazon CloudWatch

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Spécifications : format de métrique intégrée

Le format de métrique CloudWatch intégré est une spécification JSON utilisée pour demander à CloudWatch Logs d'extraire automatiquement les valeurs métriques intégrées dans les événements de journaux structurés. Vous pouvez l'utiliser CloudWatch pour représenter graphiquement et créer des alarmes sur les valeurs métriques extraites. Cette section décrit les conventions de spécification du format métrique intégré et la structure du document du format métrique intégré.

Conventions de spécification de format de métrique intégrée

Les mots clés « DOIT », « NE DOIT PAS », « OBLIGATOIRE », « DOIT », « NE DOIT PAS », « DEVRAIT », « NE PAS », « RECOMMANDÉ », « PEUT » et « FACULTATIF » dans cette spécification de format doivent être interprétés comme décrit dans Mots clés RFC2119.

Les termes « JSON », « texte JSON », « valeur JSON », « membre », « élément », « objet », « tableau », « nombre », « chaîne », « booléen », « vrai », « faux » et « nul » dans cette spécification de format doivent être interprétés tels que définis dans JavaScript Object Notation. RFC8259

Note

Si vous prévoyez de créer des alertes sur des métriques créées à l'aide du format de métrique intégrée, consultez les recommandations de la rubrique Configuration d'alertes sur les métriques créées avec le format de métrique intégrée.

Structure du document au format de métrique intégrée

Cette section décrit la structure d'un document au format de métrique intégrée. Les documents au format métrique intégré sont définis dans JavaScript Object Notation RFC8259.

Sauf indication contraire, les objets définis par la présente spécification NE DOIVENT PAS contenir de membres supplémentaires. Les membres non reconnus par cette spécification DOIVENT être ignorés. Les membres définis dans cette spécification sont sensibles à la casse.

Le format métrique intégré est soumis aux mêmes limites que les événements CloudWatch Logs standard et est limité à une taille maximale de 1 Mo.

Avec le format de métrique intégré, vous pouvez suivre le traitement de vos journaux EMF par des métriques qui sont publiées dans l'espace de nom AWS/Logs de votre compte. Celles-ci peuvent être utilisées pour suivre les échecs de génération de métriques à partir d'EMF, ainsi que pour savoir si les échecs sont dus à l'analyse ou à la validation. Pour plus de détails, voir Surveillance à l'aide de CloudWatch métriques.

Nœud racine

Le LogEvent message DOIT être un objet JSON valide sans données supplémentaires au début ou à la fin de la chaîne de LogEvent message. Pour plus d'informations sur la LogEvent structure, consultez InputLogEvent.

Les documents au format de métrique intégrée DOIVENT contenir le membre de niveau supérieur suivant sur le nœud racine. Il s'agit d'un objet Objet Métadonnées.

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

Le nœud racine DOIT contenir tous les membres Membres cibles définis par les références dans le MetricDirective objet.

Le nœud racine peut contenir tous les autres membres qui ne sont pas inclus dans les exigences ci-dessus. Les valeurs de ces membres DOIVENT être des types JSON valides.

Objet Métadonnées

Le _aws membre peut être utilisé pour représenter les métadonnées relatives à la charge utile qui indiquent aux services en aval comment ils doivent traiter le LogEvent. La valeur DOIT être un objet et DOIT contenir les membres suivants :

  • CloudWatchMetrics— Un tableau de données MetricDirective objet utilisé pour indiquer CloudWatch d'extraire les métriques du nœud racine du LogEvent.

    { "_aws": { "CloudWatchMetrics": [ ... ] } }
  • Timestamp (Horodatage) — Nombre représentant l'horodatage utilisé pour les métriques extraites de l'événement. Les valeurs DOIVENT être exprimées en tant que nombre de millisecondes après le 1er janv. 1970 00:00:00 UTC.

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

MetricDirective objet

L' MetricDirective objet indique aux services en aval qu'ils LogEvent contiennent des métriques qui seront extraites et publiées. CloudWatch MetricDirectives DOIT contenir les membres suivants :

  • Namespace — Chaîne représentant l'espace de CloudWatch noms de la métrique.

  • DimensionsDimensionSet réseau.

  • Metrics (Métriques) — Tableau d'objets MetricDefinition. Ce tableau NE DOIT PAS contenir plus de 100 MetricDefinition objets.

DimensionSet réseau

A DimensionSet est un tableau de chaînes contenant les clés de dimension qui seront appliquées à toutes les métriques du document. Les valeurs de ce tableau DOIVENT également être des membres sur le nœud racine (appelé ) Membres cibles

A NE DimensionSet DOIT PAS contenir plus de 30 clés de dimension. A DimensionSet PEUT être vide.

Le membre cible DOIT avoir une valeur de chaîne. Cette valeur NE DOIT PAS contenir plus de 1024 caractères. Le membre cible définit une dimension qui sera publiée dans le cadre de l'identité de métrique. Chaque DimensionSet utilisateur crée une nouvelle métrique dans CloudWatch. Pour obtenir de plus amples informations sur les dimensions, veuillez consulter Dimension et Dimensions.

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

Soyez prudent lorsque vous configurez votre extraction de métriques car cela affecte votre utilisation de métriques personnalisées et la facture correspondante. Si vous créez involontairement des métriques basées sur des dimensions à cardinalité élevée (telles que requestId), le format de métrique intégrée créera par définition une métrique personnalisée correspondant à chaque combinaison de dimensions unique. Pour de plus amples informations, veuillez consulter Dimensions.

MetricDefinition objet

A MetricDefinition est un objet qui DOIT contenir le membre suivant :

Un MetricDefinition objet PEUT contenir les membres suivants :

  • Unit (Unitéà — Valeur de chaîne FACULTATIVE représentant l'unité de mesure pour la métrique correspondante. Les valeurs DEVRAIENT être des unités CloudWatch métriques valides. Pour plus d'informations sur les unités valides, consultez MetricDatum. Si aucune valeur n'est fournie, la valeur par défaut NONE est supposée.

  • StorageResolution— Une valeur entière FACULTATIVE représentant la résolution de stockage pour la métrique correspondante. Si cette valeur est définie sur 1, cette métrique est une métrique haute résolution, de sorte que la métrique est CloudWatch stockée avec une résolution inférieure à la minute inférieure à une seconde. Si vous définissez cette valeur sur 60, cette métrique est une résolution standard, qui est CloudWatch stockée à une résolution d'une minute. Les valeurs DEVRAIENT être des résolutions valides CloudWatch prises en charge, 1 ou 60. Si aucune valeur n'est fournie, la valeur par défaut 60 est choisie.

    Pour plus d'informations sur les métriques haute résolution, consultez Métriques haute résolution.

Note

Si vous prévoyez de créer des alertes sur des métriques créées à l'aide du format de métrique intégrée, consultez les recommandations de la rubrique Configuration d'alertes sur les métriques créées avec le format de métrique intégrée.

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

Valeurs de référence

Les valeurs de référence sont des valeurs de chaîne qui font référence aux membres Membres cibles sur le nœud racine. Ces références ne doivent PAS être confondues avec les pointeurs JSON décrits dans RFC6901. Les valeurs cibles ne peuvent pas être imbriquées.

Membres cibles

Les cibles valides DOIVENT être des membres sur le nœud racine et ne peuvent pas être des objets imbriqués. Par exemple, une valeur _reference_ de "A.a" DOIT correspondre au membre suivant :

{ "A.a" }

Elle NE DOIT PAS correspondre au membre imbriqué :

{ "A": { "a" } }

Les valeurs valides des membres cibles dépendent de ce qui les référence. Une cible de métrique DOIT être une valeur numérique ou un tableau de valeurs numériques. Les cibles de métriques de tableau numérique NE DOIVENT PAS avoir plus de 100 membres. Une cible de dimension DOIT avoir une valeur de chaîne.

Exemple de format de métrique intégrée et schéma JSON

Voici un exemple valide de format de métrique intégré.

{ "_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" }

Vous pouvez utiliser le schéma suivant pour valider les documents au format de métrique intégré.

{ "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 ] } } } } } } } } } } }

Informations sur l'entité au format EMF

Lorsque vous publiez des journaux sur Amazon à CloudWatch l'aide du format EMF (Embedded Metric Format), vous pouvez inclure des informations sur les entités dans l'événement du journal. Cette section décrit comment spécifier les informations d'entité et comment CloudWatch traiter ces informations.

Types d'entités

Lorsqu'aucune entité n'est spécifiée dans la PutLogEvents demande, les informations relatives à l'entité CloudWatch seront recherchées dans le contenu du journal EMF :

  • Entités de type service

    Champs obligatoires : Service et Environment

  • Entités de type ressource

    Champs obligatoires : ResourceType et Identifier

Attributs de plateforme

CloudWatch détermine automatiquement le type de plateforme en fonction de ces attributs :

  • Kubernetes (K8s) :

    Nécessaire : K8s.Cluster

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

  • Amazon EKS

    Nécessaire : EKS.Cluster

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

  • Amazon ECS :

    Nécessaire : ECS.Cluster

    Facultatif :ECS.Service, ECS.Task

  • Amazon EC2

    Nécessaire : EC2.InstanceId

    Facultatif : EC2.AutoScalingGroup

  • Lambda :

    Nécessaire : Lambda.Function

  • Hôtes génériques :

    Nécessaire : Host

Exemple de format de journal EMF

{ "_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 }

Entité générée

Le journal EMF ci-dessus générera l'entité suivante :

{ "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" } }

Traitement des entités

CloudWatch traite les informations de l'entité comme suit :

  • KeyAttributes:

    • Détermine le type d'entité en fonction des champs obligatoires

    • Pour le type de service, extrait le nom du service et l'environnement

    • Ils deviennent les principaux identifiants de l'entité

  • Attributs :

    • Ensembles PlatformType basés sur les attributs de plate-forme inclus

    • Inclut toutes les informations pertinentes spécifiques à la plateforme

    • Maintient le contexte relationnel pour les données de télémétrie

CloudWatch utilise ces informations d'entité pour établir des relations entre différents éléments de données de télémétrie, permettant ainsi une meilleure observabilité et une analyse contextuelle de vos applications et de votre infrastructure. Pour plus d'informations, consultez Comment ajouter des informations associées à la télémétrie personnalisée envoyée à. CloudWatch

Note

Les informations sur les entités permettent de CloudWatch créer une image complète des données de télémétrie de votre application et de leurs relations au sein de votre infrastructure.