Activation de vos applications sur des clusters Amazon EKS
La vigie applicative CloudWatch est compatible avec les applications Java, Python, Node.js et .NET. Pour activer la vigie applicative pour vos applications sur un cluster Amazon EKS existant, vous pouvez utiliser AWS Management Console, AWS CDK ou la configuration avancée de surveillance automatique du module complémentaire d’observabilité CloudWatch.
Rubriques
Activation de la vigie applicative sur un cluster Amazon EKS à l’aide de la console
Pour activer la vigie applicative CloudWatch sur vos applications dans un cluster Amazon EKS existant, suivez les instructions de cette section.
Important
Si vous utilisez déjà OpenTelemetry avec une application que vous avez l’intention d’activer pour Application Signals, veuillez consulter la rubrique Systèmes pris en charge avant d’activer Application Signals.
Pour activer Application Signals pour vos applications sur un cluster Amazon EKS existant
Note
Si vous n’avez pas encore activé la vigie applicative, suivez d’abord les instructions indiquées dans la section Activation de la vigie applicative dans votre compte, puis suivez la procédure ci-dessous.
Ouvrez la console CloudWatch à l’adresse https://console.aws.amazon.com/cloudwatch/
. Sélectionnez Vigie applicative.
Pour Spécifier la plateforme, choisissez EKS.
Pour Sélectionner un cluster EKS, sélectionnez le cluster dans lequel vous souhaitez activer Application Signals.
Si le module complémentaire EKS Amazon CloudWatch Observability n’est pas encore activé sur ce cluster, vous êtes invité à l’activer. Dans ce cas, vous pouvez procéder de l’une des façons suivantes :
Choisissez Ajouter le module complémentaire∘EKS CloudWatch Observability. La console Amazon EKS apparaît.
Cochez la case Amazon CloudWatch Observability et choisissez Suivant.
Le module complémentaire∘EKS CloudWatch Observability permet à la fois à Application Signals et à CloudWatch Container Insights de bénéficier de l’observabilité améliorée pour Amazon EKS. Pour plus d'informations sur Container Insights, consultez Container Insights.
Sélectionnez la version la plus récente du module complémentaire à installer.
Sélectionnez un rôle IAM à utiliser pour le module complémentaire. Si vous choisissez Hériter du nœud, attachez les autorisations appropriées au rôle IAM utilisé par vos composants master. Remplacez
my-worker-node-role par le rôleIAM utilisé par vos composants master Kubernetes.aws iam attach-role-policy \ --role-namemy-worker-node-role\ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --policy-arn arn:aws:iam::aws:policy/AWSXRayWriteOnlyAccessSi vous souhaitez créer une fonction du service pour utiliser le module complémentaire, veuillez consulter Installation de l’agent CloudWatch à l’aide du module complémentaire EKS d’observabilité Amazon CloudWatch ou des Charts de Helm.
Choisissez Suivant, confirmez les informations affichées à l’écran, puis choisissez Créer.
Dans l’écran suivant, choisissez Activer CloudWatch Application Signals pour revenir à la console CloudWatch et terminer le processus.
-
Il existe deux options pour activer vos applications pour la vigie applicative. Pour plus de cohérence, il est recommandé de choisir une seule option par cluster.
L’option Console est plus simple. L’utilisation de cette méthode entraîne le redémarrage immédiat de vos pods.
La méthode Fichier manifeste annoté vous permet de mieux contrôler le moment où vos pods redémarrent et peut également vous aider à gérer votre surveillance de manière plus décentralisée si vous ne souhaitez pas la centraliser.
Note
Si vous activez la vigie applicative pour une application Node.js utilisant le format ESM, passez directement à Configuration d’une application Node.js utilisant le format de module ESM.
Choisissez Afficher les services lorsque vous avez terminé. Cela vous amène à la vue Services d’Application Signals, où vous pouvez voir les données collectées par Application Signals. Les données peuvent prendre quelques minutes pour s’afficher.
Pour activer Application Signals dans un autre cluster Amazon EKS, choisissez Activer Application Signals dans l’écran Services.
Pour plus d’informations sur la vue Services, veuillez consulter Surveillez l’état de fonctionnement de vos applications avec Application Signals.
Note
Si vous utilisez un serveur WSGI pour votre application Python, consultez Aucune donnée de la vigie applicative pour les applications Python qui utilisent un serveur WSGI pour connaître les étapes nécessaires à la compatibilité avec la vigie applicative.
D’autres points importants concernant la configuration des applications Python pour la vigie applicative sont également détaillés dans cette documentation. Pour de plus amples informations, consultez L’application Python ne démarre pas après l’activation de la vigie applicative.
Configuration d’une application Node.js utilisant le format de module ESM
Un support limité est disponible pour les applications Node.js utilisant le format de module ESM. Pour en savoir plus, consultez Limitations connues concernant Node.js avec ESM.
Pour le format du module ESM, l’activation de la vigie applicative via la console ou par annotation du fichier manifeste n’est pas prise en charge. Ignorez l’étape 8 de la procédure précédente et procédez plutôt comme suit.
Pour activer la vigie applicative pour une application Node.js avec ESM
Installez les dépendances nécessaires à l’instrumentation automatique dans votre application Node.js :
npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation npm install @opentelemetry/instrumentation@0.54.0Ajoutez les variables d’environnement suivantes au Dockerfile de votre application, puis construisez l’image.
... ENV OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true ENV OTEL_TRACES_SAMPLER_ARG='endpoint=http://cloudwatch-agent.amazon-cloudwatch:2000' ENV OTEL_TRACES_SAMPLER='xray' ENV OTEL_EXPORTER_OTLP_PROTOCOL='http/protobuf' ENV OTEL_EXPORTER_OTLP_TRACES_ENDPOINT='http://cloudwatch-agent.amazon-cloudwatch:4316/v1/traces' ENV OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT='http://cloudwatch-agent.amazon-cloudwatch:4316/v1/metrics' ENV OTEL_METRICS_EXPORTER='none' ENV OTEL_LOGS_EXPORTER='none' ENV NODE_OPTIONS='--import @aws/aws-distro-opentelemetry-node-autoinstrumentation/register --experimental-loader=@opentelemetry/instrumentation/hook.mjs' ENV OTEL_SERVICE_NAME='YOUR_SERVICE_NAME' #replace with a proper service name ENV OTEL_PROPAGATORS='tracecontext,baggage,b3,xray' ... # command to start the application # for example # CMD ["node", "index.mjs"]Ajoutez les variables d’environnement
OTEL_RESOURCE_ATTRIBUTES_POD_NAME,OTEL_RESOURCE_ATTRIBUTES_NODE_NAME,OTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_NAME,POD_NAMESPACEetOTEL_RESOURCE_ATTRIBUTESau fichier YAML de déploiement de votre application. Par exemple :apiVersion: apps/v1 kind: Deployment metadata: name: nodejs-app labels: app: nodejs-app spec: replicas: 2 selector: matchLabels: app: nodejs-app template: metadata: labels: app: nodejs-app # annotations: # make sure this annotation doesn't exit # instrumentation.opentelemetry.io/inject-nodejs: 'true' spec: containers: - name: nodejs-app image:your-nodejs-application-image#replace with a proper image uri imagePullPolicy: Always ports: - containerPort: 8000 env: - name: OTEL_RESOURCE_ATTRIBUTES_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: OTEL_RESOURCE_ATTRIBUTES_NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName - name: OTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_NAME valueFrom: fieldRef: fieldPath: metadata.labels['app'] # Assuming 'app' label is set to the deployment name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: OTEL_RESOURCE_ATTRIBUTES value: "k8s.deployment.name=$(OTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_NAME),k8s.namespace.name=$(POD_NAMESPACE),k8s.node.name=$(OTEL_RESOURCE_ATTRIBUTES_NODE_NAME),k8s.pod.name=$(OTEL_RESOURCE_ATTRIBUTES_POD_NAME)"Déployez l’application Node.js sur le cluster.
Une fois vos applications activées sur les clusters Amazon EKS, vous pouvez surveiller leur état. Pour de plus amples informations, consultez Surveillez l’état de fonctionnement de vos applications avec Application Signals.
Activation de la vigie applicative sur un cluster Amazon EKS à l’aide de la configuration avancée du module complémentaire d’observabilité CloudWatch
À partir de la version v4.0.0-eksbuild.1 du module complémentaire Amazon EKS d’observabilité CloudWatch, vous pouvez activer automatiquement la vigie applicative pour toutes les charges de travail de service de vos clusters EKS grâce à un nouveau paramètre de surveillance automatique centralisée dans la configuration avancée du module complémentaire.
Pour choisir la fonctionnalité de surveillance automatique, vous devez modifier la configuration avancée lors de la création ou de la mise à jour du module complémentaire ou des Charts de Helm. En définissant monitorAllServices sur « true », le module complémentaire d’observabilité CloudWatch détecte automatiquement toutes les charges de travail de service Kubernetes et tente d’injecter automatiquement les kits SDK AWS Distro for OpenTelemetry (ADOT) pendant le déploiement. De plus, en activant restartPods, tous les pods des charges de travail de service sont redémarrés automatiquement afin d’injecter immédiatement les kits SDK ADOT dans le cadre d’un processus de redéploiement automatisé.
--configuration-values '{ "manager":{ "applicationSignals":{ "autoMonitor":{ "monitorAllServices":true, "restartPods":true } } } }'
Le module complémentaire d’observabilité CloudWatch offre également un contrôle plus précis, permettant d’inclure ou d’exclure certains services au besoin dans la nouvelle configuration avancée. Pour plus d’informations, consultez Configuration de la vigie applicative pour votre cluster Amazon EKS .
Activation de la vigie applicative sur Amazon EKS à l’aide d’AWS CDK
Si vous n’avez pas encore activé Application Signals dans ce compte, vous devez accorder à Application Signals les autorisations nécessaires pour découvrir vos services. Consultez Activation de la vigie applicative dans votre compte.
Activation de la vigie applicative pour vos applications.
import { aws_applicationsignals as applicationsignals } from 'aws-cdk-lib'; const cfnDiscovery = new applicationsignals.CfnDiscovery(this, 'ApplicationSignalsServiceRole', { } );La ressource Discovery CloudFormation accorde à la vigie applicative les autorisations suivantes :
-
xray:GetServiceGraph -
logs:StartQuery -
logs:GetQueryResults -
cloudwatch:GetMetricData -
cloudwatch:ListMetrics -
tag:GetResources
Pour plus d’informations sur ce rôle, consultez Autorisations de rôle lié à un service pour CloudWatch Application Signals.
-
Installez le module complémentaire
amazon-cloudwatch-observability.Créez un rôle IAM avec la
CloudWatchAgentServerPolicyet l’OIDC associés au cluster.const cloudwatchRole = new Role(this, 'CloudWatchAgentAddOnRole', { assumedBy: new OpenIdConnectPrincipal(cluster.openIdConnectProvider), managedPolicies: [ManagedPolicy.fromAwsManagedPolicyName('CloudWatchAgentServerPolicy')], });
Installez le module complémentaire avec le rôle IAM créé ci-dessus.
new CfnAddon(this, 'CloudWatchAddon', { addonName: 'amazon-cloudwatch-observability', clusterName: cluster.clusterName, serviceAccountRoleArn: cloudwatchRole.roleArn });Ajoutez l’une des lignes suivantes dans la section
PodTemplatedu fichier manifeste de votre charge de travail.Langue Fichier Java
instrumentation.opentelemetry.io/inject-java : « true »
Python
instrumentation.opentelemetry.io/inject-python : « true »
.Net
instrumentation.opentelemetry.io/inject-dotnet : « true »
Node.js
instrumentation.opentelemetry.io/inject-nodejs : « true »
const deployment = { apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "sample-app" }, spec: { replicas: 3, selector: { matchLabels: { "app": "sample-app" } }, template: { metadata: { labels: { "app": "sample-app" }, annotations: { "instrumentation.opentelemetry.io/inject-$LANG": "true" } }, spec: {...}, }, }, }; cluster.addManifest('sample-app', deployment)