

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.

# Utiliser les flux de métriques
<a name="CloudWatch-Metric-Streams"></a>

Vous pouvez utiliser les *flux métriques* pour diffuser en continu CloudWatch les métriques vers la destination de votre choix, avec une near-real-time diffusion et une faible latence. Les destinations prises en charge incluent des AWS destinations telles qu'Amazon Simple Storage Service et plusieurs destinations de fournisseurs de services tiers.

Il existe trois principaux scénarios d'utilisation des flux CloudWatch métriques :
+ **Configuration personnalisée avec Firehose** : créez un flux de métriques et dirigez-le vers un flux de diffusion Amazon Data Firehose qui transmet vos CloudWatch métriques là où vous le souhaitez. Vous pouvez les diffuser vers un lac de données tel qu’Amazon S3, ou vers n’importe quelle destination ou point de terminaison pris en charge par Firehose, y compris des fournisseurs tiers. Les formats JSON, OpenTelemetry 1.0.0 et OpenTelemetry 0.7.0 sont pris en charge de manière native, ou vous pouvez configurer des transformations dans votre flux de diffusion Firehose pour convertir les données dans un autre format tel que Parquet. Avec un flux de mesures, vous pouvez continuellement mettre à jour les données de surveillance ou combiner ces données CloudWatch métriques avec des données de facturation et de performance pour créer des ensembles de données riches. Vous pouvez ensuite utiliser des outils tels qu'Amazon Athena pour obtenir des informations sur l'optimisation des coûts, les performances des ressources et l'utilisation des ressources.
+ **Configuration rapide de S3** : diffusez vers Amazon Simple Storage Service grâce à un processus de configuration rapide. Par défaut, CloudWatch crée les ressources nécessaires au flux. Les formats JSON, OpenTelemetry 1.0.0 et OpenTelemetry 0.7.0 sont pris en charge.
+ **Configuration rapide des AWS partenaires** : CloudWatch fournit une expérience de configuration rapide à certains partenaires tiers. Vous pouvez faire appel à des fournisseurs de services tiers pour surveiller, dépanner et analyser vos applications à l'aide des données diffusées CloudWatch en continu. Lorsque vous utilisez le flux de travail de configuration rapide des partenaires, vous devez uniquement fournir une URL de destination et une clé d'API pour votre destination, et vous CloudWatch vous occupez du reste de la configuration. La configuration rapide de partenaire est disponible pour les fournisseurs tiers suivants : 

  
  + Datadog
  + Dynatrace
  + Elasticité
  + New Relic
  + Splunk Observability Cloud
  + SumoLogic

Vous pouvez diffuser toutes vos CloudWatch statistiques ou utiliser des filtres pour diffuser uniquement des mesures spécifiques. Chaque flux de métriques peut inclure jusqu'à 1 000 filtres qui incluent ou excluent des espaces de noms de métriques ou des métriques spécifiques. Un flux de métriques unique ne peut avoir que des filtres d'inclusion ou d'exclusion, mais pas les deux.

Une fois qu'un flux de métriques est créé, si de nouvelles métriques sont créées qui correspondent aux filtres en place, les nouvelles métriques sont automatiquement incluses dans le flux.

Il n'y a aucune limite sur le nombre de flux de métriques par compte ou par région, ni sur le nombre de mises à jour de métriques diffusées en continu.

Chaque flux peut utiliser le format JSON, OpenTelemetry 1.0.0 ou OpenTelemetry 0.7.0. Vous pouvez modifier le format de sortie d'un flux métrique à tout moment, par exemple pour passer de la OpenTelemetry version 0.7.0 à la version OpenTelemetry 1.0.0. Pour plus d’informations sur les formats de sortie, consultez [CloudWatch sortie de flux métrique au format JSON](CloudWatch-metric-streams-formats-json.md), [CloudWatch sortie de flux métrique au format OpenTelemetry 1.0.0](CloudWatch-metric-streams-formats-opentelemetry-100.md), et [CloudWatch sortie de flux métrique au format OpenTelemetry 0.7.0](CloudWatch-metric-streams-formats-opentelemetry.md).

Pour les flux de métriques sur les comptes de surveillance, vous pouvez choisir d'inclure ou non les métriques provenant des comptes sources liés à ce compte de surveillance. Pour de plus amples informations, veuillez consulter [CloudWatch observabilité entre comptes](CloudWatch-Unified-Cross-Account.md).

Les flux de métriques incluent toujours les statistiques `Minimum`, `Maximum`, `SampleCount` et `Sum`. Vous pouvez également choisir d'inclure des statistiques supplémentaires moyennant des frais supplémentaires. Pour de plus amples informations, veuillez consulter [Statistiques pouvant être diffusées](CloudWatch-metric-streams-statistics.md). 

La tarification des flux de métriques est basée sur le nombre de mises à jour de métrique. Vous êtes également facturé par Firehose pour le flux de diffusion utilisé pour le flux métrique. Pour plus d'informations, consultez [Amazon CloudWatch Pricing](https://aws.amazon.com/cloudwatch/pricing/).

**Topics**
+ [Configurer un flux de métriques](CloudWatch-metric-streams-setup.md)
+ [Statistiques pouvant être diffusées](CloudWatch-metric-streams-statistics.md)
+ [Exploitation et entretien des flux métriques](CloudWatch-metric-streams-operation.md)
+ [Surveillance de vos flux de mesures à l'aide de CloudWatch métriques](CloudWatch-metric-streams-monitoring.md)
+ [Confiance entre Firehose CloudWatch et Firehose](CloudWatch-metric-streams-trustpolicy.md)
+ [CloudWatch sortie de flux métrique au format JSON](CloudWatch-metric-streams-formats-json.md)
+ [CloudWatch sortie de flux métrique au format OpenTelemetry 1.0.0](CloudWatch-metric-streams-formats-opentelemetry-100.md)
+ [CloudWatch sortie de flux métrique au format OpenTelemetry 0.7.0](CloudWatch-metric-streams-formats-opentelemetry.md)
+ [Résolution des problèmes liés aux flux métriques dans CloudWatch](CloudWatch-metric-streams-troubleshoot.md)

# Configurer un flux de métriques
<a name="CloudWatch-metric-streams-setup"></a>

Suivez les étapes décrites dans les sections suivantes pour configurer un flux CloudWatch métrique.

Après la création d’un flux de métriques, le temps nécessaire pour que les données métriques apparaissent à la destination dépend des paramètres de mise en mémoire tampon configurés sur le flux de diffusion Firehose. La mise en mémoire tampon est exprimée en taille maximale de la charge utile ou en temps d'attente maximal, selon la première des deux valeurs atteintes. Si celles-ci sont définies sur les valeurs minimales (60 secondes, 1 Mo), la latence attendue est de 3 minutes si les CloudWatch espaces de noms sélectionnés ont des mises à jour métriques actives.

Dans un flux CloudWatch métrique, les données sont envoyées toutes les minutes. Les données peuvent arriver à la destination finale en panne. Toutes les métriques spécifiées dans les espaces de noms spécifiés sont envoyées dans le flux de métriques, à l’exception des métriques dont l’horodatage date de plus de deux jours. 

Pour chaque combinaison de nom de la métrique et d'espace de noms que vous diffusez, toutes les combinaisons de dimensions de ce nom de la métrique et de cet espace de noms sont diffusées.

Pour les flux de métriques sur les comptes de surveillance, vous pouvez choisir d'inclure ou non les métriques provenant des comptes sources liés à ce compte de surveillance. Pour de plus amples informations, veuillez consulter [CloudWatch observabilité entre comptes](CloudWatch-Unified-Cross-Account.md).

Pour créer et gérer des flux de mesures, vous devez être connecté à un compte disposant de la **CloudWatchFullAccess**politique et de l'`iam:PassRole`autorisation, ou à un compte disposant de la liste d'autorisations suivante :
+ `iam:PassRole`
+ `cloudwatch:PutMetricStream`
+ `cloudwatch:DeleteMetricStream`
+ `cloudwatch:GetMetricStream`
+ `cloudwatch:ListMetricStreams`
+ `cloudwatch:StartMetricStreams`
+ `cloudwatch:StopMetricStreams`

Si vous voulez avoir CloudWatch configuré le rôle IAM nécessaire pour les flux métriques, vous devez également disposer des `iam:PutRolePolicy` autorisations `iam:CreateRole` et.

**Important**  
Un utilisateur disposant du `cloudwatch:PutMetricStream` a accès aux données CloudWatch métriques diffusées, même s'il n'en a pas l'`cloudwatch:GetMetricData`autorisation.

**Topics**
+ [Configuration personnalisée avec Firehose](CloudWatch-metric-streams-setup-datalake.md)
+ [Utiliser la configuration rapide d'Amazon S3](CloudWatch-metric-streams-setup-Quick-S3.md)
+ [Configuration rapide de partenaire](CloudWatch-metric-streams-QuickPartner.md)

# Configuration personnalisée avec Firehose
<a name="CloudWatch-metric-streams-setup-datalake"></a>

Utilisez cette méthode pour créer un flux de mesures et le diriger vers un flux de diffusion Amazon Data Firehose qui transmet vos CloudWatch métriques là où vous le souhaitez. Vous pouvez les diffuser vers un lac de données tel qu’Amazon S3, ou vers n’importe quelle destination ou point de terminaison pris en charge par Firehose, y compris des fournisseurs tiers.

Les formats JSON, OpenTelemetry 1.0.0 et OpenTelemetry 0.7.0 sont pris en charge de manière native, ou vous pouvez configurer des transformations dans votre flux de diffusion Firehose pour convertir les données dans un autre format tel que Parquet. Avec un flux de mesures, vous pouvez continuellement mettre à jour les données de surveillance ou combiner ces données CloudWatch métriques avec des données de facturation et de performance pour créer des ensembles de données riches. Vous pouvez ensuite utiliser des outils tels qu'Amazon Athena pour obtenir des informations sur l'optimisation des coûts, les performances des ressources et l'utilisation des ressources.

Vous pouvez utiliser la CloudWatch console, le AWS CLI AWS CloudFormation, ou le AWS Cloud Development Kit (AWS CDK) pour configurer un flux métrique.

Le flux de diffusion Firehose que vous utilisez pour votre flux de métriques doit se trouver dans le même compte et la même région où vous avez configuré le flux de métriques. Pour obtenir une fonctionnalité interrégionale, vous pouvez configurer le flux de diffusion Firehose pour qu’il diffuse vers une destination finale qui se trouve dans un autre compte ou une autre région.

## CloudWatch console
<a name="CloudWatch-metric-streams-setup-datalake-console"></a>

Cette section décrit comment utiliser la CloudWatch console pour configurer un flux métrique à l'aide de Firehose.

**Pour configurer un flux de métriques personnalisé à l’aide de Firehose**

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans le panneau de navigation, choisissez **Metrics** (Métriques), **Streams** (Flux). Choisissez ensuite **Create metric stream** (Créer un flux de métriques).

1. (Facultatif) Si vous êtes connecté à un compte configuré en tant que compte de surveillance dans le cadre de l'observabilité CloudWatch entre comptes, vous pouvez choisir d'inclure ou non les métriques des comptes sources liés dans ce flux de métriques. Pour inclure les métriques des comptes sources, choisissez **Include source account metrics** (Inclure les métriques des comptes sources).

1. Choisissez **Configuration personnalisée avec Firehose**.

1. Pour **Sélectionner votre flux Kinesis Data Firehose**, sélectionnez le flux de diffusion Firehose à utiliser. Il doit se trouver dans le même compte. Le format par défaut de cette option est OpenTelemetry 0.7.0, mais vous pourrez le modifier ultérieurement au cours de cette procédure.

   Sélectionnez ensuite le flux de diffusion Firehose à utiliser sous **Sélectionner votre flux Firehose**.

1. (Facultatif) Vous pouvez choisir **Sélectionner un rôle de service existant** pour utiliser un rôle IAM existant au lieu d'en CloudWatch créer un nouveau pour vous.

1. (Facultatif) Pour modifier le format de sortie par défaut de votre scénario, choisissez **Change output format (Modifier le format de sortie)**. Les formats pris en charge sont JSON, OpenTelemetry 1.0.0 et OpenTelemetry 0.7.0.

1. Pour **Métriques à diffuser**, choisissez soit **Toutes les métriques**, soit **Sélectionner les métriques**.

   Si vous choisissez **Toutes les métriques**, toutes les métriques de ce compte seront incluses dans le flux.

   Considérez attentivement s'il faut diffuser toutes les métriques, car plus vous diffusez de métriques, plus vos frais de flux de métriques seront élevés.

   Si vous choisissez **Sélectionner les métriques**, effectuez l’une des opérations suivantes :
   + Pour diffuser la plupart des espaces de noms de métriques, choisissez **Exclure** et sélectionnez les espaces de noms ou les métriques à exclure. Lorsque vous spécifiez un espace de noms dans **Exclure**, vous pouvez sélectionner certaines métriques spécifiques de cet espace de noms à exclure. Si vous choisissez d’exclure un espace de noms, mais que vous ne sélectionnez pas de métriques dans cet espace de noms, toutes les métriques de cet espace de noms sont exclues.
   + Pour inclure uniquement quelques espaces de noms ou métriques dans le flux de métriques, choisissez **Inclure**, puis sélectionnez les espaces de noms ou les métriques à inclure. Si vous choisissez d’inclure un espace de noms, mais que vous ne sélectionnez pas ensuite les métriques de cet espace de noms, toutes les métriques de cet espace de noms sont incluses.

1. (Facultatif) Pour diffuser des statistiques supplémentaires pour certaines de ces mesures au-delà du minimum, du maximum et de la somme, sélectionnez **Ajouter des statistiques supplémentaires**. SampleCount Choisissez soit **Add recommended metrics** (Ajouter des métriques recommandées) pour ajouter des statistiques couramment utilisées, ou sélectionnez manuellement l'espace de noms et le nom de la métrique pour lesquels diffuser des statistiques supplémentaires. Ensuite, sélectionnez les statistiques supplémentaires à diffuser.

   Pour ensuite choisir un autre groupe de métriques pour lequel diffuser un autre ensemble de statistiques supplémentaires, choisissez **Add additional statistics** (Ajouter des statistiques supplémentaires). Chaque métrique peut inclure jusqu'à 20 statistiques supplémentaires, et jusqu'à 100 métriques dans un flux de métriques peuvent inclure des statistiques supplémentaires.

   Le streaming de statistiques supplémentaires entraîne des frais supplémentaires. Pour de plus amples informations, veuillez consulter [Statistiques pouvant être diffusées](CloudWatch-metric-streams-statistics.md).

   Pour obtenir des définitions des statistiques supplémentaires, veuillez consulter [CloudWatch définitions des statistiques](Statistics-definitions.md).

1. (Facultatif) Personnalisez le nom du nouveau flux de métriques sous **Metric stream name (Nom du flux de métriques)**.

1. Choisissez **Create metric stream (Créer un filtre de métriques)**.

## AWS CLI ou AWS API
<a name="CloudWatch-metric-streams-setup-datalake-CLI"></a>

Suivez les étapes ci-dessous pour créer un flux CloudWatch métrique.

**Pour utiliser l' AWS API AWS CLI or pour créer un flux métrique**

1. Si vous diffusez en continu sur Amazon S3, créez d'abord le compartiment. Pour de plus amples informations, veuillez consulter [Créer un compartiment dans](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html).

1. Créez le flux de diffusion Firehose. Pour plus d’informations, consultez [Création d’un flux Firehose](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html).

1. Créez un rôle IAM qui permet d' CloudWatch écrire dans le flux de diffusion Firehose. Pour plus d'informations sur le contenu de ce rôle, consultez [Confiance entre Firehose CloudWatch et Firehose](CloudWatch-metric-streams-trustpolicy.md).

1. Utilisez la commande `aws cloudwatch put-metric-stream` CLI ou l'`PutMetricStream`API pour créer le flux CloudWatch métrique.

## AWS CloudFormation
<a name="CloudWatch-metric-streams-setup-datalake-CFN"></a>

Vous pouvez l' CloudFormation utiliser pour configurer un flux métrique. Pour de plus amples informations, veuillez consulter [ AWS::CloudWatch::MetricStream](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-metricstream.html).

**À utiliser CloudFormation pour créer un flux métrique**

1. Si vous diffusez en continu sur Amazon S3, créez d'abord le compartiment. Pour de plus amples informations, veuillez consulter [Créer un compartiment dans](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html).

1. Créez le flux de diffusion Firehose. Pour plus d’informations, consultez [Création d’un flux Firehose](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html).

1. Créez un rôle IAM qui permet d' CloudWatch écrire dans le flux de diffusion Firehose. Pour plus d'informations sur le contenu de ce rôle, consultez [Confiance entre Firehose CloudWatch et Firehose](CloudWatch-metric-streams-trustpolicy.md).

1. Créez le stream dans CloudFormation. Pour plus d'informations, consultez [ AWS::CloudWatch::MetricStream](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-metricstream.html).

## AWS Cloud Development Kit (AWS CDK)
<a name="CloudWatch-metric-streams-setup-datalake-CDK"></a>

Vous pouvez l' AWS Cloud Development Kit (AWS CDK) utiliser pour configurer un flux métrique. 

**Pour utiliser le AWS CDK pour créer un flux métrique**

1. Si vous diffusez en continu sur Amazon S3, créez d'abord le compartiment. Pour de plus amples informations, veuillez consulter [Créer un compartiment dans](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html).

1. Créez le flux de diffusion Firehose. Pour plus d’informations, consultez [Création d’un flux de diffusion Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html).

1. Créez un rôle IAM qui permet d' CloudWatch écrire dans le flux de diffusion Firehose. Pour plus d'informations sur le contenu de ce rôle, consultez [Confiance entre Firehose CloudWatch et Firehose](CloudWatch-metric-streams-trustpolicy.md).

1. Créez le flux de métriques. La ressource du flux métrique est disponible AWS CDK sous la forme d'une construction de niveau 1 (L1) nommée`CfnMetricStream`. Pour de plus amples informations, consultez [Utilisation des constructions L1](https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_l1_using.html).

# Utiliser la configuration rapide d'Amazon S3
<a name="CloudWatch-metric-streams-setup-Quick-S3"></a>

La méthode **Quick S3 Setup** fonctionne bien si vous souhaitez configurer rapidement un flux vers Amazon S3 et si vous n'avez besoin d'aucune transformation de mise en forme autre que les formats JSON, OpenTelemetry 1.0.0 et OpenTelemetry 0.7.0 pris en charge. CloudWatch créera toutes les ressources nécessaires, y compris le flux de diffusion Firehose et les rôles IAM nécessaires. Le format par défaut de cette option est JSON, mais vous pouvez le modifier lors de la configuration du flux.

Par contre, si vous souhaitez que le format final soit le format Parquet ou Optimized Row Columnar (ORC), il convient de suivre les étapes décrites dans [Configuration personnalisée avec Firehose](CloudWatch-metric-streams-setup-datalake.md).

## CloudWatch console
<a name="CloudWatch-metric-streams-setup-quick-S3-console"></a>

Cette section décrit comment utiliser la CloudWatch console pour configurer un flux métrique Amazon S3 à l'aide de la configuration rapide de S3.

**Pour configurer un flux de métriques à l'aide de la Configuration rapide de S3**

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans le panneau de navigation, choisissez **Metrics** (Métriques), **Streams** (Flux). Choisissez ensuite **Create metric stream** (Créer un flux de métriques).

1. (Facultatif) Si vous êtes connecté à un compte configuré en tant que compte de surveillance dans le cadre de l'observabilité CloudWatch entre comptes, vous pouvez choisir d'inclure ou non les métriques des comptes sources liés dans ce flux de métriques. Pour inclure les métriques des comptes sources, choisissez **Include source account metrics** (Inclure les métriques des comptes sources).

1. Choisissez **Quick S3 setup**. CloudWatch créera toutes les ressources nécessaires, y compris le flux de diffusion Firehose et les rôles IAM nécessaires. Le format par défaut de cette option est JSON, mais vous pouvez le modifier ultérieurement dans cette procédure.

1. (Facultatif) Choisissez **Sélectionner les ressources existantes** pour utiliser un compartiment S3 existant ou des rôles IAM existants au lieu d'en CloudWatch créer de nouveaux pour vous.

1. (Facultatif) Pour modifier le format de sortie par défaut de votre scénario, choisissez **Change output format (Modifier le format de sortie)**. Les formats pris en charge sont JSON, OpenTelemetry 1.0.0 et OpenTelemetry 0.7.0.

1. Pour **Métriques à diffuser**, choisissez soit **Toutes les métriques**, soit **Sélectionner les métriques**.

   Si vous choisissez **Toutes les métriques**, toutes les métriques de ce compte seront incluses dans le flux.

   Considérez attentivement s'il faut diffuser toutes les métriques, car plus vous diffusez de métriques, plus vos frais de flux de métriques seront élevés.

   Si vous choisissez **Sélectionner les métriques**, effectuez l’une des opérations suivantes :
   + Pour diffuser la plupart des espaces de noms de métriques, choisissez **Exclure** et sélectionnez les espaces de noms ou les métriques à exclure. Lorsque vous spécifiez un espace de noms dans **Exclure**, vous pouvez sélectionner certaines métriques spécifiques de cet espace de noms à exclure. Si vous choisissez d’exclure un espace de noms, mais que vous ne sélectionnez pas de métriques dans cet espace de noms, toutes les métriques de cet espace de noms sont exclues.
   + Pour inclure uniquement quelques espaces de noms ou métriques dans le flux de métriques, choisissez **Inclure**, puis sélectionnez les espaces de noms ou les métriques à inclure. Si vous choisissez d’inclure un espace de noms, mais que vous ne sélectionnez pas ensuite les métriques de cet espace de noms, toutes les métriques de cet espace de noms sont incluses.

1. (Facultatif) Pour diffuser des statistiques supplémentaires pour certaines de ces mesures au-delà du minimum, du maximum et de la somme, sélectionnez **Ajouter des statistiques supplémentaires**. SampleCount Choisissez soit **Add recommended metrics** (Ajouter des métriques recommandées) pour ajouter des statistiques couramment utilisées, ou sélectionnez manuellement l'espace de noms et le nom de la métrique pour lesquels diffuser des statistiques supplémentaires. Ensuite, sélectionnez les statistiques supplémentaires à diffuser.

   Pour ensuite choisir un autre groupe de métriques pour lequel diffuser un autre ensemble de statistiques supplémentaires, choisissez **Add additional statistics** (Ajouter des statistiques supplémentaires). Chaque métrique peut inclure jusqu'à 20 statistiques supplémentaires, et jusqu'à 100 métriques dans un flux de métriques peuvent inclure des statistiques supplémentaires.

   Le streaming de statistiques supplémentaires entraîne des frais supplémentaires. Pour de plus amples informations, veuillez consulter [Statistiques pouvant être diffusées](CloudWatch-metric-streams-statistics.md).

   Pour obtenir des définitions des statistiques supplémentaires, veuillez consulter [CloudWatch définitions des statistiques](Statistics-definitions.md).

1. (Facultatif) Personnalisez le nom du nouveau flux de métriques sous **Metric stream name (Nom du flux de métriques)**.

1. Choisissez **Create metric stream (Créer un filtre de métriques)**.

# Configuration rapide de partenaire
<a name="CloudWatch-metric-streams-QuickPartner"></a>

CloudWatch fournit une expérience de configuration rapide aux partenaires tiers suivants. Pour utiliser ce flux de travail, vous devez uniquement fournir une URL de destination et une clé d'API pour votre destination. CloudWatch gère le reste de la configuration, y compris la création du flux de diffusion Firehose et des rôles IAM nécessaires.

**Important**  
Avant d'utiliser la configuration rapide de partenaire pour créer un flux de métriques, nous vous recommandons vivement de lire la documentation de ce partenaire, dont le lien figure dans la liste suivante.
+ [Datadog](https://docs.datadoghq.com/integrations/guide/aws-cloudwatch-metric-streams-with-kinesis-data-firehose/)
+ [Dynatrace](https://www.dynatrace.com/support/help/dynatrace-api/basics/dynatrace-api-authentication)
+ [Elasticité](https://www.elastic.co/docs/current/integrations/awsfirehose)
+ [New Relic](https://docs.newrelic.com/install/aws-cloudwatch/)
+ [Splunk Observability Cloud](https://docs.splunk.com/observability/en/gdi/get-data-in/connect/aws/aws-console-ms.html)
+ [SumoLogic](https://www.sumologic.com)

Lorsque vous configurez un flux métrique pour l'un de ces partenaires, le flux est créé avec certains paramètres par défaut, comme indiqué dans les sections suivantes.

**Topics**
+ [Configurer un flux de métriques à l'aide de la configuration rapide de partenaire](#CloudWatch-metric-streams-QuickPartner-setup)
+ [Valeurs par défaut du flux Datadog](#CloudWatch-metric-streams-QuickPartner-Datadog)
+ [Paramètres par défaut du flux Dynatrace](#CloudWatch-metric-streams-QuickPartner-Dynatrace)
+ [Valeurs par défaut des flux Elastic](#CloudWatch-metric-streams-QuickPartner-Elastic)
+ [Paramètres par défaut du fluc New Relic](#CloudWatch-metric-streams-QuickPartner-NewRelic)
+ [Paramètres par défaut du flux Splunk Observability Cloud](#CloudWatch-metric-streams-QuickPartner-Splunk)
+ [Paramètres par défaut du flux Sumo Logic](#CloudWatch-metric-streams-QuickPartner-Sumologic)

## Configurer un flux de métriques à l'aide de la configuration rapide de partenaire
<a name="CloudWatch-metric-streams-QuickPartner-setup"></a>

CloudWatch fournit une option de configuration rapide pour certains partenaires tiers. Avant d'exécuter la procédure indiquée dans cette section, vous devez satisfaire à certaines exigences du partenaire. Ces informations peuvent inclure une URL de destination ou and/or une clé d'API pour la destination de votre partenaire. Vous devriez également lire la documentation sur le site Web du partenaire dont le lien figure dans la section précédente, ainsi que les paramètres par défaut pour ce partenaire répertoriés dans les sections suivantes.

Pour diffuser un flux vers une destination tierce non prise en charge par la configuration rapide, vous pouvez suivre les instructions de Suivez les instructions de [Configuration personnalisée avec Firehose](CloudWatch-metric-streams-setup-datalake.md) pour configurer un flux à l’aide de Firehose, puis envoyez ces métriques de Firehose vers la destination finale.

**Pour utiliser la configuration rapide de partenaire afin de créer un flux de métriques destiné à un fournisseur tiers**

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans le panneau de navigation, choisissez **Metrics** (Métriques), **Streams** (Flux). Choisissez ensuite **Create metric stream** (Créer un flux de métriques).

1. (Facultatif) Si vous êtes connecté à un compte configuré en tant que compte de surveillance dans le cadre de l'observabilité CloudWatch entre comptes, vous pouvez choisir d'inclure ou non les métriques des comptes sources liés dans ce flux de métriques. Pour inclure les métriques des comptes sources, choisissez **Include source account metrics** (Inclure les métriques des comptes sources).

1. Choisir **Configuration rapide du partenaire Amazon Web Services**

1. Sélectionnez le nom du partenaire vers lequel vous souhaitez diffuser les métriques.

1. Pour l'**URL du point de terminaison**, saisissez l'URL de destination.

1. Pour la **clé d'accès** ou la **clé d'API**, saisissez la clé d'accès du partenaire. Une clé d'accès n'est pas exigée pour tous les partenaires.

1. Pour **Métriques à diffuser**, choisissez soit **Toutes les métriques**, soit **Sélectionner les métriques**.

   Si vous choisissez **Toutes les métriques**, toutes les métriques de ce compte seront incluses dans le flux.

   Considérez attentivement s'il faut diffuser toutes les métriques, car plus vous diffusez de métriques, plus vos frais de flux de métriques seront élevés.

   Si vous choisissez **Sélectionner les métriques**, effectuez l’une des opérations suivantes :
   + Pour diffuser la plupart des espaces de noms de métriques, choisissez **Exclure** et sélectionnez les espaces de noms ou les métriques à exclure. Lorsque vous spécifiez un espace de noms dans **Exclure**, vous pouvez sélectionner certaines métriques spécifiques de cet espace de noms à exclure. Si vous choisissez d’exclure un espace de noms, mais que vous ne sélectionnez pas de métriques dans cet espace de noms, toutes les métriques de cet espace de noms sont exclues.
   + Pour inclure uniquement quelques espaces de noms ou métriques dans le flux de métriques, choisissez **Inclure**, puis sélectionnez les espaces de noms ou les métriques à inclure. Si vous choisissez d’inclure un espace de noms, mais que vous ne sélectionnez pas ensuite les métriques de cet espace de noms, toutes les métriques de cet espace de noms sont incluses.

1. (Facultatif) Pour diffuser des statistiques supplémentaires pour certaines de ces mesures au-delà du minimum, du maximum et de la somme, sélectionnez **Ajouter des statistiques supplémentaires**. SampleCount Choisissez soit **Add recommended metrics** (Ajouter des métriques recommandées) pour ajouter des statistiques couramment utilisées, ou sélectionnez manuellement l'espace de noms et le nom de la métrique pour lesquels diffuser des statistiques supplémentaires. Ensuite, sélectionnez les statistiques supplémentaires à diffuser.

   Pour ensuite choisir un autre groupe de métriques pour lequel diffuser un autre ensemble de statistiques supplémentaires, choisissez **Add additional statistics** (Ajouter des statistiques supplémentaires). Chaque métrique peut inclure jusqu'à 20 statistiques supplémentaires, et jusqu'à 100 métriques dans un flux de métriques peuvent inclure des statistiques supplémentaires.

   Le streaming de statistiques supplémentaires entraîne des frais supplémentaires. Pour de plus amples informations, veuillez consulter [Statistiques pouvant être diffusées](CloudWatch-metric-streams-statistics.md).

   Pour obtenir des définitions des statistiques supplémentaires, veuillez consulter [CloudWatch définitions des statistiques](Statistics-definitions.md).

1. (Facultatif) Personnalisez le nom du nouveau flux de métriques sous **Metric stream name (Nom du flux de métriques)**.

1. Choisissez **Create metric stream (Créer un filtre de métriques)**.

## Valeurs par défaut du flux Datadog
<a name="CloudWatch-metric-streams-QuickPartner-Datadog"></a>

Les flux de configuration rapide de partenaire vers Datadog utilisent les valeurs par défaut suivantes :
+ **Format de sortie :** OpenTelemetry 0.7.0
+ **Encodage du contenu du flux Firehose** GZIP
+ **Options de mise en mémoire tampon des flux Firehose** Intervalle de 60 secondes, taille de 4 MBs
+ **Option de réessai du flux Firehose** Durée de 60 secondes

Lorsque vous utilisez la configuration rapide de partenaire pour créer un flux de métriques vers Datadog et que vous diffusez certaines métriques, celles-ci incluent par défaut des statistiques supplémentaires. La diffusion de statistiques supplémentaires entraîne des frais supplémentaires. Pour plus d'informations sur les statistiques et leurs frais, veuillez consulter [Statistiques pouvant être diffusées](CloudWatch-metric-streams-statistics.md).

La liste suivante indique les métriques pour lesquelles des statistiques supplémentaires sont diffusées par défaut, si vous choisissez de diffuser ces statistiques. Vous pouvez choisir de désélectionner ces statistiques supplémentaires avant de démarrer le flux.
+ **`Duration` dans `AWS/Lambda` :** p50, p80, p95, p99, p99.9
+ **`PostRuntimeExtensionDuration` dans `AWS/Lambda` :** p50, p99
+ **`FirstByteLatency` et `TotalRequestLatency` dans `AWS/S3` :** p50, p90, p95, p99, p99.9
+ **`ResponseLatency` dans `AWS/Polly` et `TargetResponseTime` dans AWS/ApplicationELB :** p50, p90, p95, p99
+ **`Latency` et `IntegrationLatency` dans `AWS/ApiGateway` :** p90, p95, p99
+ **`Latency` et `TargetResponseTime` dans `AWS/ELB` :** p95, p99
+ **`RequestLatency` dans `AWS/AppRunner` :** p50, p95, p99
+ **`ActivityTime`, `ExecutionTime`, `LambdaFunctionRunTime`, `LambdaFunctionScheduleTime`, `LambdaFunctionTime`, `ActivityRunTime` et `ActivityScheduleTime` dans `AWS/States` :** p95, p99
+ **`EncoderBitRate`, `ConfiguredBitRate` et `ConfiguredBitRateAvailable` dans `AWS/MediaLive` :** p90
+ **`Latency` dans `AWS/AppSync` :** p90

## Paramètres par défaut du flux Dynatrace
<a name="CloudWatch-metric-streams-QuickPartner-Dynatrace"></a>

Les flux de configuration rapide de partenaire vers Dynatrace utilisent les valeurs par défaut suivantes :
+ **Format de sortie :** OpenTelemetry 0.7.0
+ **Encodage du contenu du flux Firehose** GZIP
+ **Options de mise en mémoire tampon des flux Firehose** Intervalle de 60 secondes, taille de 5 MBs
+ **Option de réessai du flux Firehose** Durée de 600 secondes

## Valeurs par défaut des flux Elastic
<a name="CloudWatch-metric-streams-QuickPartner-Elastic"></a>

Les flux de configuration rapide du partenaire vers Elastic utilisent les valeurs par défaut suivantes :
+ **Format de sortie :** OpenTelemetry 1.0.0
+ **Encodage du contenu du flux Firehose** GZIP
+ **Options de mise en mémoire tampon du flux Firehose** Intervalle de 60 secondes, taille de 1 Mo
+ **Option de réessai du flux Firehose** Durée de 60 secondes

## Paramètres par défaut du fluc New Relic
<a name="CloudWatch-metric-streams-QuickPartner-NewRelic"></a>

Les flux de configuration rapide de partenaire vers New Relic utilisent les valeurs par défaut suivantes :
+ **Format de sortie :** OpenTelemetry 0.7.0
+ **Encodage du contenu du flux Firehose** GZIP
+ **Options de mise en mémoire tampon du flux Firehose** Intervalle de 60 secondes, taille de 1 Mo
+ **Option de réessai du flux Firehose** Durée de 60 secondes

## Paramètres par défaut du flux Splunk Observability Cloud
<a name="CloudWatch-metric-streams-QuickPartner-Splunk"></a>

Les flux de configuration rapide de partenaire vers Splunk Observability Cloud utilisent les valeurs par défaut suivantes :
+ **Format de sortie :** OpenTelemetry 1.0.0
+ **Encodage du contenu du flux Firehose** GZIP
+ **Options de mise en mémoire tampon du flux Firehose** Intervalle de 60 secondes, taille de 1 Mo
+ **Option de réessai du flux Firehose** Durée de 300 secondes

## Paramètres par défaut du flux Sumo Logic
<a name="CloudWatch-metric-streams-QuickPartner-Sumologic"></a>

Les flux de configuration rapide de partenaire vers Sumo Logic utilisent les valeurs par défaut suivantes :
+ **Format de sortie :** OpenTelemetry 0.7.0
+ **Encodage du contenu du flux Firehose** GZIP
+ **Options de mise en mémoire tampon du flux Firehose** Intervalle de 60 secondes, taille de 1 Mo
+ **Option de réessai du flux Firehose** Durée de 60 secondes

# Statistiques pouvant être diffusées
<a name="CloudWatch-metric-streams-statistics"></a>

Les flux de métriques incluent toujours les statistiques suivantes : `Minimum`, `Maximum`, `SampleCount` et `Sum`. Vous pouvez également choisir d'inclure les statistiques supplémentaires suivantes dans un flux de métriques. Ce choix se fait sur une base par métrique. Pour de plus amples informations sur ces statistiques, veuillez consulter [CloudWatch définitions des statistiques](Statistics-definitions.md).
+ Valeurs percentiles telles que p95 ou p99 (pour les flux au format JSON ou au format) OpenTelemetry 
+ Moyenne ajustée (uniquement pour les flux au format JSON)
+ Moyenne winsorisée (uniquement pour les flux au format JSON)
+ Nombre ajusté (uniquement pour les flux au format JSON)
+ Somme ajustée (uniquement pour les flux au format JSON)
+ Rang centile (uniquement pour les flux au format JSON)
+ Moyenne interquartile (uniquement pour les flux au format JSON)

Le streaming de statistiques supplémentaires entraîne des frais supplémentaires. La diffusion de une à cinq de ces statistiques supplémentaires pour une métrique particulière est facturée sous forme de mise à jour de métrique supplémentaire. Par la suite, chaque ensemble supplémentaire comprenant jusqu'à cinq de ces statistiques est facturé comme une autre mise à jour de métrique. 

 Par exemple, supposons que pour une métrique, vous diffusez les six statistiques supplémentaires suivantes : p95, p99, p99,9, moyenne ajustée, moyenne winsorisée et Somme ajustée. Chaque mise à jour de cette métrique est facturée sous la forme de trois mises à jour de métriques : une pour la mise à jour des métriques qui inclut les statistiques par défaut, une pour les cinq premières statistiques supplémentaires et une pour la sixième statistique supplémentaire. L'ajout de quatre statistiques supplémentaires pour un total de dix statistiques n'augmenterait pas la facturation, mais une onzième statistique supplémentaire le ferait.

Lorsque vous spécifiez un nom de la métrique et une combinaison d'espaces de noms pour diffuser des statistiques supplémentaires, toutes les combinaisons de dimensions de ce nom de la métrique et de cet espace de noms sont diffusées avec les statistiques supplémentaires. 

CloudWatch metric streams publie une nouvelle métrique`TotalMetricUpdate`, qui reflète le nombre de base de mises à jour de métriques plus les mises à jour de métriques supplémentaires liées à la diffusion de statistiques supplémentaires. Pour de plus amples informations, veuillez consulter [Surveillance de vos flux de mesures à l'aide de CloudWatch métriques](CloudWatch-metric-streams-monitoring.md).

Pour plus d'informations, consultez [Amazon CloudWatch Pricing](https://aws.amazon.com/cloudwatch/pricing/).

**Note**  
Certaines métriques ne prennent pas en charge les centiles. Les statistiques de centile de ces métriques sont exclues du flux et n'entraînent pas de frais de flux de métriques. Un exemple de ces statistiques qui ne prennent pas en charge les centiles sont des métriques de l'espace de noms `AWS/ECS`.

Les statistiques supplémentaires que vous configurez sont diffusées uniquement si elles correspondent aux filtres du flux. Par exemple, si vous créez un flux qui contient uniquement `EC2` et `RDS` dans les filtres d'inclusion, puis dans les listes de configuration de vos statistiques `EC2` et `Lambda`, alors le flux inclut les métriques `EC2` avec statistiques supplémentaires, les métriques `RDS` avec uniquement les statistiques par défaut, et ne comprennent aucunes statistiques `Lambda`.

# Exploitation et entretien des flux métriques
<a name="CloudWatch-metric-streams-operation"></a>

Les flux de métriques sont toujours dans l'un des deux états, **Running (En cours d'exécution)** ou **Stopped (Arrêt)**.
+ **Running (En cours d'exécution)** : le flux de métriques s'exécute correctement. Il se peut que les données de métrique ne soient pas diffusées vers la destination en raison des filtres présents sur le flux.
+ **Stopped (Arrêt)** : le flux de métriques a été explicitement arrêté par quelqu'un, et non à cause d'une erreur. Il peut être utile d'arrêter votre flux pour interrompre temporairement la diffusion de données sans supprimer le flux.

Si vous arrêtez et redémarrez un flux métrique, les données métriques publiées CloudWatch lors de l'arrêt du flux métrique ne sont pas rechargées dans le flux métrique.

Si vous modifiez le format de sortie d'un flux de métriques, dans certains cas, vous pouvez voir une petite quantité de données de métrique écrites vers la destination dans l'ancien format et le nouveau format. Pour éviter cette situation, vous pouvez créer un nouveau flux Firehose de diffusion avec la même configuration que votre flux actuel, puis passer au nouveau flux Firehose de diffusion et modifier le format de sortie en même temps. De cette façon, les enregistrements Kinesis avec un format de sortie différent sont stockés sur Amazon S3 dans des objets distincts. Plus tard, vous pourrez rediriger le trafic vers le flux Firehose de diffusion d’origine et supprimer le second flux de diffusion. 

**Pour afficher, modifier, arrêter et démarrer vos flux de métriques**

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans le panneau de navigation, choisissez **Metrics** (Métriques), **Streams** (Flux).

   La liste des flux s'affiche, et la colonne **Status (État)** indique si chaque flux est en cours d'exécution ou arrêté.

1. Pour arrêter ou démarrer un flux de métriques, sélectionnez le flux et choisissez **Stop (Arrêter)** ou **Start (Démarrer)**.

1. Pour afficher les détails d'un flux de métriques, sélectionnez le flux et choisissez **View details (Afficher les détails)**.

1. Pour modifier le format de sortie du flux, les filtres, le flux Firehose de destination ou les rôles, sélectionnez **Modifier** et apportez les modifications que vous voulez.

   Si vous modifiez les filtres, il peut y avoir des lacunes dans les données de métrique pendant la transition.

# Surveillance de vos flux de mesures à l'aide de CloudWatch métriques
<a name="CloudWatch-metric-streams-monitoring"></a>

Les flux métriques émettent CloudWatch des métriques concernant leur état et leur fonctionnement dans l'espace de `AWS/CloudWatch/MetricStreams` noms. Les métriques suivantes sont émises. Les deux métriques sont émises avec une dimension `MetricStreamName` et sans dimension. Vous pouvez utiliser les métriques sans dimensions pour afficher les métriques agrégées pour tous vos flux de métriques. Vous pouvez utiliser les métriques avec la dimension `MetricStreamName` pour afficher les métriques concernant uniquement ce flux de métrique.

Pour ces deux métriques, les valeurs ne sont émises que pour les flux de métriques qui se trouvent dans l'état **Running** (En cours d'exécution).


| Métrique | Description | 
| --- | --- | 
|  `MetricUpdate`  |  Nombre de mises à jour de métriques envoyées au flux de métrique. Si aucune mise à jour de métrique n'est diffusée en continu pendant une période donnée, cette métrique n'est pas émise pendant cette période. Si vous arrêtez le flux de métrique, cette métrique cesse d'être émise jusqu'à ce que le flux de métrique soit redémarré. Statistique valide : `Sum` Unités : aucune | 
|  `TotalMetricUpdate`  |  Ce chiffre est calculé sous la forme de **MetricUpdate \$1, un nombre basé sur des statistiques supplémentaires diffusées en continu**. Pour chaque combinaison unique d'espace de noms et de noms de la métrique, la diffusion de 1 à 5 statistiques supplémentaires ajoute 1 au `TotalMetricUpdate`, la diffusion de 6 à 10 statistiques supplémentaires ajoute 2 au `TotalMetricUpdate`, etc.  Statistique valide : `Sum` Unités : aucune | 
|  `PublishErrorRate`  |  Le nombre d’erreurs irrécupérables qui se produisent lors du placement des données dans le flux de diffusion Firehose. Si aucune erreur ne se produit pendant une période donnée, cette métrique n'est pas émise pendant cette période. Si vous arrêtez le flux de métrique, cette métrique cesse d'être émise jusqu'à ce que le flux de métrique soit redémarré. Statistique valide : `Average` pour voir le taux de mises à jour des métriques qui ne peuvent pas être écrites. La valeur doit être comprise entre 0,0 et 1,0. Unités : aucune  | 

# Confiance entre Firehose CloudWatch et Firehose
<a name="CloudWatch-metric-streams-trustpolicy"></a>

Le flux de diffusion Firehose doit être fiable CloudWatch via un rôle IAM doté d'autorisations d'écriture sur Firehose. Ces autorisations peuvent être limitées au seul flux de diffusion Firehose utilisé par le flux CloudWatch métrique. Le rôle IAM doit faire confiance au service principal `streams.metrics.cloudwatch.amazonaws.com`.

Si vous utilisez la CloudWatch console pour créer un flux de mesures, vous pouvez avoir CloudWatch créé le rôle avec les autorisations appropriées. Si vous utilisez une autre méthode pour créer un flux de métriques ou si vous souhaitez créer le rôle IAM lui-même, elle doit contenir la stratégie d'autorisations et la stratégie d'approbation suivantes.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "firehose:PutRecord",
                "firehose:PutRecordBatch"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:firehose:us-east-1:123456789012:deliverystream/*"
        }
    ]
}
```

------

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "streams.metrics.cloudwatch.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

Les données métriques sont diffusées CloudWatch vers le flux de diffusion Firehose de destination pour le compte de la source propriétaire de la ressource du flux métrique. 

# CloudWatch sortie de flux métrique au format JSON
<a name="CloudWatch-metric-streams-formats-json"></a>

Dans un flux CloudWatch métrique utilisant le format JSON, chaque enregistrement Firehose contient plusieurs objets JSON séparés par un caractère de nouvelle ligne (\$1n). Chaque objet comprend un point de données unique d'une seule métrique.

Le format JSON utilisé est entièrement compatible avec AWS Glue et avec Amazon Athena. Si vous disposez d'un flux de diffusion Firehose et d'un AWS Glue tableau correctement formaté, le format peut être automatiquement transformé au format Parquet ou au format ORC (Optimized Row Columnar) avant d'être stocké dans S3. Pour plus d’informations sur la transformation du format, consultez [Conversion du format de votre enregistrement d’entrée dans Firehose](https://docs.aws.amazon.com/firehose/latest/dev/record-format-conversion.html). Pour plus d'informations sur le format approprié pour AWS Glue, consultez[Quel AWS Glue schéma dois-je utiliser pour le format de sortie JSON ?](#CloudWatch-metric-streams-format-glue).

Au format JSON, les valeurs valides pour `unit` sont identiques à celles de `unit`dans la structure d'API `MetricDatum`. Pour plus d'informations, consultez [ MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html). La valeur du champ `timestamp` est en millisecondes d'époque, comme `1616004674229`.

Voici un exemple du format. Dans cet exemple, le format JSON est mis en forme afin de faciliter la lecture. En pratique, l'ensemble du format se trouve sur une seule ligne.

```
{
    "metric_stream_name": "MyMetricStream",
    "account_id": "1234567890",
    "region": "us-east-1",
    "namespace": "AWS/EC2",
    "metric_name": "DiskWriteOps",
    "dimensions": {
        "InstanceId": "i-123456789012"
    },
    "timestamp": 1611929698000,
    "value": {
        "count": 3.0,
        "sum": 20.0,
        "max": 18.0,
        "min": 0.0,
        "p99": 17.56,
        "p99.9": 17.8764,
        "TM(25%:75%)": 16.43
    },
    "unit": "Seconds"
}
```

## Quel AWS Glue schéma dois-je utiliser pour le format de sortie JSON ?
<a name="CloudWatch-metric-streams-format-glue"></a>

Voici un exemple de représentation JSON de la AWS Glue table `StorageDescriptor` for an, qui serait ensuite utilisée par Firehose. Pour plus d'informations sur`StorageDescriptor`, voir [ StorageDescriptor](https://docs.aws.amazon.com/glue/latest/webapi/API_StorageDescriptor.html).

```
{
  "Columns": [
    {
      "Name": "metric_stream_name",
      "Type": "string"
    },
    {
      "Name": "account_id",
      "Type": "string"
    },
    {
      "Name": "region",
      "Type": "string"
    },
    {
      "Name": "namespace",
      "Type": "string"
    },
    {
      "Name": "metric_name",
      "Type": "string"
    },
    {
      "Name": "timestamp",
      "Type": "timestamp"
    },
    {
      "Name": "dimensions",
      "Type": "map<string,string>"
    },
    {
      "Name": "value",
      "Type": "struct<min:double,max:double,count:double,sum:double,p99:double,p99.9:double>"
    },
    {
      "Name": "unit",
      "Type": "string"
    }
  ],
  "Location": "s3://amzn-s3-demo-bucket/",
  "InputFormat": "org.apache.hadoop.mapred.TextInputFormat",
  "OutputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
  "SerdeInfo": {
    "SerializationLibrary": "org.apache.hive.hcatalog.data.JsonSerDe"
  },
  "Parameters": {
    "classification": "json"
  }
}
```

L'exemple précédent concerne les données écrites sur Amazon S3 au format JSON. Remplacez les valeurs des champs suivants par les valeurs indiquées pour stocker les données au format Parquet ou ORC (Optimized Row Columnar).
+ **Parquet :**
  + Format d'entrée : org.apache.hadoop.hive.ql.io.parquet. MapredParquetInputFormat
  + Format de sortie : org.apache.hadoop.hive.ql.io.parquet. MapredParquetOutputFormat
  + SerDeInfo.serializationLib : org.apache.hadoop.hive.ql.io.parquet.serde. ParquetHiveSerDe
  + parameters.classification : parquet
+ **ORC :**
  + Format d'entrée : org.apache.hadoop.hive.ql.io.orc. OrcInputFormat
  + Format de sortie : org.apache.hadoop.hive.ql.io.orc. OrcOutputFormat
  + SerDeInfo.serializationLib : org.apache.hadoop.hive.ql.io.orc. OrcSerde
  + parameters.classification : orc

# CloudWatch sortie de flux métrique au format OpenTelemetry 1.0.0
<a name="CloudWatch-metric-streams-formats-opentelemetry-100"></a>

**Note**  
Avec le format OpenTelemetry 1.0.0, les attributs métriques sont codés sous forme de liste d'`KeyValue`objets au lieu du `StringKeyValue` type utilisé dans le format 0.7.0. En tant que consommateur, il s’agit du seul changement majeur entre les formats 0.7.0 et 1.0.0. Un analyseur généré à partir des fichiers proto 0.7.0 n’analysera pas les attributs métriques codés au format 1.0.0. Il en va de même en sens inverse, un analyseur généré à partir des fichiers proto 1.0.0 n’analysera pas les attributs métriques codés au format 0.7.0.

OpenTelemetry est une collection d'outils APIs, et SDKs. Vous pouvez l'utiliser pour instrumenter, générer, collecter et exporter des données de télémétrie (métriques, journaux et traces) à des fins d'analyse. OpenTelemetry fait partie de la Cloud Native Computing Foundation. Pour de plus amples informations, veuillez consulter [OpenTelemetry](https://opentelemetry.io/).

Pour plus d'informations sur la spécification OpenTelemetry 1.0.0 complète, voir [Release version 1.0.0](https://github.com/open-telemetry/opentelemetry-proto/releases/tag/v1.0.0).

Un enregistrement Kinesis peut contenir une ou plusieurs structures de `ExportMetricsServiceRequest` OpenTelemetry données. Chaque structure de données commence par un en-tête avec un `UnsignedVarInt32` indiquant la longueur du registre en octets. Chaque `ExportMetricsServiceRequest` peut contenir des données provenant de plusieurs métriques à la fois.

Ce qui suit est une représentation sous forme de chaîne du message de la structure de `ExportMetricsServiceRequest` OpenTelemetry données. OpenTelemetry sérialise le protocole binaire Google Protocol Buffers, ce qui n'est pas lisible par l'homme.

```
resource_metrics {
  resource {
    attributes {
      key: "cloud.provider"
      value {
        string_value: "aws"
      }
    }
    attributes {
      key: "cloud.account.id"
      value {
        string_value: "123456789012"
      }
    }
    attributes {
      key: "cloud.region"
      value {
        string_value: "us-east-1"
      }
    }
    attributes {
      key: "aws.exporter.arn"
      value {
        string_value: "arn:aws:cloudwatch:us-east-1:123456789012:metric-stream/MyMetricStream"
      }
    }
  }
  scope_metrics {
    metrics {
      name: "amazonaws.com/AWS/DynamoDB/ConsumedReadCapacityUnits"
      unit: "NoneTranslated"
      summary {
        data_points {
          start_time_unix_nano: 60000000000
          time_unix_nano: 120000000000
          count: 1
          sum: 1.0
          quantile_values {
            value: 1.0
          }
          quantile_values {
            quantile: 0.95
            value: 1.0
          }
          quantile_values {
            quantile: 0.99
            value: 1.0
          }
          quantile_values {
            quantile: 1.0
            value: 1.0
          }
          attributes {
            key: "Namespace"
            value {
              string_value: "AWS/DynamoDB"
            }
          }
          attributes {
            key: "MetricName"
            value {
              string_value: "ConsumedReadCapacityUnits"
            }
          }
          attributes {
            key: "Dimensions"
            value {
              kvlist_value {
                values {
                  key: "TableName"
                  value {
                    string_value: "MyTable"
                  }
                }
              }
            }
          }
        }
        data_points {
          start_time_unix_nano: 70000000000
          time_unix_nano: 130000000000
          count: 2
          sum: 5.0
          quantile_values {
            value: 2.0
          }
          quantile_values {
            quantile: 1.0
            value: 3.0
          }
          attributes {
            key: "Namespace"
            value {
              string_value: "AWS/DynamoDB"
            }
          }
          attributes {
            key: "MetricName"
            value {
              string_value: "ConsumedReadCapacityUnits"
            }
          }
          attributes {
            key: "Dimensions"
            value {
              kvlist_value {
                values {
                  key: "TableName"
                  value {
                    string_value: "MyTable"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
```

**Objet de haut niveau pour sérialiser les données métriques OpenTelemetry **

`ExportMetricsServiceRequest`est le wrapper de haut niveau pour sérialiser la charge utile d'un OpenTelemetry exportateur. Il contient une ou plusieurs `ResourceMetrics`.

```
message ExportMetricsServiceRequest {
  // An array of ResourceMetrics.
  // For data coming from a single resource this array will typically contain one
  // element. Intermediary nodes (such as OpenTelemetry Collector) that receive
  // data from multiple origins typically batch the data before forwarding further and
  // in that case this array will contain multiple elements.
  repeated opentelemetry.proto.metrics.v1.ResourceMetrics resource_metrics = 1;
}
```

`ResourceMetrics`est l'objet de niveau supérieur pour représenter les MetricData objets. 

```
// A collection of ScopeMetrics from a Resource.
message ResourceMetrics {
  reserved 1000;

  // The resource for the metrics in this message.
  // If this field is not set then no resource info is known.
  opentelemetry.proto.resource.v1.Resource resource = 1;

  // A list of metrics that originate from a resource.
  repeated ScopeMetrics scope_metrics = 2;

  // This schema_url applies to the data in the "resource" field. It does not apply
  // to the data in the "scope_metrics" field which have their own schema_url field.
  string schema_url = 3;
}
```

**L'objet Ressource**

`Resource` est un objet de paire de valeurs qui contient des informations sur la ressource qui a généré les métriques. Pour les métriques créées par AWS, la structure de données contient l'Amazon Resource Name (ARN) de la ressource liée à la métrique, telle qu'une instance EC2 ou un compartiment S3.

L'objet `Resource` contient un attribut appelé `attributes`, qui stocke une liste des paires de valeurs clés.
+ `cloud.account.id` contient l'ID de compte
+ `cloud.region` contient la région
+ `aws.exporter.arn` contient l'ARN du flux de métriques
+ `cloud.provider` est toujours `aws`.

```
// Resource information.
message Resource {
  // Set of attributes that describe the resource.
  // Attribute keys MUST be unique (it is not allowed to have more than one
  // attribute with the same key).
  repeated opentelemetry.proto.common.v1.KeyValue attributes = 1;

  // dropped_attributes_count is the number of dropped attributes. If the value is 0, then
  // no attributes were dropped.
  uint32 dropped_attributes_count = 2;
}
```

**L' ScopeMetrics objet**

Le champ `scope` ne sera pas rempli. Seul le champ des métriques que nous exportons est renseigné.

```
// A collection of Metrics produced by an Scope.
message ScopeMetrics {
  // The instrumentation scope information for the metrics in this message.
  // Semantically when InstrumentationScope isn't set, it is equivalent with
  // an empty instrumentation scope name (unknown).
  opentelemetry.proto.common.v1.InstrumentationScope scope = 1;

  // A list of metrics that originate from an instrumentation library.
  repeated Metric metrics = 2;

  // This schema_url applies to all metrics in the "metrics" field.
  string schema_url = 3;
}
```

**L'objet Metric**

L’objet de métrique contient quelques métadonnées et un champ de données `Summary` qui contient une liste de `SummaryDataPoint`.

Pour les flux de métriques, les métadonnées sont les suivantes :
+ `name` sera `amazonaws.com/metric_namespace/metric_name`
+ `description` sera vide.
+ `unit` sera rempli en mappant l'unité de référence de la métrique à la variante sensible à la casse du code unifié pour les unités de mesure. Pour de plus amples informations, veuillez consulter [Traductions au format OpenTelemetry 1.0.0 en CloudWatch](CloudWatch-metric-streams-formats-opentelemetry-translation-100.md) and le [Code unifié des unités de mesure](https://ucum.org/ucum.html).
+ `type` sera `SUMMARY`

```
message Metric {
  reserved 4, 6, 8;

  // name of the metric, including its DNS name prefix. It must be unique.
  string name = 1;

  // description of the metric, which can be used in documentation.
  string description = 2;

  // unit in which the metric value is reported. Follows the format
  // described by http://unitsofmeasure.org/ucum.html.
  string unit = 3;

  // Data determines the aggregation type (if any) of the metric, what is the
  // reported value type for the data points, as well as the relatationship to
  // the time interval over which they are reported.
  oneof data {
    Gauge gauge = 5;
    Sum sum = 7;
    Histogram histogram = 9;
    ExponentialHistogram exponential_histogram = 10;
    Summary summary = 11;
  }
}

message Summary {
  repeated SummaryDataPoint data_points = 1;
}
```

**L' SummaryDataPoint objet**

L' SummaryDataPoint objet contient la valeur d'un point de données unique dans une série chronologique dans une DoubleSummary métrique.

```
// SummaryDataPoint is a single data point in a timeseries that describes the
// time-varying values of a Summary metric.
message SummaryDataPoint {
  reserved 1;

  // The set of key/value pairs that uniquely identify the timeseries from
  // where this point belongs. The list may be empty (may contain 0 elements).
  // Attribute keys MUST be unique (it is not allowed to have more than one
  // attribute with the same key).
  repeated opentelemetry.proto.common.v1.KeyValue attributes = 7;

  // StartTimeUnixNano is optional but strongly encouraged, see the
  // the detailed comments above Metric.
  //
  // Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January
  // 1970.
  fixed64 start_time_unix_nano = 2;

  // TimeUnixNano is required, see the detailed comments above Metric.
  //
  // Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January
  // 1970.
  fixed64 time_unix_nano = 3;

  // count is the number of values in the population. Must be non-negative.
  fixed64 count = 4;

  // sum of the values in the population. If count is zero then this field
  // must be zero.
  //
  // Note: Sum should only be filled out when measuring non-negative discrete
  // events, and is assumed to be monotonic over the values of these events.
  // Negative events *can* be recorded, but sum should not be filled out when
  // doing so.  This is specifically to enforce compatibility w/ OpenMetrics,
  // see: https://github.com/OpenObservability/OpenMetrics/blob/main/specification/OpenMetrics.md#summary
  double sum = 5;

  // Represents the value at a given quantile of a distribution.
  //
  // To record Min and Max values following conventions are used:
  // - The 1.0 quantile is equivalent to the maximum value observed.
  // - The 0.0 quantile is equivalent to the minimum value observed.
  //
  // See the following issue for more context:
  // https://github.com/open-telemetry/opentelemetry-proto/issues/125
  message ValueAtQuantile {
    // The quantile of a distribution. Must be in the interval
    // [0.0, 1.0].
    double quantile = 1;

    // The value at the given quantile of a distribution.
    //
    // Quantile values must NOT be negative.
    double value = 2;
  }

  // (Optional) list of values at different quantiles of the distribution calculated
  // from the current snapshot. The quantiles must be strictly increasing.
  repeated ValueAtQuantile quantile_values = 6;

  // Flags that apply to this specific data point.  See DataPointFlags
  // for the available flags and their meaning.
  uint32 flags = 8;
}
```

Pour de plus amples informations, veuillez consulter [Traductions au format OpenTelemetry 1.0.0 en CloudWatch](CloudWatch-metric-streams-formats-opentelemetry-translation-100.md).

# Traductions au format OpenTelemetry 1.0.0 en CloudWatch
<a name="CloudWatch-metric-streams-formats-opentelemetry-translation-100"></a>

CloudWatch effectue certaines transformations pour mettre CloudWatch les données en OpenTelemetry format.

**Traduction de l'espace de noms, du nom de la métrique et des dimensions**

Ces attributs sont des paires de valeurs clés codées dans le mappage.
+ Un attribut possède la clé `Namespace` et sa valeur est l’espace de noms de la métrique.
+ Un attribut possède la clé `MetricName` et sa valeur est le nom de la métrique.
+ Une paire a la clé `Dimensions` et sa valeur est une liste imbriquée des paires clé-valeur. Chaque paire de cette liste correspond à une dimension CloudWatch métrique, où la clé de la paire est le nom de la dimension et sa valeur est la valeur de la dimension.

**Translation de la moyenne, de la somme SampleCount, du minimum et du maximum**

Le point de données Summary permet d' CloudWatch exporter toutes ces statistiques en utilisant un seul point de données.
+ `startTimeUnixNano`contient le CloudWatch `startTime`
+ `timeUnixNano`contient le CloudWatch `endTime`
+ `sum` contient la statistique Sum (Somme).
+ `count`contient la SampleCount statistique.
+ `quantile_values` contient deux objets `valueAtQuantile.value` :
  + `valueAtQuantile.quantile = 0.0` avec `valueAtQuantile.value = Min value`
  + `valueAtQuantile.quantile = 0.99` avec `valueAtQuantile.value = p99 value`
  + `valueAtQuantile.quantile = 0.999` avec `valueAtQuantile.value = p99.9 value`
  + `valueAtQuantile.quantile = 1.0` avec `valueAtQuantile.value = Max value`

Les ressources qui consomment le flux métrique peuvent calculer la statistique moyenne sous la forme **SampleCountSomme/**.

**Traduction d'unités**

CloudWatch les unités sont mappées selon la variante distinguant majuscules et minuscules du code unifié pour les unités de mesure, comme indiqué dans le tableau suivant. Pour de plus amples informations, veuillez consulter le [Code unifié des unités de mesure](https://ucum.org/ucum.html).


| CloudWatch | OpenTelemetry | 
| --- | --- | 
|  Seconde |  s | 
|  Seconde ou secondes |  s | 
|  Microsecondes |  us | 
|  Millisecondes |  ms | 
|  Octets |  Bit | 
|  Kilooctets |  Ko | 
|  Mégaoctets |  MBy | 
|  Gigaoctets |  GBy | 
|  Téra-octets |  TBy | 
|  Bits |  bit | 
|  Kilobits |  Kb | 
|  Megabits |  MBit | 
|  Gigabits |  GBit | 
|  Terabits |  Tb | 
|  Pourcentage |  % | 
|  Nombre |  \$1Count\$1 | 
|  Aucune |  1 | 

Les unités combinées avec une barre oblique sont mappées en appliquant la OpenTelemetry conversion des deux unités. Par exemple, Bytes/Second est mappé à By/s.

# Comment analyser les messages OpenTelemetry 1.0.0
<a name="CloudWatch-metric-streams-formats-opentelemetry-parse-100"></a>

Cette section fournit des informations pour vous aider à démarrer avec l'analyse de la OpenTelemetry version 1.0.0.

Tout d'abord, vous devez obtenir des liaisons spécifiques à la langue, qui vous permettent d'analyser les messages OpenTelemetry 1.0.0 dans votre langue préférée.

**Pour obtenir des liaisons spécifiques à une langue**
+ Les étapes à suivre dépendent de votre langue préférée.
  + Pour utiliser Java, ajoutez la dépendance Maven suivante à votre projet Java : [OpenTelemetry Java >> 0.14.1](https://mvnrepository.com/artifact/io.opentelemetry/opentelemetry-proto/0.14.1).
  + Pour utiliser une autre langue, procédez comme suit :

    1. Vérifiez que votre langue est prise en charge en consultant la liste à l'adresse[Générer vos classes](https://developers.google.com/protocol-buffers/docs/proto3#generating).

    1. Installez le compilateur Protobuf en suivant les étapes indiquées dans [Télécharger les tampons de protocole](https://developers.google.com/protocol-buffers/docs/downloads).

    1. Téléchargez les ProtoBuf définitions OpenTelemetry 1.0.0 dans la [version 1.0.0](https://github.com/open-telemetry/opentelemetry-proto/releases/tag/v1.0.0). 

    1. Vérifiez que vous vous trouvez dans le dossier racine des ProtoBuf définitions OpenTelemetry 1.0.0 téléchargées. Créez ensuite un dossier `src` puis exécutez la commande pour générer des liaisons spécifiques à la langue. Pour de plus amples informations, veuillez consulter [Générer vos classes](https://developers.google.com/protocol-buffers/docs/proto3#generating). 

       Voici un exemple qui montre comment générer des liaisons Javascript.

       ```
       protoc --proto_path=./ --js_out=import_style=commonjs,binary:src \
       opentelemetry/proto/common/v1/common.proto \
       opentelemetry/proto/resource/v1/resource.proto \
       opentelemetry/proto/metrics/v1/metrics.proto \
       opentelemetry/proto/collector/metrics/v1/metrics_service.proto
       ```

La section suivante présente des exemples d'utilisation des liaisons spécifiques à la langue que vous pouvez créer à l'aide des instructions précédentes.

**Java**

```
package com.example;

import io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

public class MyOpenTelemetryParser {

    public List<ExportMetricsServiceRequest> parse(InputStream inputStream) throws IOException {
        List<ExportMetricsServiceRequest> result = new ArrayList<>();

        ExportMetricsServiceRequest request;
        /* A Kinesis record can contain multiple `ExportMetricsServiceRequest`
           records, each of them starting with a header with an
           UnsignedVarInt32 indicating the record length in bytes:
            ------ --------------------------- ------ -----------------------
           |UINT32|ExportMetricsServiceRequest|UINT32|ExportMetricsService...
            ------ --------------------------- ------ -----------------------
         */
        while ((request = ExportMetricsServiceRequest.parseDelimitedFrom(inputStream)) != null) {
            // Do whatever we want with the parsed message
            result.add(request);
        }

        return result;
    }
}
```

**JavaScript**

Cet exemple suppose que le dossier racine avec les liaisons générées est `./`

L'argument de données de la fonction `parseRecord` peut avoir l'un des types suivants :
+ `Uint8Array` c'est optimal
+ `Buffer` optimal sous le nœud
+ `Array.number` entier 8 bits

```
const pb = require('google-protobuf')
const pbMetrics =
    require('./opentelemetry/proto/collector/metrics/v1/metrics_service_pb')

function parseRecord(data) {
    const result = []

    // Loop until we've read all the data from the buffer
    while (data.length) {
        /* A Kinesis record can contain multiple `ExportMetricsServiceRequest`
           records, each of them starting with a header with an
           UnsignedVarInt32 indicating the record length in bytes:
            ------ --------------------------- ------ -----------------------
           |UINT32|ExportMetricsServiceRequest|UINT32|ExportMetricsService...
            ------ --------------------------- ------ -----------------------
         */
        const reader = new pb.BinaryReader(data)
        const messageLength = reader.decoder_.readUnsignedVarint32()
        const messageFrom = reader.decoder_.cursor_
        const messageTo = messageFrom + messageLength

        // Extract the current `ExportMetricsServiceRequest` message to parse
        const message = data.subarray(messageFrom, messageTo)

        // Parse the current message using the ProtoBuf library
        const parsed =
            pbMetrics.ExportMetricsServiceRequest.deserializeBinary(message)

        // Do whatever we want with the parsed message
        result.push(parsed.toObject())

        // Shrink the remaining buffer, removing the already parsed data
        data = data.subarray(messageTo)
    }

    return result
}
```

**Python**

Vous devez lire les délimiteurs `var-int` vous-même ou utilisez les méthodes internes `_VarintBytes(size)` et `_DecodeVarint32(buffer, position)`. Ceux-ci retournent la position dans le tampon juste après les octets de taille. Le côté lecture construit un nouveau tampon qui est limité à la lecture uniquement des octets du message. 

```
size = my_metric.ByteSize()
f.write(_VarintBytes(size))
f.write(my_metric.SerializeToString())
msg_len, new_pos = _DecodeVarint32(buf, 0)
msg_buf = buf[new_pos:new_pos+msg_len]
request = metrics_service_pb.ExportMetricsServiceRequest()
request.ParseFromString(msg_buf)
```

**Go**

Utilisez `Buffer.DecodeMessage()`.

**C\$1**

Utilisez `CodedInputStream`. Cette classe peut lire des messages délimités par la taille.

**C\$1\$1**

Les fonctions décrites dans `google/protobuf/util/delimited_message_util.h` peuvent lire des messages délimités par la taille.

**Autres langages**

Pour d'autres langues, consultez [Télécharger les tampons de protocole](https://developers.google.com/protocol-buffers/docs/downloads).

Lors de l'implémentation de l'analyseur, considérez qu'un registre Kinesis peut contenir plusieurs messages des tampons de protocole `ExportMetricsServiceRequest`, chacun d'entre eux commençant par un en-tête avec un objet `UnsignedVarInt32` indiquant la longueur de l'enregistrement en octets.

# CloudWatch sortie de flux métrique au format OpenTelemetry 0.7.0
<a name="CloudWatch-metric-streams-formats-opentelemetry"></a>

OpenTelemetry est une collection d'outils APIs, et SDKs. Vous pouvez l'utiliser pour instrumenter, générer, collecter et exporter des données de télémétrie (métriques, journaux et traces) à des fins d'analyse. OpenTelemetry fait partie de la Cloud Native Computing Foundation. Pour de plus amples informations, veuillez consulter [OpenTelemetry](https://opentelemetry.io/).

Pour plus d'informations sur la spécification OpenTelemetry 0.7.0 complète, voir la [version 0.7.0](https://github.com/open-telemetry/opentelemetry-proto/releases/tag/v0.7.0).

Un enregistrement Kinesis peut contenir une ou plusieurs structures de `ExportMetricsServiceRequest` OpenTelemetry données. Chaque structure de données commence par un en-tête avec un `UnsignedVarInt32` indiquant la longueur du registre en octets. Chaque `ExportMetricsServiceRequest` peut contenir des données provenant de plusieurs métriques à la fois.

Ce qui suit est une représentation sous forme de chaîne du message de la structure de `ExportMetricsServiceRequest` OpenTelemetry données. OpenTelemetry sérialise le protocole binaire Google Protocol Buffers, ce qui n'est pas lisible par l'homme.

```
resource_metrics {
  resource {
    attributes {
      key: "cloud.provider"
      value {
        string_value: "aws"
      }
    }
    attributes {
      key: "cloud.account.id"
      value {
        string_value: "2345678901"
      }
    }
    attributes {
      key: "cloud.region"
      value {
        string_value: "us-east-1"
      }
    }
    attributes {
      key: "aws.exporter.arn"
      value {
        string_value: "arn:aws:cloudwatch:us-east-1:123456789012:metric-stream/MyMetricStream"
      }
    }
  }
  instrumentation_library_metrics {
    metrics {
      name: "amazonaws.com/AWS/DynamoDB/ConsumedReadCapacityUnits"
      unit: "1"
      double_summary {
        data_points {
          labels {
            key: "Namespace"
            value: "AWS/DynamoDB"
          }
          labels {
            key: "MetricName"
            value: "ConsumedReadCapacityUnits"
          }
          labels {
            key: "TableName"
            value: "MyTable"
          }
          start_time_unix_nano: 1604948400000000000
          time_unix_nano: 1604948460000000000
          count: 1
          sum: 1.0
          quantile_values {
            quantile: 0.0
            value: 1.0
          }
          quantile_values {
            quantile: 0.95
            value: 1.0
          }          
          quantile_values {
            quantile: 0.99
            value: 1.0
          }
          quantile_values {
            quantile: 1.0
            value: 1.0
          }
        }
        data_points {
          labels {
            key: "Namespace"
            value: "AWS/DynamoDB"
          }
          labels {
            key: "MetricName"
            value: "ConsumedReadCapacityUnits"
          }
          labels {
            key: "TableName"
            value: "MyTable"
          }
          start_time_unix_nano: 1604948460000000000
          time_unix_nano: 1604948520000000000
          count: 2
          sum: 5.0
          quantile_values {
            quantile: 0.0
            value: 2.0
          }
          quantile_values {
            quantile: 1.0
            value: 3.0
          }
        }
      }
    }
  }
}
```

**Objet de haut niveau pour sérialiser les données métriques OpenTelemetry **

`ExportMetricsServiceRequest`est le wrapper de haut niveau pour sérialiser la charge utile d'un OpenTelemetry exportateur. Il contient une ou plusieurs `ResourceMetrics`.

```
message ExportMetricsServiceRequest {
  // An array of ResourceMetrics.
  // For data coming from a single resource this array will typically contain one
  // element. Intermediary nodes (such as OpenTelemetry Collector) that receive
  // data from multiple origins typically batch the data before forwarding further and
  // in that case this array will contain multiple elements.
  repeated opentelemetry.proto.metrics.v1.ResourceMetrics resource_metrics = 1;
}
```

`ResourceMetrics`est l'objet de niveau supérieur pour représenter les MetricData objets. 

```
// A collection of InstrumentationLibraryMetrics from a Resource.
message ResourceMetrics {
  // The resource for the metrics in this message.
  // If this field is not set then no resource info is known.
  opentelemetry.proto.resource.v1.Resource resource = 1;
  
  // A list of metrics that originate from a resource.
  repeated InstrumentationLibraryMetrics instrumentation_library_metrics = 2;
}
```

**L'objet Ressource**

`Resource` est un objet de paire de valeurs qui contient des informations sur la ressource qui a généré les métriques. Pour les métriques créées par AWS, la structure de données contient l'Amazon Resource Name (ARN) de la ressource liée à la métrique, telle qu'une instance EC2 ou un compartiment S3.

L'objet `Resource` contient un attribut appelé `attributes`, qui stocke une liste des paires de valeurs clés.
+ `cloud.account.id` contient l'ID de compte
+ `cloud.region` contient la région
+ `aws.exporter.arn` contient l'ARN du flux de métriques
+ `cloud.provider` est toujours `aws`.

```
// Resource information.
message Resource {
  // Set of labels that describe the resource.
  repeated opentelemetry.proto.common.v1.KeyValue attributes = 1;
  
  // dropped_attributes_count is the number of dropped attributes. If the value is 0,
  // no attributes were dropped.
  uint32 dropped_attributes_count = 2;
}
```

**L' InstrumentationLibraryMetrics objet**

Le champ instrumentation\$1library ne sera pas rempli. Nous ne remplirons que le champ de métriques que nous exportons.

```
// A collection of Metrics produced by an InstrumentationLibrary.
message InstrumentationLibraryMetrics {
  // The instrumentation library information for the metrics in this message.
  // If this field is not set then no library info is known.
  opentelemetry.proto.common.v1.InstrumentationLibrary instrumentation_library = 1;
  // A list of metrics that originate from an instrumentation library.
  repeated Metric metrics = 2;
}
```

**L'objet Metric**

L'objet de métrique contient un champ de données `DoubleSummary` qui contient une liste de `DoubleSummaryDataPoint`.

```
message Metric {
  // name of the metric, including its DNS name prefix. It must be unique.
  string name = 1;

  // description of the metric, which can be used in documentation.
  string description = 2;

  // unit in which the metric value is reported. Follows the format
  // described by http://unitsofmeasure.org/ucum.html.
  string unit = 3;

  oneof data {
    IntGauge int_gauge = 4;
    DoubleGauge double_gauge = 5;
    IntSum int_sum = 6;
    DoubleSum double_sum = 7;
    IntHistogram int_histogram = 8;
    DoubleHistogram double_histogram = 9;
    DoubleSummary double_summary = 11;
  }
}

message DoubleSummary {
  repeated DoubleSummaryDataPoint data_points = 1;
}
```

**L' MetricDescriptor objet**

L' MetricDescriptor objet contient des métadonnées. Pour plus d'informations, consultez [metrics.proto](https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/metrics/v1/metrics.proto#L110) sur. GitHub

Pour les flux métriques, le contenu MetricDescriptor est le suivant :
+ `name` sera `amazonaws.com/metric_namespace/metric_name`
+ `description` sera vide.
+ `unit` sera rempli en mappant l'unité de référence de la métrique à la variante sensible à la casse du code unifié pour les unités de mesure. Pour de plus amples informations, veuillez consulter [Traductions au format OpenTelemetry 0.7.0 en CloudWatch](CloudWatch-metric-streams-formats-opentelemetry-translation.md) and le [Code unifié des unités de mesure](https://ucum.org/ucum.html).
+ `type` sera `SUMMARY`.

**L' DoubleSummaryDataPoint objet**

L' DoubleSummaryDataPoint objet contient la valeur d'un point de données unique dans une série chronologique dans une DoubleSummary métrique.

```
// DoubleSummaryDataPoint is a single data point in a timeseries that describes the
// time-varying values of a Summary metric.
message DoubleSummaryDataPoint {
  // The set of labels that uniquely identify this timeseries.
  repeated opentelemetry.proto.common.v1.StringKeyValue labels = 1;

  // start_time_unix_nano is the last time when the aggregation value was reset
  // to "zero". For some metric types this is ignored, see data types for more
  // details.
  //
  // The aggregation value is over the time interval (start_time_unix_nano,
  // time_unix_nano].
  //
  // Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January
  // 1970.
  //
  // Value of 0 indicates that the timestamp is unspecified. In that case the
  // timestamp may be decided by the backend.
  fixed64 start_time_unix_nano = 2;

  // time_unix_nano is the moment when this aggregation value was reported.
  //
  // Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January
  // 1970.
  fixed64 time_unix_nano = 3;

  // count is the number of values in the population. Must be non-negative.
  fixed64 count = 4;

  // sum of the values in the population. If count is zero then this field
  // must be zero.
  double sum = 5;

  // Represents the value at a given quantile of a distribution.
  //
  // To record Min and Max values following conventions are used:
  // - The 1.0 quantile is equivalent to the maximum value observed.
  // - The 0.0 quantile is equivalent to the minimum value observed.
  message ValueAtQuantile {
    // The quantile of a distribution. Must be in the interval
    // [0.0, 1.0].
    double quantile = 1;

    // The value at the given quantile of a distribution.
    double value = 2;
  }

  // (Optional) list of values at different quantiles of the distribution calculated
  // from the current snapshot. The quantiles must be strictly increasing.
  repeated ValueAtQuantile quantile_values = 6;
}
```

Pour de plus amples informations, veuillez consulter [Traductions au format OpenTelemetry 0.7.0 en CloudWatch](CloudWatch-metric-streams-formats-opentelemetry-translation.md).

# Traductions au format OpenTelemetry 0.7.0 en CloudWatch
<a name="CloudWatch-metric-streams-formats-opentelemetry-translation"></a>

CloudWatch effectue certaines transformations pour mettre CloudWatch les données en OpenTelemetry format.

**Traduction de l'espace de noms, du nom de la métrique et des dimensions**

Ces attributs sont des paires de valeurs clés codées dans le mappage.
+ Une paire contient l'espace de noms de la métrique
+ Une paire contient le nom de la métrique
+ Pour chaque dimension, CloudWatch stocke la paire suivante : `metricDatum.Dimensions[i].Name, metricDatum.Dimensions[i].Value`

**Translation de la moyenne, de la somme SampleCount, du minimum et du maximum**

Le point de données Summary permet d' CloudWatch exporter toutes ces statistiques en utilisant un seul point de données.
+ `startTimeUnixNano`contient le CloudWatch `startTime`
+ `timeUnixNano`contient le CloudWatch `endTime`
+ `sum` contient la statistique Sum (Somme).
+ `count`contient la SampleCount statistique.
+ `quantile_values` contient deux objets `valueAtQuantile.value` :
  + `valueAtQuantile.quantile = 0.0` avec `valueAtQuantile.value = Min value`
  + `valueAtQuantile.quantile = 0.99` avec `valueAtQuantile.value = p99 value`
  + `valueAtQuantile.quantile = 0.999` avec `valueAtQuantile.value = p99.9 value`
  + `valueAtQuantile.quantile = 1.0` avec `valueAtQuantile.value = Max value`

Les ressources qui consomment le flux métrique peuvent calculer la statistique moyenne sous la forme **SampleCountSomme/**.

**Traduction d'unités**

CloudWatch les unités sont mappées selon la variante distinguant majuscules et minuscules du code unifié pour les unités de mesure, comme indiqué dans le tableau suivant. Pour de plus amples informations, veuillez consulter le [Code unifié des unités de mesure](https://ucum.org/ucum.html).


| CloudWatch | OpenTelemetry | 
| --- | --- | 
|  Seconde |  s | 
|  Seconde ou secondes |  s | 
|  Microsecondes |  us | 
|  Millisecondes |  ms | 
|  Octets |  Bit | 
|  Kilooctets |  Ko | 
|  Mégaoctets |  MBy | 
|  Gigaoctets |  GBy | 
|  Téra-octets |  TBy | 
|  Bits |  bit | 
|  Kilobits |  Kb | 
|  Megabits |  MBit | 
|  Gigabits |  GBit | 
|  Terabits |  Tb | 
|  Pourcentage |  % | 
|  Nombre |  \$1Count\$1 | 
|  Aucune |  1 | 

Les unités combinées avec une barre oblique sont mappées en appliquant la OpenTelemetry conversion des deux unités. Par exemple, Bytes/Second est mappé à By/s.

# Comment analyser les messages OpenTelemetry 0.7.0
<a name="CloudWatch-metric-streams-formats-opentelemetry-parse"></a>

Cette section fournit des informations pour vous aider à démarrer avec l'analyse de la version OpenTelemetry 0.7.0.

Tout d'abord, vous devez obtenir des liaisons spécifiques à la langue, qui vous permettent d'analyser les messages de la OpenTelemetry version 0.7.0 dans votre langue préférée.

**Pour obtenir des liaisons spécifiques à une langue**
+ Les étapes à suivre dépendent de votre langue préférée.
  + Pour utiliser Java, ajoutez la dépendance Maven suivante à votre projet Java : [OpenTelemetry Java >> 0.14.1](https://mvnrepository.com/artifact/io.opentelemetry/opentelemetry-proto/0.14.1).
  + Pour utiliser une autre langue, procédez comme suit :

    1. Vérifiez que votre langue est prise en charge en consultant la liste à l'adresse[Générer vos classes](https://developers.google.com/protocol-buffers/docs/proto3#generating).

    1. Installez le compilateur Protobuf en suivant les étapes indiquées dans [Télécharger les tampons de protocole](https://developers.google.com/protocol-buffers/docs/downloads).

    1. Téléchargez les ProtoBuf définitions OpenTelemetry 0.7.0 dans la [version 0.7.0](https://github.com/open-telemetry/opentelemetry-proto/releases/tag/v0.7.0). 

    1. Vérifiez que vous vous trouvez dans le dossier racine des ProtoBuf définitions OpenTelemetry 0.7.0 téléchargées. Créez ensuite un dossier `src` puis exécutez la commande pour générer des liaisons spécifiques à la langue. Pour de plus amples informations, veuillez consulter [Générer vos classes](https://developers.google.com/protocol-buffers/docs/proto3#generating). 

       Voici un exemple qui montre comment générer des liaisons Javascript.

       ```
       protoc --proto_path=./ --js_out=import_style=commonjs,binary:src \
       opentelemetry/proto/common/v1/common.proto \
       opentelemetry/proto/resource/v1/resource.proto \
       opentelemetry/proto/metrics/v1/metrics.proto \
       opentelemetry/proto/collector/metrics/v1/metrics_service.proto
       ```

La section suivante présente des exemples d'utilisation des liaisons spécifiques à la langue que vous pouvez créer à l'aide des instructions précédentes.

**Java**

```
package com.example;

import io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

public class MyOpenTelemetryParser {

    public List<ExportMetricsServiceRequest> parse(InputStream inputStream) throws IOException {
        List<ExportMetricsServiceRequest> result = new ArrayList<>();

        ExportMetricsServiceRequest request;
        /* A Kinesis record can contain multiple `ExportMetricsServiceRequest`
           records, each of them starting with a header with an
           UnsignedVarInt32 indicating the record length in bytes:
            ------ --------------------------- ------ -----------------------
           |UINT32|ExportMetricsServiceRequest|UINT32|pExportMetricsService...
            ------ --------------------------- ------ -----------------------
         */
        while ((request = ExportMetricsServiceRequest.parseDelimitedFrom(inputStream)) != null) {
            // Do whatever we want with the parsed message
            result.add(request);
        }

        return result;
    }
}
```

**JavaScript**

Cet exemple suppose que le dossier racine avec les liaisons générées est `./`

L'argument de données de la fonction `parseRecord` peut avoir l'un des types suivants :
+ `Uint8Array` c'est optimal
+ `Buffer` optimal sous le nœud
+ `Array.number` entier 8 bits

```
const pb = require('google-protobuf')
const pbMetrics =
    require('./opentelemetry/proto/collector/metrics/v1/metrics_service_pb')

function parseRecord(data) {
    const result = []

    // Loop until we've read all the data from the buffer
    while (data.length) {
        /* A Kinesis record can contain multiple `ExportMetricsServiceRequest`
           records, each of them starting with a header with an
           UnsignedVarInt32 indicating the record length in bytes:
            ------ --------------------------- ------ -----------------------
           |UINT32|ExportMetricsServiceRequest|UINT32|ExportMetricsService...
            ------ --------------------------- ------ -----------------------
         */
        const reader = new pb.BinaryReader(data)
        const messageLength = reader.decoder_.readUnsignedVarint32()
        const messageFrom = reader.decoder_.cursor_
        const messageTo = messageFrom + messageLength

        // Extract the current `ExportMetricsServiceRequest` message to parse
        const message = data.subarray(messageFrom, messageTo)

        // Parse the current message using the ProtoBuf library
        const parsed =
            pbMetrics.ExportMetricsServiceRequest.deserializeBinary(message)

        // Do whatever we want with the parsed message
        result.push(parsed.toObject())

        // Shrink the remaining buffer, removing the already parsed data
        data = data.subarray(messageTo)
    }

    return result
}
```

**Python**

Vous devez lire les délimiteurs `var-int` vous-même ou utilisez les méthodes internes `_VarintBytes(size)` et `_DecodeVarint32(buffer, position)`. Ceux-ci retournent la position dans le tampon juste après les octets de taille. Le côté lecture construit un nouveau tampon qui est limité à la lecture uniquement des octets du message. 

```
size = my_metric.ByteSize()
f.write(_VarintBytes(size))
f.write(my_metric.SerializeToString())
msg_len, new_pos = _DecodeVarint32(buf, 0)
msg_buf = buf[new_pos:new_pos+msg_len]
request = metrics_service_pb.ExportMetricsServiceRequest()
request.ParseFromString(msg_buf)
```

**Go**

Utilisez `Buffer.DecodeMessage()`.

**C\$1**

Utilisez `CodedInputStream`. Cette classe peut lire des messages délimités par la taille.

**C\$1\$1**

Les fonctions décrites dans `google/protobuf/util/delimited_message_util.h` peuvent lire des messages délimités par la taille.

**Autres langages**

Pour d'autres langues, consultez [Télécharger les tampons de protocole](https://developers.google.com/protocol-buffers/docs/downloads).

Lors de l'implémentation de l'analyseur, considérez qu'un registre Kinesis peut contenir plusieurs messages des tampons de protocole `ExportMetricsServiceRequest`, chacun d'entre eux commençant par un en-tête avec un objet `UnsignedVarInt32` indiquant la longueur de l'enregistrement en octets.

# Résolution des problèmes liés aux flux métriques dans CloudWatch
<a name="CloudWatch-metric-streams-troubleshoot"></a>

Si vous ne voyez pas les données de métriques à votre destination finale, vérifiez les points suivants :
+ Vérifiez que le flux de métriques est en cours d'exécution. Pour savoir comment utiliser la CloudWatch console à cette fin, consultez[Exploitation et entretien des flux métriques](CloudWatch-metric-streams-operation.md).
+ Les métriques publiées plus de deux jours auparavant ne sont pas diffusées en flux de métriques. Pour déterminer si une métrique particulière sera diffusée, tracez le graphique de la métrique dans la CloudWatch console et vérifiez l'âge du dernier point de données visible. Si elles datent de plus de deux jours, elles ne seront pas prises en charge par les flux de métriques.
+ Vérifiez les métriques émises par le flux de métriques. Dans la CloudWatch console, sous **Métriques**, examinez l'**AWS/CloudWatch/MetricStreams**espace de noms pour les **PublishErrorRate**métriques **MetricUpdate**TotalMetricUpdate****, et.
+ Si la **PublishErrorRate**métrique est élevée, vérifiez que la destination utilisée par le flux de diffusion Firehose existe et que le rôle IAM spécifié dans la configuration du flux métrique accorde au `CloudWatch` service principal les autorisations d'écriture dans ce flux. Pour de plus amples informations, veuillez consulter [Confiance entre Firehose CloudWatch et Firehose](CloudWatch-metric-streams-trustpolicy.md).
+ Vérifiez que le flux de diffusion Firehose dispose de l’autorisation d’écrire vers la destination finale.
+ Dans la console Firehose, affichez le flux de diffusion Firehose utilisé pour le flux de métriques et consultez l’onglet **Surveillance** pour voir si le flux de diffusion Firehose reçoit des données.
+ Confirmez que vous avez configuré votre flux de diffusion Firehose avec les informations correctes.
+ Vérifiez tous les journaux ou métriques disponibles pour la destination finale vers laquelle le flux de diffusion Firehose écrit.
+ Pour obtenir des informations plus détaillées, activez la journalisation CloudWatch des erreurs dans les journaux sur le flux de diffusion Firehose. Pour plus d'informations, consultez la section [Surveillance d'Amazon Data Firehose à l'aide CloudWatch ](https://docs.aws.amazon.com/firehose/latest/dev/monitoring-with-cloudwatch-logs.html) de journaux.

**Note**  
Après l’envoi d’un point de données pour une métrique et un horodatage spécifiques, il ne sera plus envoyé, même si la valeur du point de données change ultérieurement.