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à.
Usa una configurazione personalizzata per abilitare Application Signals su Amazon ECS
Utilizza queste istruzioni di configurazione personalizzate per effettuare l'onboarding delle tue applicazioni su Amazon ECS su CloudWatch Application Signals. Installi e configuri tu stesso l' CloudWatch agente e AWS Distro. OpenTelemetry
Importante
Solo la modalità di rete awsvpc
è supportata. Sono supportati entrambi i tipi di lancio EC2 e Fargate.
Nei ECS cluster Amazon, Application Signals non rileva automaticamente i nomi dei tuoi servizi. È necessario specificare i nomi dei servizi durante la configurazione personalizzata e i nomi specificati sono quelli visualizzati nelle dashboard di Application Signals.
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
Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/
. Nel riquadro di navigazione, scegli Servizi.
Scegli Inizia a scoprire i tuoi servizi.
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, inoltre 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: Strumentate la vostra candidatura con l' CloudWatch agente
Il passo successivo è quello di strumentare la vostra CloudWatch applicazione per Application Signals.
- Java
-
Per strumentare la tua applicazione su Amazon ECS con l' CloudWatch agente
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" } ]
Aggiungi una definizione collaterale di CloudWatch agente. A tale scopo, aggiungi un nuovo container chiamato
ecs-cwagent
alla definizione dell'attività dell'applicazione. Replace (Sostituisci)$REGION
con il nome effettivo della tua regione. Replace (Sostituisci)$IMAGE
con il percorso dell'immagine del CloudWatch contenitore più recente su Amazon Elastic Container Registry. Per ulteriori informazioni, consulta cloudwatch-agentsu Amazon. ECR { "name": "ecs-cwagent", "image": "
$IMAGE
", "essential": true, "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" } } }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 } ] }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 diUnknownService
.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. HTTPOTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
Imposta per
http://localhost:4316/v1/metrics
inviare le metriche al sidecar. CloudWatchOTEL_EXPORTER_OTLP_TRACES_ENDPOINT
Imposta su
http://localhost:4316/v1/traces
per inviare tracce al sidecar. CloudWatchOTEL_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
.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://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://localhost: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 } ] }(Facoltativo) Per abilitare la correlazione dei log, effettuate le seguenti operazioni prima di montare il volume. In
OTEL_RESOURCE_ATTRIBUTES
, imposta una variabile di ambiente aggiuntivaaws.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": "JAVA_TOOL_OPTIONS", "value": " -javaagent:/otel-auto-instrumentation/javaagent.jar" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://localhost: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.
In alcune applicazioni containerizzate, una variabile di
PYTHONPATH
ambiente mancante a volte può impedire l'avvio dell'applicazione. Per risolvere questo problema, assicuratevi di impostare la variabile diPYTHONPATH
ambiente sulla posizione della directory di lavoro dell'applicazione. Ciò è dovuto a un problema noto con la OpenTelemetry strumentazione automatica. Per ulteriori informazioni su questo problema, vedere Python autoinstrumentation settingof is not compliant. PYTHONPATH -
Usa il
--noreload
flag per impedire il ricaricamento automatico.Imposta la variabile di
DJANGO_SETTINGS_MODULE
ambiente sulla posizione del file dell'settings.py
applicazione Django. Ciò garantisce che OpenTelemetry possa accedere e integrarsi correttamente con le impostazioni di Django.
Se stai usando un WSGI server per la tua applicazione Python, oltre ai seguenti passaggi in questa sezione, consulta Nessun dato di Application Signals per l'applicazione Python che utilizza un server WSGI per informazioni su come far funzionare Application Signals.
Per strumentare la tua applicazione Python su Amazon ECS con l'agente CloudWatch
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" } ]
Aggiungi una definizione collaterale CloudWatch dell'agente. A tale scopo, aggiungi un nuovo container chiamato
ecs-cwagent
alla definizione dell'attività dell'applicazione. Replace (Sostituisci)$REGION
con il nome effettivo della tua regione. Replace (Sostituisci)$IMAGE
con il percorso dell'immagine del CloudWatch contenitore più recente su Amazon Elastic Container Registry. Per ulteriori informazioni, consulta cloudwatch-agentsu Amazon. ECR { "name": "ecs-cwagent", "image": "
$IMAGE
", "essential": true, "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" } } }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 } ] }
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 diUnknownService
.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 HTTPOTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
Imposta su
http://127.0.0.1:4316/v1/metrics
per inviare le metriche al sidecar. CloudWatchOTEL_EXPORTER_OTLP_TRACES_ENDPOINT
Imposta su
http://127.0.0.1:4316/v1/traces
per inviare tracce al sidecar. CloudWatchOTEL_TRACES_SAMPLER
Impostalo su per
xray
impostare X-Ray come campionatore di tracce.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
.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://localhost: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://localhost:4316/v1/traces" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://localhost: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 } ] }(Facoltativo) Per abilitare la correlazione dei log, effettuate le seguenti operazioni prima di montare il volume. In
OTEL_RESOURCE_ATTRIBUTES
, imposta una variabile di ambiente aggiuntivaaws.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://localhost: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://localhost:4316/v1/traces" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://localhost: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
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" } ]
Aggiungi una definizione collaterale di CloudWatch agente. A tale scopo, aggiungi un nuovo container chiamato
ecs-cwagent
alla definizione dell'attività dell'applicazione. Replace (Sostituisci)$REGION
con il nome effettivo della tua regione. Replace (Sostituisci)$IMAGE
con il percorso dell'immagine del CloudWatch contenitore più recente su Amazon Elastic Container Registry. Per ulteriori informazioni, consulta cloudwatch-agentsu Amazon. ECR { "name": "ecs-cwagent", "image": "
$IMAGE
", "essential": true, "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" } } }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 } ] }Aggiungete una dipendenza dal
init
contenitore per assicurarvi che il contenitore finisca prima dell'avvio del contenitore dell'applicazione."dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ]
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 diUnknownService
.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. HTTPOTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
Imposta per
http://localhost:4316/v1/metrics
inviare le metriche al sidecar. CloudWatchOTEL_EXPORTER_OTLP_ENDPOINT
Imposta su
http://localhost:4316/
per inviare tracce al sidecar. CloudWatchOTEL_EXPORTER_OTLP_TRACES_ENDPOINT
Imposta su
http://localhost:4316/v1/traces
per inviare tracce al CloudWatch sidecar.OTEL_DOTNET_AUTO_HOME
Imposta 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. CLSIDCORECLR_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.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://localhost:4316/v1/traces" }, { "name": "OTEL_EXPORTER_OTLP_ENDPOINT", "value": "http://localhost:4316" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://localhost: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://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://localhost:4316/v1/traces" }, { "name": "OTEL_EXPORTER_OTLP_ENDPOINT", "value": "http://localhost:4316" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://localhost: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 (Preview)
-
Per strumentare la tua applicazione su Amazon ECS con l' CloudWatch agente
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" } ]
Aggiungi una definizione collaterale di CloudWatch agente. A tale scopo, aggiungi un nuovo container chiamato
ecs-cwagent
alla definizione dell'attività dell'applicazione. Replace (Sostituisci)$REGION
con il nome effettivo della tua regione. Replace (Sostituisci)$IMAGE
con il percorso dell'immagine del CloudWatch contenitore più recente su Amazon Elastic Container Registry. Per ulteriori informazioni, consulta cloudwatch-agentsu Amazon. ECR { "name": "ecs-cwagent", "image": "
$IMAGE
", "essential": true, "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" } } }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 } ], }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 diUnknownService
.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
Imposta su per
http://localhost:4316/v1/metrics
inviare le metriche al sidecar. CloudWatchOTEL_EXPORTER_OTLP_TRACES_ENDPOINT
Imposta su
http://localhost:4316/v1/traces
per inviare tracce al sidecar. CloudWatchOTEL_TRACES_SAMPLER
Impostalo su per
xray
impostare X-Ray come campionatore di tracce.OTEL_PROPAGATORS
Imposta
xray
come uno dei propagatori.NODE_OPTIONS
Imposta su
--require
. Replace (Sostituisci)AWS_ADOT_NODE_INSTRUMENTATION_PATH
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
.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 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://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://localhost:4316/v1/traces" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://localhost: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" } ] }(Facoltativo) Per abilitare la correlazione dei log, effettuate le seguenti operazioni prima di montare il volume. In
OTEL_RESOURCE_ATTRIBUTES
, imposta una variabile di ambiente aggiuntivaaws.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://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://localhost:4316/v1/traces" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://localhost: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" } ] }
Fase 5: distribuzione dell'applicazione
Crea una nuova revisione della definizione dell'attività e distribuiscila nel tuo cluster di applicazioni. Dovresti vedere tre container nell'attività appena creata:
init
ecs-cwagent
my-app