Esegui la distribuzione utilizzando la strategia daemon - Amazon CloudWatch

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à.

Esegui la distribuzione utilizzando la strategia daemon

Fase 1: abilitazione di Application Signals nel tuo account

Se non hai ancora abilitato Application Signals in questo account, devi concedere ad Application Signals le autorizzazioni necessarie per scoprire i tuoi servizi. Per far ciò, completa le seguenti operazioni. È necessario eseguire questa operazione solo una volta per account.

Per abilitare Application Signals per le tue applicazioni
  1. Apri la console all' CloudWatch indirizzo. https://console.aws.amazon.com/cloudwatch/

  2. Nel riquadro di navigazione, scegli Servizi.

  3. Scegli Inizia a scoprire i tuoi servizi.

  4. Seleziona la casella di controllo e scegli Inizia a scoprire i servizi.

    Il completamento di questo passaggio per la prima volta nel tuo account crea il ruolo AWSServiceRoleForCloudWatchApplicationSignalscollegato al servizio. Questo ruolo 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 .

Fase 2: creazione di ruoli IAM

È necessario creare un IAM ruolo. Se hai già creato questo ruolo, potrebbe essere necessario aggiungervi delle autorizzazioni.

  • ECStask role: i contenitori utilizzano questo ruolo per l'esecuzione. Le autorizzazioni devono corrispondere a ciò di cui hanno bisogno le applicazioni, in più CloudWatchAgentServerPolicy.

Per ulteriori informazioni sulla creazione di IAM ruoli, vedere Creazione di IAM ruoli.

Fase 3: Preparare la configurazione CloudWatch dell'agente

Innanzitutto, prepara la configurazione dell'agente con Application Signals abilitato. A tale scopo, crea un file locale denominato /tmp/ecs-cwagent.json.

{ "traces": { "traces_collected": { "application_signals": {} } }, "logs": { "metrics_collected": { "application_signals": {} } } }

Quindi carica questa configurazione nel SSM Parameter Store. A questo scopo, immetti il comando seguente. Nel file, sostituisci $REGION con il nome effettivo della tua regione.

aws ssm put-parameter \ --name "ecs-cwagent" \ --type "String" \ --value "`cat /tmp/ecs-cwagent.json`" \ --region "$REGION"

Fase 4: Implementazione del servizio daemon CloudWatch dell'agente

Crea la seguente definizione di attività e distribuiscila nel tuo cluster di applicazioni. Replace (Sostituisci) $REGION con il nome effettivo della tua regione. Replace (Sostituisci) $TASK_ROLE_ARN e $EXECUTION_ROLE_ARN con i IAM ruoli in cui ti sei preparatoFase 2: creazione di ruoli IAM. Replace (Sostituisci) $IMAGE con il percorso dell'immagine del CloudWatch contenitore più recente su Amazon Elastic Container Registry. Per ulteriori informazioni, consulta cloudwatch-agent su Amazon. ECR

Nota

Il servizio daemon espone due porte sull'host, di cui 4316 viene utilizzata come endpoint per ricevere metriche e tracce e 2000 come endpoint di campionamento delle tracce. CloudWatch Questa configurazione consente all'agente di raccogliere e trasmettere dati di telemetria da tutte le attività dell'applicazione in esecuzione sull'host. Assicurati che queste porte non vengano utilizzate da altri servizi sull'host per evitare conflitti.

{ "family": "ecs-cwagent-daemon", "taskRoleArn": "$TASK_ROLE_ARN", "executionRoleArn": "$EXECUTION_ROLE_ARN", "networkMode": "bridge", "containerDefinitions": [ { "name": "ecs-cwagent", "image": "$IMAGE", "essential": true, "portMappings": [ { "containerPort": 4316, "hostPort": 4316 }, { "containerPort": 2000, "hostPort": 2000 } ], "secrets": [ { "name": "CW_CONFIG_CONTENT", "valueFrom": "ecs-cwagent" } ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "true", "awslogs-group": "/ecs/ecs-cwagent", "awslogs-region": "$REGION", "awslogs-stream-prefix": "ecs" } } } ], "requiresCompatibilities": [ "EC2" ], "cpu": "128", "memory": "64" }

Fase 5: Strumentate la vostra applicazione

Il passo successivo è quello di strumentare la vostra applicazione per Application Signals.

Java
Per strumentare la tua applicazione su Amazon ECS con l' CloudWatch agente
  1. Innanzitutto, specifica un montaggio vincolato. Il volume verrà utilizzato per condividere file tra container nei passaggi successivi. Dovrai utilizzare questo montaggio vincolato più avanti in questa procedura.

    "volumes": [ { "name": "opentelemetry-auto-instrumentation" } ]
  2. Aggiungi un nuovo container init alla definizione dell'attività dell'applicazione. Replace (Sostituisci) $IMAGE con l'immagine più recente dall'archivio di ECR immagini AWS Distro for OpenTelemetry Amazon.

    { "name": "init", "image": "$IMAGE", "essential": false, "command": [ "cp", "/javaagent.jar", "/otel-auto-instrumentation/javaagent.jar" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ] }
  3. Aggiungi le seguenti variabili di ambiente al container dell'applicazione. È necessario utilizzare la versione 1.32.2 o successiva dell'agente AWS Distro for OpenTelemetry auto-instrumentation for Java.

    Variabile di ambiente Impostazione per abilitare Application Signals

    OTEL_RESOURCE_ATTRIBUTES

    Specificate le seguenti informazioni come coppie chiave-valore:

    • service.name imposta il nome del servizio. Questo verrà visualizzato come nome del servizio per l'applicazione nei pannelli di controllo di Application Signals. Se non si fornisce un valore per questa chiave, viene utilizzato il valore predefinito di UnknownService.

    • deployment.environment imposta l'ambiente in cui viene eseguita l'applicazione. Questo verrà visualizzato come ambiente ospitato dell'applicazione nei pannelli di controllo di Application Signals. Se non lo specificate, generic:default viene utilizzato il valore predefinito di.

    Questa chiave di attributo viene utilizzata solo da Application Signals e viene convertita in annotazioni di tracce a raggi X e CloudWatch dimensioni metriche.

    (Facoltativo) Per abilitare la correlazione dei log per Application Signals, impostate una variabile aws.log.group.names di ambiente aggiuntiva come nome del gruppo di log per il log dell'applicazione. In questo modo, le tracce e le metriche dell'applicazione possono essere correlate con le voci di registro pertinenti del gruppo di log. Per questa variabile, sostituisci $YOUR_APPLICATION_LOG_GROUP con i nomi dei gruppi di log per l'applicazione. Se hai più gruppi di log, puoi usare un ampersand (&) per separarli come in questo esempio:. aws.log.group.names=log-group-1&log-group-2 Per abilitare la correlazione tra metrica e log, è sufficiente impostare questa variabile ambientale corrente. Per ulteriori informazioni, consulta Abilita la correlazione tra metrica e log. Per abilitare la correlazione tra traccia e registro, dovrai anche modificare la configurazione di registrazione nell'applicazione. Per ulteriori informazioni, consulta Abilita la correlazione tra traccia e log.

    OTEL_AWS_APPLICATION_SIGNALS_ENABLED

    Imposta per true fare in modo che il contenitore inizi a inviare tracce e CloudWatch metriche X-Ray ad Application Signals.

    OTEL_METRICS_EXPORTER

    Imposta su none per disabilitare gli esportatori di altri parametri.

    OTEL_LOGS_EXPORTER

    Impostato per none disabilitare altri esportatori di log.

    OTEL_EXPORTER_OTLP_PROTOCOL

    Imposta su per http/protobuf inviare metriche e tracce ad Application Signals utilizzando. HTTP

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Invia le metriche al contenitore del CloudWatch demone.

    • Per le applicazioni in esecuzione in host modalità, impostalo su. http://localhost:4316/v1/metrics

    • Per le applicazioni in esecuzione in bridge awsvpc modalità o modalità, impostalo su http://CW_CONTAINER_IP:4316/v1/metrics, dove CW_CONTAINER_IP è l'indirizzo IP privato dell'istanza del contenitore. EC2 È possibile recuperare questo indirizzo dall'Instance Metadata Service ()IMDS.

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Invia tracce al contenitore del CloudWatch demone.

    • Per le applicazioni in esecuzione in host modalità, impostalo su. http://localhost:4316/v1/traces

    • Per le applicazioni in esecuzione in bridge awsvpc modalità o modalità, impostalo su http://CW_CONTAINER_IP:4316/v1/traces, dove CW_CONTAINER_IP è l'indirizzo IP privato dell'istanza del contenitore. EC2 È possibile recuperare questo indirizzo dall'Instance Metadata Service ()IMDS.

    OTEL_TRACES_SAMPLER

    Impostalo su per xray impostare X-Ray come campionatore di tracce.

    OTEL_PROPAGATORS

    Imposta xray come uno dei propagatori.

    JAVA_TOOL_OPTIONS

    Imposta su Sostituisci " -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH" AWS_ADOT_JAVA_INSTRUMENTATION_PATH con il percorso in cui è archiviato l'agente di strumentazione automatica AWS Distro for OpenTelemetry Java. Ad esempio, /otel-auto-instrumentation/javaagent.jar.

  4. Monta il volume opentelemetry-auto-instrumentation definito nella fase 1 di questa procedura. Se non è necessario abilitare la correlazione dei log con metriche e tracce, utilizzate il seguente esempio per un'applicazione Java. Se desideri abilitare la correlazione dei log, consulta invece il passaggio successivo.

    { "name": "my-app", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "JAVA_TOOL_OPTIONS", "value": " -javaagent:/otel-auto-instrumentation/javaagent.jar" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://CW_CONTAINER_IP:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP:4316/v1/traces" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_PROPAGATORS", "value": "tracecontext,baggage,b3,xray" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ] }
Python

Prima di abilitare Application Signals per le tue applicazioni Python, tieni presente le seguenti considerazioni.

Per strumentare la tua applicazione Python su Amazon ECS con l'agente CloudWatch
  1. Innanzitutto, specifica un montaggio vincolato. Il volume verrà utilizzato per condividere file tra container nei passaggi successivi. Dovrai utilizzare questo montaggio vincolato più avanti in questa procedura.

    "volumes": [ { "name": "opentelemetry-auto-instrumentation-python" } ]
  2. Aggiungi un nuovo container init alla definizione dell'attività dell'applicazione. Replace (Sostituisci) $IMAGE con l'immagine più recente dall'archivio di ECR immagini AWS Distro for OpenTelemetry Amazon.

    { "name": "init", "image": "$IMAGE", "essential": false, "command": [ "cp", "-a", "/autoinstrumentation/.", "/otel-auto-instrumentation-python" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-python", "containerPath": "/otel-auto-instrumentation-python", "readOnly": false } ] }
  3. Aggiungi le seguenti variabili di ambiente al container dell'applicazione.

    Variabile di ambiente Impostazione per abilitare Application Signals

    OTEL_RESOURCE_ATTRIBUTES

    Specificate le seguenti informazioni come coppie chiave-valore:

    • service.name imposta il nome del servizio. Questo verrà visualizzato come nome del servizio per l'applicazione nei pannelli di controllo di Application Signals. Se non si fornisce un valore per questa chiave, viene utilizzato il valore predefinito di UnknownService.

    • deployment.environment imposta l'ambiente in cui viene eseguita l'applicazione. Questo verrà visualizzato come ambiente ospitato dell'applicazione nei pannelli di controllo di Application Signals. Se non lo specificate, generic:default viene utilizzato il valore predefinito di.

    Questa chiave di attributo viene utilizzata solo da Application Signals e viene convertita in annotazioni di tracce a raggi X e CloudWatch dimensioni metriche.

    (Facoltativo) Per abilitare la correlazione dei log per Application Signals, impostate una variabile aws.log.group.names di ambiente aggiuntiva come nome del gruppo di log per il log dell'applicazione. In questo modo, le tracce e le metriche dell'applicazione possono essere correlate con le voci di registro pertinenti del gruppo di log. Per questa variabile, sostituisci $YOUR_APPLICATION_LOG_GROUP con i nomi dei gruppi di log per l'applicazione. Se hai più gruppi di log, puoi usare un ampersand (&) per separarli come in questo esempio:. aws.log.group.names=log-group-1&log-group-2 Per abilitare la correlazione tra metrica e log, è sufficiente impostare questa variabile ambientale corrente. Per ulteriori informazioni, consulta Abilita la correlazione tra metrica e log. Per abilitare la correlazione tra traccia e registro, dovrai anche modificare la configurazione di registrazione nell'applicazione. Per ulteriori informazioni, consulta Abilita la correlazione tra traccia e log.

    OTEL_AWS_APPLICATION_SIGNALS_ENABLED

    Imposta per true fare in modo che il contenitore inizi a inviare tracce e CloudWatch metriche X-Ray ad Application Signals.

    OTEL_METRICS_EXPORTER

    Imposta su none per disabilitare gli esportatori di altri parametri.

    OTEL_EXPORTER_OTLP_PROTOCOL

    Imposta su http/protobuf per inviare metriche e tracce da utilizzare. CloudWatch HTTP

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Invia le metriche al contenitore del CloudWatch demone.

    • Per le applicazioni in esecuzione in host modalità, impostalo su. http://localhost:4316/v1/metrics

    • Per le applicazioni in esecuzione in bridge awsvpc modalità o modalità, impostalo su http://CW_CONTAINER_IP:4316/v1/metrics, dove CW_CONTAINER_IP è l'indirizzo IP privato dell'istanza del contenitore. EC2 È possibile recuperare questo indirizzo dall'Instance Metadata Service ()IMDS.

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Invia tracce al contenitore del CloudWatch demone.

    • Per le applicazioni in esecuzione in host modalità, impostalo su. http://localhost:4316/v1/traces

    • Per le applicazioni in esecuzione in bridge awsvpc modalità o modalità, impostalo su http://CW_CONTAINER_IP:4316/v1/traces, dove CW_CONTAINER_IP è l'indirizzo IP privato dell'istanza del contenitore. EC2 È possibile recuperare questo indirizzo dall'Instance Metadata Service ()IMDS.

    OTEL_TRACES_SAMPLER

    Impostalo su per xray impostare X-Ray come campionatore di tracce.

    OTEL_TRACES_SAMPLER_ARG

    Imposta l'endpoint del campionatore di tracce.

    • Per le applicazioni in esecuzione in host modalità, impostalo su. http://localhost:2000

    • Per le applicazioni in esecuzione in bridge modalità o awsvpc modalità, impostalo suhttp://CW_CONTAINER_IP:2000, dove CW_CONTAINER_IP è l'indirizzo IP privato dell'istanza del EC2 contenitore. È possibile recuperare questo indirizzo dall'Instance Metadata Service ()IMDS.

    OTEL_PROPAGATORS

    Aggiungi xray come uno dei propagatori.

    OTEL_PYTHON_DISTRO

    Impostato per aws_distro usare la ADOT strumentazione Python.

    OTEL_PYTHON_CONFIGURATOR

    Imposta aws_configuration per usare la configurazione ADOT Python.

    PYTHONPATH

    Sostituisci $APP_PATH con la posizione della directory di lavoro dell'applicazione all'interno del contenitore. Questo è necessario affinché l'interprete Python trovi i moduli dell'applicazione.

    DJANGO_SETTINGS_MODULE

    Richiesto solo per le applicazioni Django. Impostalo sulla posizione del file dell'applicazione Django. settings.py Sostituisci$PATH_TO_SETTINGS.

  4. Monta il volume opentelemetry-auto-instrumentation-python definito nella fase 1 di questa procedura. Se non è necessario abilitare la correlazione dei log con metriche e tracce, utilizzate il seguente esempio per un'applicazione Python. Se desideri abilitare la correlazione dei log, consulta invece il passaggio successivo.

    { "name": "my-app", ... "environment": [ { "name": "PYTHONPATH", "value": "/otel-auto-instrumentation-python/opentelemetry/instrumentation/auto_instrumentation:$APP_PATH:/otel-auto-instrumentation-python" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://CW_CONTAINER_IP:2000" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_PYTHON_DISTRO", "value": "aws_distro" }, { "name": "OTEL_PYTHON_CONFIGURATOR", "value": "aws_configurator" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP:4316/v1/traces" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://CW_CONTAINER_IP:4316/v1/metrics" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME" }, { "name": "DJANGO_SETTINGS_MODULE", "value": "$PATH_TO_SETTINGS.settings" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-python", "containerPath": "/otel-auto-instrumentation-python", "readOnly": false } ] }
  5. (Facoltativo) Per abilitare la correlazione dei log, effettuate le seguenti operazioni prima di montare il volume. InOTEL_RESOURCE_ATTRIBUTES, impostate una variabile di ambiente aggiuntiva aws.log.group.names per i gruppi di log dell'applicazione. In questo modo, le tracce e le metriche dell'applicazione possono essere correlate con le voci di registro pertinenti di questi gruppi di log. Per questa variabile, sostituisci $YOUR_APPLICATION_LOG_GROUP con i nomi dei gruppi di log per l'applicazione. Se hai più gruppi di log, puoi usare un ampersand (&) per separarli come in questo esempio:. aws.log.group.names=log-group-1&log-group-2 Per abilitare la correlazione tra metrica e log, è sufficiente impostare questa variabile ambientale corrente. Per ulteriori informazioni, consulta Abilita la correlazione tra metrica e log. Per abilitare la correlazione tra traccia e registro, dovrai anche modificare la configurazione di registrazione nell'applicazione. Per ulteriori informazioni, consulta Abilita la correlazione tra traccia e log.

    Di seguito è riportato un esempio. Per abilitare la correlazione dei log, utilizzate questo esempio quando montate il volume opentelemetry-auto-instrumentation-python definito nel passaggio 1 di questa procedura.

    { "name": "my-app", ... "environment": [ { "name": "PYTHONPATH", "value": "/otel-auto-instrumentation-python/opentelemetry/instrumentation/auto_instrumentation:$APP_PATH:/otel-auto-instrumentation-python" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://CW_CONTAINER_IP:2000" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_PYTHON_DISTRO", "value": "aws_distro" }, { "name": "OTEL_PYTHON_CONFIGURATOR", "value": "aws_configurator" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP:4316/v1/traces" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://CW_CONTAINER_IP:4316/v1/metrics" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP,service.name=$SVC_NAME" }, { "name": "DJANGO_SETTINGS_MODULE", "value": "$PATH_TO_SETTINGS.settings" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-python", "containerPath": "/otel-auto-instrumentation-python", "readOnly": false } ] }
.NET
Per strumentare la tua applicazione su Amazon ECS con l' CloudWatch agente
  1. Innanzitutto, specifica un montaggio vincolato. Il volume verrà utilizzato per condividere file tra container nei passaggi successivi. Dovrai utilizzare questo montaggio vincolato più avanti in questa procedura.

    "volumes": [ { "name": "opentelemetry-auto-instrumentation" } ]
  2. Aggiungi un nuovo container init alla definizione dell'attività dell'applicazione. Replace (Sostituisci) $IMAGE con l'immagine più recente dall'archivio di ECR immagini AWS Distro for OpenTelemetry Amazon.

    Per un'istanza di contenitore Linux, usa quanto segue.

    { "name": "init", "image": "$IMAGE", "essential": false, "command": [ "cp", "-a", "autoinstrumentation/.", "/otel-auto-instrumentation" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ] }

    Per un'istanza del contenitore Windows Server, usa quanto segue.

    { "name": "init", "image": "$IMAGE", "essential": false, "command": [ "CMD", "/c", "xcopy", "/e", "C:\\autoinstrumentation\\*", "C:\\otel-auto-instrumentation", "&&", "icacls", "C:\\otel-auto-instrumentation", "/grant", "*S-1-1-0:R", "/T" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "C:\\otel-auto-instrumentation", "readOnly": false } ] }
  3. Aggiungete una dipendenza dal init contenitore per assicurarvi che il contenitore finisca prima dell'avvio del contenitore dell'applicazione.

    "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ]
  4. Aggiungi le seguenti variabili di ambiente al container dell'applicazione. È necessario utilizzare la versione 1.1.0 o successiva dell'agente AWS Distro for OpenTelemetry auto-instrumentation per. NET.

    Variabile di ambiente Impostazione per abilitare Application Signals

    OTEL_RESOURCE_ATTRIBUTES

    Specificate le seguenti informazioni come coppie chiave-valore:

    • service.name imposta il nome del servizio. Questo verrà visualizzato come nome del servizio per l'applicazione nei pannelli di controllo di Application Signals. Se non si fornisce un valore per questa chiave, viene utilizzato il valore predefinito di UnknownService.

    • deployment.environment imposta l'ambiente in cui viene eseguita l'applicazione. Questo verrà visualizzato come ambiente ospitato dell'applicazione nei pannelli di controllo di Application Signals. Se non lo specificate, generic:default viene utilizzato il valore predefinito di.

    Questa chiave di attributo viene utilizzata solo da Application Signals e viene convertita in annotazioni di tracce a raggi X e CloudWatch dimensioni metriche.

    OTEL_AWS_APPLICATION_SIGNALS_ENABLED

    Imposta per true fare in modo che il contenitore inizi a inviare tracce e CloudWatch metriche X-Ray ad Application Signals.

    OTEL_METRICS_EXPORTER

    Imposta su none per disabilitare gli esportatori di altri parametri.

    OTEL_LOGS_EXPORTER

    Impostato per none disabilitare altri esportatori di log.

    OTEL_EXPORTER_OTLP_PROTOCOL

    Imposta su per http/protobuf inviare metriche e tracce ad Application Signals utilizzando. HTTP

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Invia le metriche al contenitore del CloudWatch demone.

    • Per le applicazioni in esecuzione in host modalità, impostalo su. http://localhost:4316/v1/metrics

    • Per le applicazioni in esecuzione in bridge awsvpc modalità o modalità, impostalo su http://CW_CONTAINER_IP:4316/v1/metrics, dove CW_CONTAINER_IP è l'indirizzo IP privato dell'istanza del contenitore. EC2 È possibile recuperare questo indirizzo dall'Instance Metadata Service ()IMDS.

    OTEL_EXPORTER_OTLP_ENDPOINT

    Invia tracce al contenitore del CloudWatch demone.

    • Per le applicazioni in esecuzione in host modalità, impostalo su. http://localhost:4316

    • Per le applicazioni in esecuzione in bridge awsvpc modalità o modalità, impostalo su http://CW_CONTAINER_IP:4316, dove CW_CONTAINER_IP è l'indirizzo IP privato dell'istanza del EC2 contenitore. È possibile recuperare questo indirizzo dall'Instance Metadata Service ()IMDS.

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Invia tracce al contenitore del CloudWatch demone.

    • Per le applicazioni in esecuzione in host modalità, impostalo su. http://localhost:4316/v1/traces

    • Per le applicazioni in esecuzione in bridge awsvpc modalità o modalità, impostalo su http://CW_CONTAINER_IP:4316/v1/traces, dove CW_CONTAINER_IP è l'indirizzo IP privato dell'istanza del contenitore. EC2 È possibile recuperare questo indirizzo dall'Instance Metadata Service ()IMDS.

    OTEL_TRACES_SAMPLER_ARG

    Imposta l'endpoint del campionatore di tracce.

    • Per le applicazioni in esecuzione in host modalità, impostalo su. http://localhost:2000

    • Per le applicazioni in esecuzione in bridge modalità o awsvpc modalità, impostalo suhttp://CW_CONTAINER_IP:2000, dove CW_CONTAINER_IP è l'indirizzo IP privato dell'istanza del EC2 contenitore. È possibile recuperare questo indirizzo dall'Instance Metadata Service ()IMDS.

    OTEL_DOTNET_AUTO_HOME

    Impostato sulla posizione di installazione di. ADOT NETstrumentazione automatica.

    OTEL_DOTNET_AUTO_PLUGINS

    Impostato per AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation abilitare il plug-in Application Signals.

    CORECLR_ENABLE_PROFILING

    Impostare 1 per abilitare il profiler.

    CORECLR_PROFILER

    Imposta su {918728DD-259F-4A6A-AC2B-B85E1B658318} come profiler. CLSID

    CORECLR_PROFILER_PATH

    Imposta questo valore sul percorso del profiler.

    Su Linux, impostalo su ${OTEL_DOTNET_AUTO_HOME}/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so

    In Windows Server, impostalo su ${OTEL_DOTNET_AUTO_HOME}/win-x64/OpenTelemetry.AutoInstrumentation.Native.dll

    DOTNET_ADDITIONAL_DEPS

    Imposta questo valore sul percorso della cartella di${OTEL_DOTNET_AUTO_HOME}/AdditionalDeps.

    DOTNET_SHARED_STORE

    Imposta questo valore sul percorso della cartella di${OTEL_DOTNET_AUTO_HOME}/store.

    DOTNET_STARTUP_HOOKS

    Imposta questo valore sul percorso dell'assieme gestito ${OTEL_DOTNET_AUTO_HOME}/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll da eseguire prima del punto di ingresso dell'applicazione principale.

  5. Monta il volume opentelemetry-auto-instrumentation definito nella fase 1 di questa procedura. Per Linux, utilizzate quanto segue.

    { "name": "my-app", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME" }, { "name": "CORECLR_ENABLE_PROFILING", "value": "1" }, { "name": "CORECLR_PROFILER", "value": "{918728DD-259F-4A6A-AC2B-B85E1B658318}" }, { "name": "CORECLR_PROFILER_PATH", "value": "/otel-auto-instrumentation/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so" }, { "name": "DOTNET_ADDITIONAL_DEPS", "value": "/otel-auto-instrumentation/AdditionalDeps" }, { "name": "DOTNET_SHARED_STORE", "value": "/otel-auto-instrumentation/store" }, { "name": "DOTNET_STARTUP_HOOKS", "value": "/otel-auto-instrumentation/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll" }, { "name": "OTEL_DOTNET_AUTO_HOME", "value": "/otel-auto-instrumentation" }, { "name": "OTEL_DOTNET_AUTO_PLUGINS", "value": "AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation" }, { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP,service.name=aws-otel-integ-test" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP:4316/v1/traces" }, { "name": "OTEL_EXPORTER_OTLP_ENDPOINT", "value": "http://CW_CONTAINER_IP:4316" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://CW_CONTAINER_IP:2000" }, { "name": "OTEL_PROPAGATORS", "value": "tracecontext,baggage,b3,xray" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }

    Per Windows Server, utilizzare quanto segue.

    { "name": "my-app", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME" }, { "name": "CORECLR_ENABLE_PROFILING", "value": "1" }, { "name": "CORECLR_PROFILER", "value": "{918728DD-259F-4A6A-AC2B-B85E1B658318}" }, { "name": "CORECLR_PROFILER_PATH", "value": "C:\\otel-auto-instrumentation\\win-x64\\OpenTelemetry.AutoInstrumentation.Native.dll" }, { "name": "DOTNET_ADDITIONAL_DEPS", "value": "C:\\otel-auto-instrumentation\\AdditionalDeps" }, { "name": "DOTNET_SHARED_STORE", "value": "C:\\otel-auto-instrumentation\\store" }, { "name": "DOTNET_STARTUP_HOOKS", "value": "C:\\otel-auto-instrumentation\\net\\OpenTelemetry.AutoInstrumentation.StartupHook.dll" }, { "name": "OTEL_DOTNET_AUTO_HOME", "value": "C:\\otel-auto-instrumentation" }, { "name": "OTEL_DOTNET_AUTO_PLUGINS", "value": "AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation" }, { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP,service.name=aws-otel-integ-test" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://CW_CONTAINER_IP:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP:4316/v1/traces" }, { "name": "OTEL_EXPORTER_OTLP_ENDPOINT", "value": "http://CW_CONTAINER_IP:4316" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://CW_CONTAINER_IP:2000" }, { "name": "OTEL_PROPAGATORS", "value": "tracecontext,baggage,b3,xray" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "C:\\otel-auto-instrumentation", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }
Node.js
Nota

Se state abilitando Application Signals per un'applicazione Node.js conESM, consultate Setting up a Node.js application with the ESM module format prima di iniziare questi passaggi.

Per strumentare la tua applicazione su Amazon ECS con l' CloudWatch agente
  1. Innanzitutto, specifica un montaggio vincolato. Il volume verrà utilizzato per condividere file tra container nei passaggi successivi. Dovrai utilizzare questo montaggio vincolato più avanti in questa procedura.

    "volumes": [ { "name": "opentelemetry-auto-instrumentation-node" } ]
  2. Aggiungi un nuovo container init alla definizione dell'attività dell'applicazione. Replace (Sostituisci) $IMAGE con l'immagine più recente dall'archivio di ECR immagini AWS Distro for OpenTelemetry Amazon.

    { "name": "init", "image": "$IMAGE", "essential": false, "command": [ "cp", "-a", "/autoinstrumentation/.", "/otel-auto-instrumentation-node" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-node", "containerPath": "/otel-auto-instrumentation-node", "readOnly": false } ], }
  3. Aggiungi le seguenti variabili di ambiente al container dell'applicazione.

    Variabile di ambiente Impostazione per abilitare Application Signals

    OTEL_RESOURCE_ATTRIBUTES

    Specificate le seguenti informazioni come coppie chiave-valore:

    • service.name imposta il nome del servizio. Questo verrà visualizzato come nome del servizio per l'applicazione nei pannelli di controllo di Application Signals. Se non si fornisce un valore per questa chiave, viene utilizzato il valore predefinito di UnknownService.

    • deployment.environment imposta l'ambiente in cui viene eseguita l'applicazione. Questo verrà visualizzato come ambiente ospitato dell'applicazione nei pannelli di controllo di Application Signals. Se non lo specificate, generic:default viene utilizzato il valore predefinito di.

    Questa chiave di attributo viene utilizzata solo da Application Signals e viene convertita in annotazioni di tracce a raggi X e CloudWatch dimensioni metriche.

    (Facoltativo) Per abilitare la correlazione dei log per Application Signals, impostate una variabile aws.log.group.names di ambiente aggiuntiva come nome del gruppo di log per il log dell'applicazione. In questo modo, le tracce e le metriche dell'applicazione possono essere correlate con le voci di registro pertinenti del gruppo di log. Per questa variabile, sostituisci $YOUR_APPLICATION_LOG_GROUP con i nomi dei gruppi di log per l'applicazione. Se hai più gruppi di log, puoi usare un ampersand (&) per separarli come in questo esempio:. aws.log.group.names=log-group-1&log-group-2 Per abilitare la correlazione tra metrica e log, è sufficiente impostare questa variabile ambientale corrente. Per ulteriori informazioni, consulta Abilita la correlazione tra metrica e log. Per abilitare la correlazione tra traccia e registro, dovrai anche modificare la configurazione di registrazione nell'applicazione. Per ulteriori informazioni, consulta Abilita la correlazione tra traccia e log.

    OTEL_AWS_APPLICATION_SIGNALS_ENABLED

    Imposta per true fare in modo che il contenitore inizi a inviare tracce e CloudWatch metriche X-Ray ad Application Signals.

    OTEL_METRICS_EXPORTER

    Imposta su none per disabilitare gli esportatori di altri parametri.

    OTEL_LOGS_EXPORTER

    Impostato per none disabilitare altri esportatori di log.

    OTEL_EXPORTER_OTLP_PROTOCOL

    Imposta su per http/protobuf inviare metriche e tracce ad Application Signals usandoOTLP/HTTPe protobuf.

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Invia le metriche al contenitore del demone. CloudWatch

    • Per le applicazioni in esecuzione in host modalità, impostalo su. http://localhost:4316/v1/metrics

    • Per le applicazioni in esecuzione in bridge awsvpc modalità o modalità, impostalo su http://CW_CONTAINER_IP:4316/v1/metrics, dove CW_CONTAINER_IP è l'indirizzo IP privato dell'istanza del contenitore. EC2 È possibile recuperare questo indirizzo dall'Instance Metadata Service ()IMDS.

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Invia tracce al contenitore del CloudWatch demone.

    • Per le applicazioni in esecuzione in host modalità, impostalo su. http://localhost:4316/v1/traces

    • Per le applicazioni in esecuzione in bridge awsvpc modalità o modalità, impostalo su http://CW_CONTAINER_IP:4316/v1/traces, dove CW_CONTAINER_IP è l'indirizzo IP privato dell'istanza del contenitore. EC2 È possibile recuperare questo indirizzo dall'Instance Metadata Service ()IMDS.

    OTEL_TRACES_SAMPLER

    Impostalo su per xray impostare X-Ray come campionatore di tracce.

    OTEL_TRACES_SAMPLER_ARG

    Imposta l'endpoint del campionatore di tracce.

    • Per le applicazioni in esecuzione in host modalità, impostalo su. http://localhost:2000

    • Per le applicazioni in esecuzione in bridge modalità o awsvpc modalità, impostalo suhttp://CW_CONTAINER_IP:2000, dove CW_CONTAINER_IP è l'indirizzo IP privato dell'istanza del EC2 contenitore. È possibile recuperare questo indirizzo dall'Instance Metadata Service ()IMDS.

    OTEL_PROPAGATORS

    Imposta xray come uno dei propagatori.

    NODE_OPTIONS

    Imposta su --require AWS_ADOT_NODE_INSTRUMENTATION_PATH. Replace (Sostituisci) AWS_ADOT_NODE_INSTRUMENTATION_PATH con il percorso in cui è archiviata la strumentazione automatica AWS Distro for OpenTelemetry Node.js. Ad esempio, /otel-auto-instrumentation-node/autoinstrumentation.js.

  4. Monta il volume opentelemetry-auto-instrumentation-node definito nella fase 1 di questa procedura. Se non è necessario abilitare la correlazione dei log con metriche e tracce, utilizzate il seguente esempio per un'applicazione Node.js. Se desideri abilitare la correlazione dei log, consulta invece il passaggio successivo.

    Per il tuo Application Container, aggiungi una dipendenza dal init contenitore per assicurarti che il contenitore finisca prima dell'avvio del contenitore dell'applicazione.

    { "name": "my-app", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://CW_CONTAINER_IP:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP:4316/v1/traces" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://CW_CONTAINER_IP:2000" }, { "name": "NODE_OPTIONS", "value": "--require /otel-auto-instrumentation-node/autoinstrumentation.js" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-node", "containerPath": "/otel-auto-instrumentation-node", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }
  5. (Facoltativo) Per abilitare la correlazione dei log, effettuate le seguenti operazioni prima di montare il volume. InOTEL_RESOURCE_ATTRIBUTES, impostate una variabile di ambiente aggiuntiva aws.log.group.names per i gruppi di log dell'applicazione. In questo modo, le tracce e le metriche dell'applicazione possono essere correlate con le voci di registro pertinenti di questi gruppi di log. Per questa variabile, sostituisci $YOUR_APPLICATION_LOG_GROUP con i nomi dei gruppi di log per l'applicazione. Se hai più gruppi di log, puoi usare un ampersand (&) per separarli come in questo esempio:. aws.log.group.names=log-group-1&log-group-2 Per abilitare la correlazione tra metrica e log, è sufficiente impostare questa variabile ambientale corrente. Per ulteriori informazioni, consulta Abilita la correlazione tra metrica e log. Per abilitare la correlazione tra traccia e registro, dovrai anche modificare la configurazione di registrazione nell'applicazione. Per ulteriori informazioni, consulta Abilita la correlazione tra traccia e log.

    Di seguito è riportato un esempio. Utilizzate questo esempio per abilitare la correlazione dei log quando montate il volume definito nel passaggio 1 di opentelemetry-auto-instrumentation questa procedura.

    { "name": "my-app", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP,service.name=$SVC_NAME" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://CW_CONTAINER_IP:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP:4316/v1/traces" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://CW_CONTAINER_IP:2000" }, { "name": "NODE_OPTIONS", "value": "--require /otel-auto-instrumentation-node/autoinstrumentation.js" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-node", "containerPath": "/otel-auto-instrumentation-node", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }

Configurazione di un'applicazione Node.js con il formato del ESM modulo

Forniamo un supporto limitato per le applicazioni Node.js con il formato del ESM modulo. Per informazioni dettagliate, consultare Limitazioni note relative a Node.js con ESM.

Per il formato del ESM modulo, SDK non si applica l'utilizzo del init contenitore per iniettare la strumentazione Node.js. Per abilitare Application Signals for Node.js conESM, saltate i passaggi 1 e 2 della procedura precedente ed effettuate invece quanto segue.

Per abilitare Application Signals per un'applicazione Node.js con ESM
  1. 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
  2. Nei passaggi 4 e 5 della procedura precedente, rimuovete il montaggio del volume: opentelemetry-auto-instrumentation-node

    "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-node", "containerPath": "/otel-auto-instrumentation-node", "readOnly": false } ]

    Sostituite le opzioni del nodo con le seguenti.

    { "name": "NODE_OPTIONS", "value": "--import @aws/aws-distro-opentelemetry-node-autoinstrumentation/register --experimental-loader=@opentelemetry/instrumentation/hook.mjs" }

Fase 6: Implementazione dell'applicazione

Crea una nuova revisione della definizione dell'attività e distribuiscila nel tuo cluster di applicazioni. Dovreste vedere due contenitori nell'attività appena creata:

  • init— Un contenitore necessario per inizializzare Application Signals

  • my-app— Questo è il contenitore di applicazioni di esempio nella nostra documentazione. Nei carichi di lavoro effettivi, questo contenitore specifico potrebbe non esistere o potrebbe essere sostituito con contenitori di servizi personalizzati.