Fermer

janvier 16, 2024

Configuration AWS X-Ray avec cluster EKS

Configuration AWS X-Ray avec cluster EKS


Premiers pas avec AWS X-Ray

Rayons X AWS est un service qui collecte des données sur les demandes traitées par votre application et fournit des outils que vous pouvez utiliser pour afficher, filtrer et obtenir des informations sur ces données afin d’identifier les problèmes et les opportunités d’optimisation.

Pour toute demande tracée vers votre application, vous pouvez voir des informations détaillées non seulement sur la demande et la réponse, mais également sur les appels que votre application effectue vers les ressources AWS, les microservices, les bases de données et les API Web en aval.

Avantages d’AWS RUM

Configuration simple: AWS X-Ray peut être utilisé avec des applications exécutées sur Amazon Elastic Compute Cloud (EC2), Service de conteneur Amazon EC2 (Amazon ECS), AWS Lambda, AWS Elastic Beanstalk. Il est facile de démarrer avec X-Ray. Il vous suffit d’intégrer le SDK X-Ray à votre application et d’installer l’agent X-Ray.

Avec AWS Elastic Beanstalk, il vous suffit d’intégrer le SDK X-Ray à votre application puisque l’agent X-Ray est préinstallé sur Elastic Beanstalk.

Traçage de bout en bout: AWS X-Ray fournit une vue interservices de bout en bout des requêtes adressées à votre application. Il vous offre une vue centrée sur l’application des requêtes circulant dans votre application en regroupant les données collectées à partir de services individuels en une seule unité appelée trace.

Plan des services : AWS X-Ray crée une carte des services utilisés par votre application avec des données de trace que vous pouvez utiliser pour explorer des services ou des problèmes spécifiques.

Annotation et filtrage des données : AWS X-Ray vous permet d’ajouter des annotations aux données émises par des composants ou des services spécifiques de votre application. Vous pouvez l’utiliser pour ajouter des métadonnées spécifiques à votre entreprise qui vous aident à mieux diagnostiquer les problèmes.

Accès console et programmatique : Vous pouvez utiliser AWS X-Ray avec la AWS Management Console, l’AWS CLI et les kits SDK AWS. L’API X-Ray vous permet d’accéder au service par programmation afin que vous puissiez facilement exporter des données de trace ou ingérer les données dans vos propres outils et tableaux de bord d’analyse personnalisés.

Sécurité: AWS X-Ray est intégré à Gestion des identités et des accès AWS (IAM) afin que vous puissiez contrôler quels utilisateurs et ressources sont autorisés à accéder à vos traces et comment.

Énoncé du problème

Dans le cas de la surveillance de la latence dans le cluster EKS, nous n’avons pas pu le faire. Nous avons mis en place ELK pour la journalisation et Grefana et Prometheus pour surveiller notre environnement. Mais nous n’avons toujours pas pu surveiller la latence de chaque demande ni les traces de toutes les demandes.

Nous étions également confrontés au problème du suivi de la partie lente de l’application, comme dans le cas où nous utilisons Kafka, EKS et RDS dans le cluster et qu’il y a une certaine lenteur dans l’application, il était donc très difficile de trouver quel service est lent. .

Approche de solution

Comme nous l’avons mentionné, il existe certains problèmes concernant la gestion et la surveillance du cluster EKS. Ainsi, l’approche pour résoudre ce problème consiste à implémenter AWS X-ray dans votre application. Vous trouverez ci-dessous les conditions préalables et le plan de mise en œuvre pour AWS X-ray.

Prérequis: Le processus de configuration pour l’intégration d’AWS X-Ray avec AWS Distro for OpenTelemetry (ADOT) nécessite le respect de conditions préalables spécifiques décrites comme suit :

  • L’installation de Kubectl doit s’aligner sur la version du cluster respective.
  • eksctl doit être installé.
  • L’installation d’eksctl est requise.
  • Répondez aux exigences du certificat TLS pour garantir un cryptage de bout en bout.
  • Doit avoir un rôle IAM avec les autorisations (AmazonPrometheusRemoteWriteAccess, AWSXrayWriteOnlyAccess, CloudWatchAgentServerPolicy).
  • Si vous installez une version de module complémentaire v0.62.1 ou antérieure, accordez les autorisations aux modules complémentaires Amazon EKS pour installer ADOT.

Mise en œuvre: Après avoir satisfait aux prérequis, nous pouvons procéder à la mise en œuvre étape par étape d’AWS X-Ray, en respectant les points suivants :

  • Si vous installez une version de module complémentaire v0.62.1 ou antérieure, accordez les autorisations aux modules complémentaires Amazon EKS pour installer ADOT.
          kubectl apply -f https://amazon-eks.s3.amazonaws.com/docs/addons-otel-permissions.yaml
  • Créez un fournisseur IAM OIDC pour connecter le compte de service à AWS IAM.

eksctl utils associé-iam-oidc-provider –region=<Région AWS> –cluster=<Nom du cluster>

  • Créez votre compte de service et votre rôle IAM à l’aide de la commande ci-dessous. Nous devons modifier la partie en surbrillance en fonction de l’environnement dans la commande.
eksctl create iamserviceaccount \
    --name adot-collector \
    --namespace default \
    --cluster my-cluster \
    --attach-policy-arn arn:aws:iam::aws:policy/AmazonPrometheusRemoteWriteAccess \
    --attach-policy-arn arn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess \
    --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \
    --approve \
    --override-existing-serviceaccounts
  • Installez le module complémentaire ADOT Amazon EKS sur votre cluster AWS EKS en suivant les étapes ci-dessous :
    1. Ouvrez la console Amazon EKS à l’adresse https://console.aws.amazon.com/eks/home#/clusters.
    2. Dans le volet de gauche, sélectionnez Clusters, puis sélectionnez le nom de votre cluster sur la page Clusters.
    3. Choisissez l’onglet Modules complémentaires.
    4. Choisissez Obtenir plus de modules complémentaires.
    5. Sur la page Sélectionner des modules complémentaires, procédez comme suit :
      • Dans la section Modules complémentaires Amazon EKS, cochez la case AWS Distro for OpenTelemetry.
      • Choisissez Suivant.
    6. Sur la page Configurer les paramètres des modules complémentaires sélectionnés, procédez comme suit :
      • La version par défaut sera sélectionnée dans la liste déroulante Version. Sélectionnez la version que vous souhaitez utiliser.
      • (Facultatif) Si vous déployez un collecteur ADOT, développez les paramètres de configuration facultatifs et fournissez les valeurs de configuration qui correspondent à votre cas d’utilisation pour le déploiement du collecteur. Le schéma de configuration du module complémentaire fournit les options disponibles pour vos valeurs de configuration.
      • Développez les paramètres de configuration facultatifs et sélectionnez Remplacer pour la méthode de résolution des conflits si un compte de service est déjà créé dans le cluster sans rôle IAM.
      • Choisissez Suivant.

Sur la page Vérifier et ajouter, choisissez Créer. Une fois l’installation du module complémentaire terminée, vous voyez votre module complémentaire installé. Modifiez les valeurs ADOT à l’aide de la commande ci-dessous.

aws eks create-addon \
    --cluster-name <Clustername> \
    --addon-name adot \
    --configuration-values "{\"manager\":{\"resources\":{\"limits\":{\"cpu\":\"200m\"}}}}" \
    --resolve-conflicts=OVERWRITE
  • Maintenant, nous devons installer un gestionnaire de certificats pour valider l’authentification. Nous devons exécuter la commande ci-dessous pour l’installation.
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.8.2/cert-manager.yaml

Maintenant, nous devons déployer le collecteur ADOT en suivant les étapes ci-dessous :

1. Créez le fichier YAML ci-dessous avec le nom « collector-config-xray.yaml ». Dans ce YAML, vous devez modifier la partie en surbrillance en fonction de votre environnement.

apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
  name: my-collector-xray
spec:
  mode: deployment 
  serviceAccount: adot-collector 
  config: |
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: 0.0.0.0:4317
          http:
            endpoint: 0.0.0.0:4318
    processors:
    exporters:
      awsxray:
        region: <YOUR_AWS_REGION>
    service:
      pipelines:
        traces:
          receivers: [otlp]
          processors: []
          exporters: [awsxray]

2. Maintenant, nous devons exécuter le fichier YAML ci-dessus en utilisant la commande ci-dessous.

 kubectl apply -f collector-config-xray.yaml
  • Utilisez un exemple d’application pour générer des données de trace en suivant les étapes ci-dessous :

1. Téléchargez le fichier traffic-generator.yaml sur votre ordinateur à l’aide de la commande ci-dessous.

curl -O https://raw.githubusercontent.com/aws-observability/aws-otel-community/master/sample-configs/traffic-generator.yaml

2. Dans traffic-generator.yaml, assurez-vous que la valeur du deuxième type reflète votre mode. Lequel est « genre : déploiement. »

3. Maintenant, vous devez appliquer traffic-generator.yaml à votre cluster.

kubectl apply -f traffic-generator.yaml

4. Téléchargez le fichier sample-app.yaml sur votre ordinateur à l’aide de la commande ci-dessous.

curl -O https://raw.githubusercontent.com/aws-observability/aws-otel-community/master/sample-configs/sample-app.yaml

5. Dans sample-app.yaml, remplacez ce qui suit par votre propre région AWS par «« 

6. Dans sample-app.yaml, mettez à jour la valeur de OTEL_EXPORTER_OTLP_ENDPOINT s’il ne correspond pas au nom de votre service de collecteur. Par exemple, X-Ray nécessite le remplacement http://mon-collecteur-collecteur:4317 remplacer par http://mon-collecteur-xray-collector:4317.

7. Appliquez maintenant sample-app.yaml à votre cluster en suivant la commande ci-dessous.

kubectl apply -f sample-app.yaml
  • Maintenant, la mise en œuvre est terminée. Nous pouvons le valider en accédant à la console AWS.

Débogage

Il peut y avoir une erreur lors de la configuration d’AWS X-ray. Voici donc quelques aspects du débogage dans la configuration d’AWS X-Ray :

Erreurs de configuration : Vérifier que l’installation et la configuration des composants X-Ray, tels que l’intégration du SDK, les autorisations et les règles d’échantillonnage, sont correctement mises en œuvre.

Problèmes d’instrumentation : Identifier tout problème lié aux services d’instrumentation ou aux applications permettant d’envoyer des données de trace à X-Ray. Le débogage implique d’examiner l’intégration du SDK au sein de chaque service pour garantir qu’il capture les informations pertinentes.

Problèmes d’autorisation et d’accès : Autorisation de débogage et rôles IAM pour garantir que X-Ray dispose des autorisations nécessaires pour collecter et accéder aux informations de suivi sur les services et applications AWS.

Conclusion

En conclusion, la mise en œuvre d’AWS X-Ray nous a fourni des informations inestimables sur les performances et le comportement de notre système. Cet outil de traçage nous a donné une compréhension complète de notre architecture distribuée, nous permettant de tracer les demandes, d’identifier les goulots d’étranglement et d’optimiser l’utilisation des ressources. En conséquence, nous sommes bien placés pour améliorer l’efficacité et la fiabilité de notre système.






Source link