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.
Activez vos applications sur les clusters Amazon EKS
CloudWatch Application Signals est pris en charge pour les applications Java, Python, Node.js et .NET. Pour activer les signaux d'application pour vos applications sur un cluster Amazon EKS existant, vous pouvez utiliser la AWS Management Console configuration avancée Auto monitor du module complémentaire CloudWatch Observability. AWS CDK
Rubriques
Activer les signaux d'application sur un cluster Amazon EKS à l'aide de la console
Pour activer les signaux CloudWatch d'application sur vos applications sur un cluster Amazon EKS existant, suivez les instructions de cette section.
Important
Si vous utilisez OpenTelemetry déjà une application que vous avez l'intention d'activer pour les signaux d'application, consultez la section OpenTelemetry compatibilité avant d'activer les signaux d'application.
Pour activer Application Signals pour vos applications sur un cluster Amazon EKS existant
Note
Si vous n'avez pas encore activé les signaux d'application, suivez les instructions fournies, Activez les signaux d'application dans votre compte puis suivez la procédure ci-dessous.
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. Choisissez Application Signals.
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 Amazon CloudWatch Observability EKS 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 CloudWatch Observability EKS. La console Amazon EKS apparaît.
Cochez la case Amazon CloudWatch Observability et choisissez Next.
Le module complémentaire CloudWatch Observability EKS active à la fois les signaux d'application et les informations sur les CloudWatch conteneurs avec une 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.
my-worker-node-role
Remplacez-le par le rôle IAM utilisé par vos nœuds de travail Kubernetes.aws iam attach-role-policy \ --role-name
my-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 Installez l' CloudWatch agent avec le module complémentaire Amazon CloudWatch Observability EKS ou le graphique Helm.
Choisissez Suivant, confirmez les informations affichées à l’écran, puis choisissez Créer.
Dans l'écran suivant, choisissez Enable CloudWatch Application Signals pour revenir à la CloudWatch console et terminer le processus.
-
Il existe deux options pour activer vos applications pour les signaux d'application. Pour des raisons de cohérence, nous vous recommandons de choisir une 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 Annotate Manifest File 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 les signaux d'application pour une application Node.js avec ESM, passez Configuration d'une application Node.js au format du module ESM plutôt à.
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, reportez-vous à la section Aucune donnée de signal d'application pour une application Python utilisant un serveur WSGI pour obtenir des informations sur le fonctionnement des signaux d'application.
Nous avons également identifié d'autres considérations que vous devez garder à l'esprit lorsque vous activez des applications Python pour les signaux d'application. Pour de plus amples informations, veuillez consulter L'application Python ne démarre pas une fois les signaux d'application activés.
Configuration d'une application Node.js au format du module ESM
Nous fournissons un support limité pour les applications Node.js au format de module ESM. Pour en savoir plus, consultez Limitations connues concernant Node.js avec ESM.
Pour le format du module ESM, l'activation des signaux d'application via la console ou en annotant le fichier manifeste ne fonctionne pas. Ignorez l'étape 8 de la procédure précédente et effectuez plutôt ce qui suit.
Pour activer les signaux d'application pour une application Node.js avec ESM
Installez les dépendances pertinentes dans votre application Node.js pour l'autoinstrumentation :
npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation npm install @opentelemetry/instrumentation@0.54.0
Ajoutez les variables environnementales suivantes au Dockerfile de votre application et créez 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 environnementales
OTEL_RESOURCE_ATTRIBUTES_POD_NAME
,OTEL_RESOURCE_ATTRIBUTES_NODE_NAME
OTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_NAME
,POD_NAMESPACE
etOTEL_RESOURCE_ATTRIBUTES
au fichier yaml de déploiement de l'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 que vous avez activé vos applications sur les clusters Amazon EKS, vous pouvez surveiller l'état de santé de vos applications. Pour de plus amples informations, veuillez consulter Surveillez l’état de fonctionnement de vos applications avec Application Signals.
Activez les signaux d'application sur un cluster Amazon EKS à l'aide de la configuration avancée du module complémentaire CloudWatch Observability
À partir de la version v4.0.0-eksbuild.1 du module complémentaire CloudWatch Observability Amazon EKS, vous pouvez activer automatiquement les signaux d'application pour toutes les charges de travail de service de vos clusters EKS à l'aide d'un nouvel indicateur de configuration automatique centralisé dans la configuration avancée du module complémentaire.
Pour choisir la fonction 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 du graphique Helm. En définissant la valeur monitorAllServices
true, le module complémentaire CloudWatch Observability détectera toutes les charges de travail du service Kubernetes et tentera d'injecter automatiquement AWS Distro for OpenTelemetry (ADOT) lors du déploiement. SDKs De plus, en activantrestartPods
, tous les pods de charge de travail des services seront redémarrés pour injecter immédiatement l'ADOT dans le SDKs cadre d'un processus de redéploiement automatisé.
--configuration-values '{ "manager":{ "applicationSignals":{ "autoMonitor":{ "monitorAllServices":true, "restartPods":true } } } }'
CloudWatch Le module complémentaire Observability fournit également un contrôle précis supplémentaire pour inclure ou exclure des services spécifiques selon les besoins dans la nouvelle configuration avancée. Pour plus d’informations, consultez Configuration des signaux d'application pour votre cluster Amazon EKS .
Activez les signaux d'application sur Amazon EKS à l'aide de 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 Activez les signaux d'application dans votre compte.
Activez les signaux d'application pour vos applications.
import { aws_applicationsignals as applicationsignals } from 'aws-cdk-lib'; const cfnDiscovery = new applicationsignals.CfnDiscovery(this, 'ApplicationSignalsServiceRole', { } );
La CloudFormation ressource Discovery accorde à Application Signals 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ées au service pour les signaux d'application CloudWatch .
-
Installez le
amazon-cloudwatch-observability
module complémentaire.Créez un rôle IAM avec le
CloudWatchAgentServerPolicy
et 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'un des éléments suivants dans la
PodTemplate
section de votre fichier manifeste de charge de travail.Langue Fichier Java
instrumentation.opentelemetry.io/inject-java : « vrai »
Python
instrumentation.opentelemetry.io/inject-python : « vrai »
.Net
instrumentation.opentelemetry.io/inject-dotnet : « vrai »
Node.js
instrumentation.opentelemetry.io/inject-nodejs : « vrai »
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)