Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Abilita le tue applicazioni sui cluster Amazon EKS
CloudWatch Application Signals è supportato per le applicazioni Java, Python, Node.js e.NET. Per abilitare Application Signals per le tue applicazioni su un cluster Amazon EKS esistente, puoi utilizzare la AWS Management Console configurazione AWS CDK avanzata Auto monitor o il componente aggiuntivo CloudWatch Observability.
Argomenti
Abilita Application Signals su un cluster Amazon EKS utilizzando la console
Per abilitare CloudWatch Application Signals sulle tue applicazioni su un cluster Amazon EKS esistente, utilizza le istruzioni in questa sezione.
Importante
Se stai già utilizzando OpenTelemetry un'applicazione che intendi abilitare per Application Signals, consulta OpenTelemetry compatibilità prima di abilitare Application Signals.
Per abilitare Application Signals per le applicazioni su un cluster Amazon EKS esistente
Nota
Se non hai già abilitato Application Signals, segui le istruzioni riportate Abilita Application Signals nel tuo account e poi segui la procedura riportata di seguito.
Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/
. Scegli Application Signals.
Per Specifica piattaforma, scegli EKS.
Per Seleziona un cluster EKS, scegli il cluster in cui desideri abilitare Application Signals.
Se questo cluster non ha già il componente aggiuntivo Amazon CloudWatch Observability EKS abilitato, ti verrà richiesto di abilitarlo. In questo caso, puoi fare quanto segue:
Scegli il componente aggiuntivo Add CloudWatch Observability EKS. Viene visualizzata la console Amazon EKS.
Seleziona la casella di controllo per Amazon CloudWatch Observability e scegli Avanti.
Il componente aggiuntivo CloudWatch Observability EKS abilita sia Application Signals che CloudWatch Container Insights con una migliore osservabilità per Amazon EKS. Per ulteriori informazioni su Container Insights, consulta Container Insights.
Seleziona la versione più recente del componente aggiuntivo da installare.
Seleziona un ruolo IAM da utilizzare per il componente aggiuntivo. Se scegli Eredita dal nodo, assegna le autorizzazioni corrette per il ruolo IAM utilizzato dai tuoi nodi worker.
my-worker-node-role
Sostituiscilo con il ruolo IAM utilizzato dai nodi di lavoro 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/AWSXRayWriteOnlyAccessPer creare un ruolo di servizio per l'utilizzo del componente aggiuntivo, consulta Installa l' CloudWatch agente con il componente aggiuntivo Amazon CloudWatch Observability EKS o il grafico Helm.
Scegli Successivo, conferma le informazioni sullo schermo e scegli Crea.
Nella schermata successiva, scegli Enable CloudWatch Application Signals per tornare alla CloudWatch console e completare il processo.
-
Esistono due opzioni per abilitare le applicazioni per Application Signals. Per motivi di coerenza, consigliamo di scegliere un'opzione per cluster.
L'opzione Console è più semplice. L'utilizzo di questo metodo fa sì che i pod si riavviino immediatamente.
Il metodo Annotate Manifest File ti offre un maggiore controllo sul momento in cui i pod si riavviano e può anche aiutarti a gestire il monitoraggio in modo più decentralizzato se non desideri centralizzarlo.
Nota
Se state abilitando Application Signals per un'applicazione Node.js con ESM, passate invece a. Configurazione di un'applicazione Node.js con il formato del modulo ESM
Scegli Al termine visualizza servizi. Accederai alla visualizzazione dei servizi di Application Signals, dove è possibile visualizzare i dati raccolti da Application Signals. Potrebbero essere necessari alcuni minuti prima che i dati vengano visualizzati.
Per abilitare Application Signals in un altro cluster Amazon EKS, scegli Abilita Application Signals dalla schermata Servizi.
Per ulteriori informazioni sulla visualizzazione Servizi, consulta Monitoraggio dell'integrità operativa delle applicazioni con Application Signals.
Nota
Se stai usando un server WSGI per la tua applicazione Python, Nessun dato di Application Signals per l'applicazione Python che utilizza un server WSGI consulta per informazioni su come far funzionare Application Signals.
Abbiamo anche identificato altre considerazioni da tenere a mente quando si abilitano le applicazioni Python per Application Signals. Per ulteriori informazioni, consulta L'applicazione Python non si avvia dopo l'attivazione di Application Signals.
Configurazione di un'applicazione Node.js con il formato del modulo ESM
Forniamo un supporto limitato per le applicazioni Node.js con il formato del modulo ESM. Per informazioni dettagliate, consultare Limitazioni note relative a Node.js con ESM.
Per il formato del modulo ESM, l'abilitazione di Application Signals tramite la console o annotando il file manifest non funziona. Saltate il passaggio 8 della procedura precedente ed effettuate invece quanto segue.
Per abilitare Application Signals per un'applicazione Node.js con ESM
Installa le dipendenze pertinenti nell'applicazione Node.js per l'autostrumentazione:
npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation npm install @opentelemetry/instrumentation@0.54.0
Aggiungi le seguenti variabili ambientali al Dockerfile per la tua applicazione e crea l'immagine.
... 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"]Aggiungi le variabili ambientali
OTEL_RESOURCE_ATTRIBUTES_POD_NAME
,OTEL_RESOURCE_ATTRIBUTES_NODE_NAME
OTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_NAME
,POD_NAMESPACE
eOTEL_RESOURCE_ATTRIBUTES
al file yaml di distribuzione per l'applicazione. Per esempio: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)"Distribuire l'applicazione Node.js nel cluster.
Dopo aver abilitato le applicazioni sui cluster Amazon EKS, puoi monitorare lo stato delle applicazioni. Per ulteriori informazioni, consulta Monitoraggio dell'integrità operativa delle applicazioni con Application Signals.
Abilita Application Signals su un cluster Amazon EKS utilizzando la configurazione avanzata del componente aggiuntivo CloudWatch Observability
A partire dalla versione v4.0.0-eksbuild.1 del componente aggiuntivo CloudWatch Observability Amazon EKS, puoi abilitare automaticamente Application Signals per tutti i carichi di lavoro di servizio nei tuoi cluster EKS utilizzando un nuovo flag di configurazione Auto monitor centralizzato nella configurazione avanzata del componente aggiuntivo.
Per scegliere la funzione di monitoraggio automatico, devi modificare la configurazione avanzata durante la creazione o l'aggiornamento del componente aggiuntivo o del grafico Helm. Impostando su monitorAllServices
true, il componente aggiuntivo CloudWatch Observability rileverà tutti i carichi di lavoro del servizio Kubernetes e tenterà di iniettare AWS automaticamente Distro for (ADOT) durante la distribuzione. OpenTelemetry SDKs Inoltre, abilitandorestartPods
, tutti i pod del carico di lavoro del servizio verranno riavviati per iniettare immediatamente ADOT come parte di un processo di ridistribuzione automatizzato. SDKs
--configuration-values '{ "manager":{ "applicationSignals":{ "autoMonitor":{ "monitorAllServices":true, "restartPods":true } } } }'
CloudWatch Observability Add-on fornisce anche un controllo dettagliato aggiuntivo per includere o escludere servizi specifici, se necessario, nella nuova configurazione avanzata. Per ulteriori informazioni, consulta Configurazione dei segnali applicativi per il tuo cluster Amazon EKS .
Abilita Application Signals su Amazon EKS utilizzando AWS CDK
Se non hai ancora abilitato Application Signals in questo account, devi concedere ad Application Signals le autorizzazioni necessarie per scoprire i tuoi servizi. Consultare Abilita Application Signals nel tuo account.
Abilita Application Signals per le tue applicazioni.
import { aws_applicationsignals as applicationsignals } from 'aws-cdk-lib'; const cfnDiscovery = new applicationsignals.CfnDiscovery(this, 'ApplicationSignalsServiceRole', { } );
La CloudFormation risorsa Discovery concede ad Application Signals le seguenti autorizzazioni:
-
xray:GetServiceGraph
-
logs:StartQuery
-
logs:GetQueryResults
-
cloudwatch:GetMetricData
-
cloudwatch:ListMetrics
-
tag:GetResources
Per ulteriori informazioni su questo ruolo, consulta Autorizzazioni di ruolo collegate al servizio per Application Signals CloudWatch .
-
Installa il componente aggiuntivo.
amazon-cloudwatch-observability
Crea un ruolo IAM con
CloudWatchAgentServerPolicy
e l'OIDC associato al cluster.const cloudwatchRole = new Role(this, 'CloudWatchAgentAddOnRole', { assumedBy: new OpenIdConnectPrincipal(cluster.openIdConnectProvider), managedPolicies: [ManagedPolicy.fromAwsManagedPolicyName('CloudWatchAgentServerPolicy')], });
Installa il componente aggiuntivo con il ruolo IAM creato sopra.
new CfnAddon(this, 'CloudWatchAddon', { addonName: 'amazon-cloudwatch-observability', clusterName: cluster.clusterName, serviceAccountRoleArn: cloudwatchRole.roleArn });
Aggiungi uno dei seguenti elementi nella
PodTemplate
sezione del file manifesto del carico di lavoro.Lingua File Java
instrumentation.opentelemetry.io/inject-java: «true»
Python
instrumentation.opentelemetry.io/inject-python: «vero»
.Net
instrumentation.opentelemetry.io/inject-dotnet: «vero»
Node.js
instrumentation.opentelemetry.io/inject-nodejs: «vero»
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)