View a markdown version of this page

OpenTelemetry Collectionneur - Amazon CloudWatch

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

OpenTelemetry Collectionneur

Le OpenTelemetry Collector est un agent open source indépendant du fournisseur qui reçoit, traite et exporte des données de télémétrie. Il agit comme un pipeline central entre vos applications et Amazon CloudWatch, en collectant des métriques, des journaux et des traces provenant de plusieurs sources et en les envoyant CloudWatch via le OpenTelemetry protocole OTLP (OTLP).

L'utilisation du OpenTelemetry Collector CloudWatch offre les avantages suivants :

  • Collectez les données télémétriques de plusieurs applications et hôtes via un seul agent, réduisant ainsi le nombre de connexions à. CloudWatch

  • Traitez et filtrez la télémétrie avant de l'envoyer à CloudWatch, notamment en ajoutant ou en supprimant des attributs, en groupant les données et en échantillonnant les traces.

  • Utilisez la même configuration de collecteur dans tous les environnements cloud AWS, sur site et dans d'autres environnements cloud, afin de fournir un pipeline de télémétrie cohérent quel que soit l'endroit où vos applications s'exécutent.

  • Envoyez des métriques à CloudWatch avec des libellés enrichis qui peuvent être interrogés à l'aide du langage de requête Prometheus (ProMQL) dans Query Studio. CloudWatch

Récepteurs compatibles

Le OpenTelemetry Collector prend en charge une large gamme de récepteurs pour l'ingestion de données de télémétrie. Vous pouvez utiliser des OpenTelemetry récepteurs tels que le récepteur OTLP pour les applications équipées de OpenTelemetry SDK, ou les récepteurs Prometheus pour extraire les métriques des exportateurs Prometheus existants. Les récepteurs Prometheus couramment utilisés sont les suivants : CloudWatch

  • Récepteur Prometheus, pour gratter n'importe quel terminal Prometheus-compatible

  • Récepteur Host Metrics, pour collecter des métriques au niveau du système auprès de l'hôte

  • Récepteur Kubernetes Cluster, pour collecter des métriques au niveau du cluster à partir du serveur d'API Kubernetes

Vous pouvez configurer plusieurs récepteurs dans un seul collecteur, ce qui vous permet de collecter à la fois les métriques OpenTelemetry et celles de Prometheus et de les CloudWatch envoyer via le même pipeline. Pour la liste complète des récepteurs disponibles, consultez le référentiel OpenTelemetry Collector.

Prise en main

Prérequis — Si vous utilisez le point de terminaison OTLP pour le suivi, assurez-vous que la recherche de transactions est activée.

Étapes :

  1. Téléchargez la dernière version de la distribution OpenTelemetry Collector. Pour plus d'informations, consultez les versions OpenTelemetry Collector.

  2. Installez le OpenTelemetry collecteur sur votre hôte. Le collecteur fonctionne sur tous les systèmes d'exploitation et toutes les plateformes. Pour plus d’informations, consultez Installer le Collector.

  3. Configurez les AWS informations d'identification sur votre hôte Amazon EC2 ou sur site. Le collecteur utilise ces informations d'identification pour s'authentifier CloudWatch lors de l'envoi de données de télémétrie. Voir ci-dessous pour plus de détails.

    Setup IAM permissions for Amazon EC2
    Suivez la procédure ci-dessous pour associer la politique IAM CloudWatchAgentServerPolicy au rôle IAM de votre instance Amazon EC2.
    1. Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/.

    2. Sélectionnez Rôles, puis recherchez et sélectionnez le rôle utilisé par votre instance Amazon EC2.

    3. Sous l’onglet Autorisations, sélectionnez Ajouter des autorisations, Associer des politiques.

    4. À l’aide du champ de recherche, recherchez la politique CloudWatchAgentServerPolicy.

    5. Sélectionnez la politique CloudWatchAgentServerPolicy, puis choisissez Ajouter des autorisations.

    Setup IAM permissions for on-premise hosts
    Vous pouvez créer un utilisateur IAM qui peut être utilisé pour fournir des autorisations à vos hôtes sur site.
    1. Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/.

    2. Sélectionnez Utilisateurs, Créer un utilisateur.

    3. Sous Détails de l’utilisateur, pour Nom d’utilisateur, entrez un nom pour le nouvel utilisateur IAM. Il s'agit du nom de connexion AWS qui sera utilisé pour authentifier votre hôte.

    4. Choisissez Suivant.

    5. Sur la page Définir les autorisations, pour les Options des autorisations, sélectionnez Attacher directement les politiques.

    6. Dans la liste des politiques d'autorisation, sélectionnez la CloudWatchAgentServerPolicypolitique à ajouter à votre utilisateur.

    7. Choisissez Suivant.

    8. Sur la page Réviser et créer, assurez-vous que vous êtes satisfait du nom d'utilisateur et que la CloudWatchAgentServerPolicypolitique figure dans le résumé des autorisations.

    9. Choisissez Create user (Créer un utilisateur).

    10. Créez et récupérez votre clé AWS d'accès et votre clé secrète : dans le volet de navigation de la console IAM, choisissez Utilisateurs, puis sélectionnez le nom d'utilisateur de l'utilisateur que vous avez créé à l'étape précédente.

    11. Sur la page de l’utilisateur, ouvrez l’onglet Informations d’identification de sécurité.

    12. Dans la section Clés d’accès, sélectionnez Créer une clé d’accès.

    13. Pour Créer une clé d’accès – Étape 1, sélectionnez Interface de ligne de commande (CLI).

    14. Pour Créer une clé d’accès – Étape 2, ajoutez éventuellement une balise puis cliquez sur Suivant.

    15. Pour Créer une clé d’accès – Étape 3, sélectionnez Télécharger le fichier .csv pour enregistrer un fichier .csv avec la clé d’accès et la clé d’accès secrète de votre utilisateur IAM. Vous aurez besoin de ces informations pour l’étape suivante.

    16. Sélectionnez Exécuté.

    17. Configurez vos AWS informations d'identification sur votre hôte local en saisissant la commande suivante. Remplacez ACCESS_KEY_ID et SECRET_ACCESS_ID par votre clé d’accès et votre clé d’accès secrète nouvellement générées à partir du fichier .csv que vous avez téléchargé à l’étape précédente.

      $ aws configure AWS Access Key ID [None]: ACCESS_KEY_ID AWS Secret Access Key [None]: SECRET_ACCESS_ID Default region name [None]: MY_REGION Default output format [None]: json
    Astuce

    Pour les hôtes locaux qui ont uniquement besoin d'envoyer des métriques ou des journaux, vous pouvez utiliser l'authentification par jeton porteur comme alternative plus simple à la configuration des clés d' AWS accès. Les jetons porteurs ne nécessitent pas l'aws configureétape ou les fichiers d'identification sur l'hôte. Pour de plus amples informations, veuillez consulter Configuration de l'authentification par jeton porteur pour Metrics.

  4. Configurez les AWS informations d'identification pour vos clusters Amazon EKS ou Kubernetes. Le moyen le plus simple de démarrer avec Amazon EKS est d'utiliser le module complémentaire EKS OTel Container Insights. Si vous préférez utiliser directement le OpenTelemetry collecteur, suivez la procédure ci-dessous pour configurer les AWS informations d'identification de vos clusters Amazon EKS ou Kubernetes auxquels envoyer des données de télémétrie. CloudWatch

    Setup IAM permissions for Amazon EKS
    1. Créez un fournisseur d’identité OIDC IAM pour votre cluster à l’aide de la commande suivante.

      eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} --region ${REGION} --approve
    2. Attribuez des rôles IAM au compte de service Kubernetes pour OTel Collector à l’aide de la commande suivante.

      eksctl create iamserviceaccount \ --name ${COLLECTOR_SERVICE_ACCOUNT}\ --namespace ${NAMESPACE} \ --cluster ${CLUSTER_NAME} \ --region ${REGION} \ --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --approve \ --override-existing-serviceaccounts
    Setup IAM permissions for Kubernetes
    1. Configurez vos AWS informations d'identification sur votre hôte local en saisissant la commande suivante. Remplacez ACCESS_KEY_ID et SECRET_ACCESS_ID par votre clé d'accès et votre clé d'accès secrète nouvellement générées à partir du fichier .csv que vous avez téléchargé à l'étape précédente. Par défaut, le fichier d'identification est enregistré sous//. home/user aws/credentials. .

      aws configure AWS Access Key ID [None]: ACCESS_KEY_ID AWS Secret Access Key [None]: SECRET_ACCESS_ID Default region name [None]: MY_REGION Default output format [None]: json
    2. Modifiez la ressource OpenTelemetry Collector pour ajouter le secret d'identification AWS nouvellement créé à l'aide de la commande : kubectl edit OpenTelemetryCollector otel_collector

    3. À l'aide de l'éditeur de fichiers, ajoutez les AWS informations d'identification dans le OpenTelemetryCollector conteneur en ajoutant la configuration suivante en haut du déploiement. Remplacez le chemin /home/user/.aws/credentials par l'emplacement de votre fichier d' AWS informations d'identification local.

      spec: volumeMounts: - mountPath: /rootfs volumeMounts: - name: aws-credentials mountPath: /root/.aws readOnly: true volumes: - hostPath: path: /home/user/.aws/credentials name: aws-credentials
  5. Configurez l'exportateur OTLP dans la configuration de votre collecteur pour envoyer la télémétrie au point de terminaison. CloudWatch Consultez les exemples ci-dessous.

Authentifiez-vous avec un jeton porteur (clé API)

Si vous n'avez pas besoin de configurer les AWS informations d'identification sur l'hôte (par exemple, si vous utilisez une infrastructure autre que l'AWS infrastructure, d'autres fournisseurs de cloud ou des CI/CD pipelines), vous pouvez utiliser l'authentification par jeton porteur au lieu de SigV4. Les jetons porteurs sont pris en charge pour les points de terminaison des métriques et des journaux (des clés d'API distinctes sont requises pour chaque service). L'authentification par jeton porteur n'est pas prise en charge pour les traces.

Pour les instructions de configuration, voirConfiguration de l'authentification par jeton porteur pour Metrics. Pour les journaux, voir Configuration de l'authentification par jeton porteur pour les journaux.

Pour un exemple de configuration de collecteur utilisant des jetons de support, consultez l'exemple de métriques de jetons de support dans les exemples de configuration de collecteur ci-dessous.

Exemples de configuration de collecteurs

Copiez et collez le contenu ci-dessous pour configurer votre collecteur afin qu’il envoie les journaux et les traces aux points de terminaison OTLP.

receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: otlphttp/logs: compression: gzip logs_endpoint: logs_otlp_endpoint headers: x-aws-log-group: ency_log_group x-aws-log-stream: default auth: authenticator: sigv4auth/logs otlphttp/traces: compression: gzip traces_endpoint: traces_otlp_endpoint auth: authenticator: sigv4auth/traces extensions: sigv4auth/logs: region: "region" service: "logs" sigv4auth/traces: region: "region" service: "xray" service: telemetry: extensions: [sigv4auth/logs, sigv4auth/traces] pipelines: logs: receivers: [otlp] exporters: [otlphttp/logs] traces: receivers: [otlp] exporters: [otlphttp/traces]

Voici un exemple d’envoi de journaux et de traces à l’aide de sigv4 vers us-east-1.

receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: otlphttp/logs: compression: gzip logs_endpoint: https://logs.us-east-1.amazonaws.com/v1/logs headers: x-aws-log-group: MyApplicationLogs x-aws-log-stream: default auth: authenticator: sigv4auth/logs otlphttp/traces: compression: gzip traces_endpoint: https://xray.us-east-1.amazonaws.com/v1/traces auth: authenticator: sigv4auth/traces extensions: sigv4auth/logs: region: "us-east-1" service: "logs" sigv4auth/traces: region: "us-east-1" service: "xray" service: telemetry: extensions: [sigv4auth/logs, sigv4auth/traces] pipelines: logs: receivers: [otlp] exporters: [otlphttp/logs] traces: receivers: [otlp] exporters: [otlphttp/traces]
Note

Configurez vos OpenTelemetry SDK selon une configuration d'échantillonnage permanente afin d'enregistrer de manière fiable des intervalles de 100 % et d'obtenir une visibilité complète de vos applications critiques grâce aux signaux d'application. CloudWatch Pour plus d'informations, consultez un exemple de configuration d'échantillonneur du SDK OpenTelemetry Java. Pour un exemple de configuration de OpenTelemetry Collector avec un point de terminaison X-Ray OTLP, consultez le référentiel de démonstration des signaux d'application.

Copiez et collez le contenu ci-dessous pour configurer votre collecteur afin qu'il envoie des métriques aux points de terminaison OTLP.

receivers: otlp: protocols: http: endpoint: "0.0.0.0:4318" processors: batch: send_batch_size: 200 timeout: 10s exporters: otlphttp: tls: insecure: false endpoint: metrics_otlp_endpoint auth: authenticator: sigv4auth extensions: sigv4auth: service: "monitoring" region: "region" service: extensions: [sigv4auth] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp]

Voici un exemple d'envoi de métriques à l'aide de sigv4 à us-east-1.

receivers: otlp: protocols: http: endpoint: "0.0.0.0:4318" processors: batch: send_batch_size: 200 timeout: 10s exporters: otlphttp: tls: insecure: false endpoint: "https://monitoring.us-east-1.amazonaws.com/v1/metrics:443" auth: authenticator: sigv4auth extensions: sigv4auth: service: "monitoring" region: "us-east-1" service: extensions: [sigv4auth] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp]

Métriques avec authentification par jeton porteur

Voici un exemple d'envoi de métriques à l'aide d'un jeton porteur à us-east-1. Pour les instructions de configuration et les meilleures pratiques en matière de sécurité, consultezConfiguration de l'authentification par jeton porteur pour Metrics.

extensions: bearertokenauth: filename: "/etc/otel/cw-api-key" receivers: otlp: protocols: http: endpoint: "0.0.0.0:4318" processors: batch: send_batch_size: 200 timeout: 10s exporters: otlphttp: tls: insecure: false endpoint: "https://monitoring.us-east-1.amazonaws.com/v1/metrics" auth: authenticator: bearertokenauth service: extensions: [bearertokenauth] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp]
Important

Ne codez jamais en dur les clés d'API directement dans les fichiers de configuration du collecteur. filenameÀ utiliser pour lire à partir d'un secret monté ou ${env:VAR} à partir d'une variable d'environnement injectée par votre gestionnaire de secrets.

Note

Contrairement au SigV4, les jetons porteurs ne nécessitent pas de fichiers AWS d'identification, de rôles IAM ou de configuration IRSA. Le collecteur peut fonctionner sur n'importe quelle plate-forme sans dépendance au AWS SDK.