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
Devi prima abilitare Application Signals nel tuo account. Se non l'hai fatto, vediAbilita Application Signals nel tuo account.
Fase 2: creazione dei ruoli IAM
È necessario creare un ruolo IAM. Se hai già creato questo ruolo, potrebbe essere necessario aggiungervi delle autorizzazioni.
-
Ruolo dell'attività ECS: i container utilizzano questo ruolo per l'esecuzione. Inoltre, le autorizzazioni dovrebbero corrispondere a ciò di cui hanno bisogno le applicazioni. CloudWatchAgentServerPolicy
Per ulteriori informazioni sulla creazione dei ruoli IAM, consulta Creazione di ruoli IAM.
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 nell'archivio parametri SSM. A questo scopo, immetti il comando seguente. Nel file, sostituiscilo $REGION con il nome effettivo della regione.
aws ssm put-parameter \ --name "ecs-cwagent" \ --type "String" \ --value "`cat /tmp/ecs-cwagent.json`" \ --region "$REGION"
Fase 4: Implementare il servizio daemon CloudWatch dell'agente
Crea la seguente definizione di attività e distribuiscila nel tuo cluster di applicazioni. $REGIONSostituiscila con il nome effettivo della tua regione. Sostituisci $TASK_ROLE_ARN e $EXECUTION_ROLE_ARN con i ruoli IAM in cui ti sei preparatoFase 2: creazione dei ruoli IAM. Sostituisci $IMAGE con il percorso dell'immagine del CloudWatch contenitore più recente su Amazon Elastic Container Registry. Per ulteriori informazioni, consulta cloudwatch-agent
Nota
Il servizio daemon espone due porte sull'host, di cui 4316 utilizzate come endpoint per ricevere metriche e tracce e 2000 come endpoint trace sampler. CloudWatch Questa configurazione consente all'agente di raccogliere e trasmettere dati di telemetria da tutte le attività dell'applicazione in esecuzione sull'host. Assicuratevi 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'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" } ]Aggiungi un nuovo container
initalla definizione dell'attività dell'applicazione. Sostituisci$IMAGEcon l'immagine più recente dall'archivio di immagini AWS Distro for OpenTelemetry Amazon ECR.{ "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 una dipendenza dal
initcontenitore per assicurarti che questo 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.32.2 o successiva dell'agente AWS Distro for OpenTelemetry auto-instrumentation for Java
. Variabile di ambiente Impostazione per abilitare Application Signals OTEL_RESOURCE_ATTRIBUTESSpecificate le seguenti informazioni come coppie chiave-valore:
service.nameimposta 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.environmentimposta 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:defaultviene 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.namesdi 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, sostituitela$YOUR_APPLICATION_LOG_GROUPcon i nomi dei gruppi di log dell'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-2Per 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 registro.OTEL_AWS_APPLICATION_SIGNALS_ENABLEDImposta per
truefare in modo che il contenitore inizi a inviare tracce e CloudWatch metriche X-Ray ad Application Signals.OTEL_METRICS_EXPORTERImposta su
noneper disabilitare gli esportatori di altri parametri.OTEL_LOGS_EXPORTERImpostato per
nonedisabilitare altri esportatori di log.OTEL_EXPORTER_OTLP_PROTOCOLImposta su
http/protobufper inviare metriche e tracce ad Application Signals tramite HTTP.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINTInvia le metriche al contenitore del CloudWatch demone.
Per le applicazioni in esecuzione in
hostmodalità, impostalo su.http://localhost:4316/v1/metricsPer le applicazioni in esecuzione in
bridgemodalità oawsvpcmodalità, impostalo su http: //:4316/v1/metricsCW_CONTAINER_IP, dove è l'indirizzo IP privato dell'istanzaCW_CONTAINER_IPdel contenitore. EC2 È possibile recuperare questo indirizzo dall'Instance Metadata Service (IMDS).
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTInvia tracce al contenitore del CloudWatch demone.
Per le applicazioni in esecuzione in
hostmodalità, impostalo su.http://localhost:4316/v1/tracesPer le applicazioni in esecuzione in
bridgemodalità oawsvpcmodalità, impostalo su http: //:4316/v1/traceCW_CONTAINER_IP, dove èCW_CONTAINER_IPl'indirizzo IP privato dell'istanza del contenitore. EC2 È possibile recuperare questo indirizzo dall'Instance Metadata Service (IMDS).
OTEL_TRACES_SAMPLERImpostalo su per
xrayimpostare X-Ray come campionatore di tracce.OTEL_PROPAGATORSImposta
xraycome uno dei propagatori.JAVA_TOOL_OPTIONSImposta su
" -javaagent:$SostituisciAWS_ADOT_JAVA_INSTRUMENTATION_PATH"AWS_ADOT_JAVA_INSTRUMENTATION_PATHcon il percorso in cui è archiviato l'agente di strumentazione automatica AWS Distro for OpenTelemetry Java. Ad esempio,/otel-auto-instrumentation/javaagent.jarMonta il volume
opentelemetry-auto-instrumentationdefinito 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" } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ], "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
PYTHONPATHambiente mancante a volte può impedire l'avvio dell'applicazione. Per risolvere questo problema, assicuratevi di impostare la variabile diPYTHONPATHambiente 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 L'impostazione della strumentazione automatica in Pythondi PYTHONPATH non è conforme. -
Usa il
--noreloadflag per impedire il ricaricamento automatico.Imposta la variabile di
DJANGO_SETTINGS_MODULEambiente sulla posizione del file dell'settings.pyapplicazione Django. Ciò garantisce che OpenTelemetry possa accedere e integrarsi correttamente con le impostazioni di Django.
Se stai usando un server WSGI per la tua applicazione Python, oltre ai seguenti passaggi in questa sezione, Nessun dato di Application Signals per l'applicazione Python che utilizza un server WSGI consulta 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 un nuovo container
initalla definizione dell'attività dell'applicazione. Sostituisci$IMAGEcon l'immagine più recente dall'archivio di immagini AWS Distro for OpenTelemetry Amazon ECR.{ "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 una dipendenza dal
initcontenitore per assicurarti che questo contenitore finisca prima dell'avvio del contenitore dell'applicazione."dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ]Aggiungi le seguenti variabili di ambiente al container dell'applicazione.
Variabile di ambiente Impostazione per abilitare Application Signals OTEL_RESOURCE_ATTRIBUTESSpecificate le seguenti informazioni come coppie chiave-valore:
service.nameimposta 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.environmentimposta 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:defaultviene 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.namesdi 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, sostituitela$YOUR_APPLICATION_LOG_GROUPcon i nomi dei gruppi di log dell'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-2Per 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 registro.OTEL_AWS_APPLICATION_SIGNALS_ENABLEDImposta per
truefare in modo che il contenitore inizi a inviare tracce e CloudWatch metriche X-Ray ad Application Signals.OTEL_METRICS_EXPORTERImposta su
noneper disabilitare gli esportatori di altri parametri.OTEL_EXPORTER_OTLP_PROTOCOLImposta per
http/protobufinviare metriche e tracce all' CloudWatch utilizzo di HTTP.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINTInvia le metriche al contenitore del CloudWatch demone.
Per le applicazioni in esecuzione in
hostmodalità, impostalo su.http://localhost:4316/v1/metricsPer le applicazioni in esecuzione in
bridgemodalità oawsvpcmodalità, impostalo su http: //:4316/v1/metricsCW_CONTAINER_IP, dove è l'indirizzo IP privato dell'istanzaCW_CONTAINER_IPdel contenitore. EC2 È possibile recuperare questo indirizzo dall'Instance Metadata Service (IMDS).
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTInvia tracce al contenitore del CloudWatch demone.
Per le applicazioni in esecuzione in
hostmodalità, impostalo su.http://localhost:4316/v1/tracesPer le applicazioni in esecuzione in
bridgemodalità oawsvpcmodalità, impostalo su http: //:4316/v1/traceCW_CONTAINER_IP, dove èCW_CONTAINER_IPl'indirizzo IP privato dell'istanza del contenitore. EC2 È possibile recuperare questo indirizzo dall'Instance Metadata Service (IMDS).
OTEL_TRACES_SAMPLERImpostalo su per
xrayimpostare X-Ray come campionatore di tracce.OTEL_TRACES_SAMPLER_ARGImposta l'endpoint del campionatore di tracce.
Per le applicazioni in esecuzione in
hostmodalità, impostalo su.http://localhost:2000Per le applicazioni in esecuzione in
bridgeawsvpcmodalità o modalità, impostalo suhttp://, doveCW_CONTAINER_IP:2000CW_CONTAINER_IPè l'indirizzo IP privato dell'istanza del EC2 contenitore. È possibile recuperare questo indirizzo dall'Instance Metadata Service (IMDS).
OTEL_PROPAGATORSAggiungi
xraycome uno dei propagatori.OTEL_PYTHON_DISTROImpostato per
aws_distroutilizzare la strumentazione ADOT Python.OTEL_PYTHON_CONFIGURATORImpostato
aws_configurationper utilizzare la configurazione ADOT Python.PYTHONPATHSostituisci
$APP_PATHcon 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_MODULERichiesto solo per le applicazioni Django. Impostalo sulla posizione del file dell'applicazione Django.
settings.pySostituisci$PATH_TO_SETTINGS.Monta il volume
opentelemetry-auto-instrumentation-pythondefinito 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" } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ], "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, impostate una variabile di ambiente aggiuntivaaws.log.group.namesper 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, sostituitela$YOUR_APPLICATION_LOG_GROUPcon i nomi dei gruppi di log dell'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-2Per 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 registro.Di seguito è riportato un esempio. Per abilitare la correlazione dei log, utilizzate questo esempio quando montate il volume
opentelemetry-auto-instrumentation-pythondefinito 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" } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-python", "containerPath": "/otel-auto-instrumentation-python", "readOnly": false } ] }
- .NET
-
Per strumentare la tua applicazione 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" } ]Aggiungi un nuovo container
initalla definizione dell'attività dell'applicazione. Sostituisci$IMAGEcon l'immagine più recente dall'archivio di immagini AWS Distro for OpenTelemetry Amazon ECR.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
initcontenitore 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_ATTRIBUTESSpecificate le seguenti informazioni come coppie chiave-valore:
service.nameimposta 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.environmentimposta 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:defaultviene 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_ENABLEDImposta per
truefare in modo che il contenitore inizi a inviare tracce e CloudWatch metriche X-Ray ad Application Signals.OTEL_METRICS_EXPORTERImposta su
noneper disabilitare gli esportatori di altri parametri.OTEL_LOGS_EXPORTERImpostato per
nonedisabilitare altri esportatori di log.OTEL_EXPORTER_OTLP_PROTOCOLImposta su
http/protobufper inviare metriche e tracce ad Application Signals tramite HTTP.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINTInvia le metriche al contenitore del CloudWatch demone.
Per le applicazioni in esecuzione in
hostmodalità, impostalo su.http://localhost:4316/v1/metricsPer le applicazioni in esecuzione in
bridgemodalità oawsvpcmodalità, impostalo su http: //:4316/v1/metricsCW_CONTAINER_IP, dove è l'indirizzo IP privato dell'istanzaCW_CONTAINER_IPdel contenitore. EC2 È possibile recuperare questo indirizzo dall'Instance Metadata Service (IMDS).
OTEL_EXPORTER_OTLP_ENDPOINTInvia tracce al contenitore del CloudWatch demone.
Per le applicazioni in esecuzione in
hostmodalità, impostalo su.http://localhost:4316Per le applicazioni in esecuzione in
bridgemodalità oawsvpcmodalità, impostalo su http: //:4316CW_CONTAINER_IP, dove èCW_CONTAINER_IPl'indirizzo IP privato dell'istanza del contenitore. EC2 È possibile recuperare questo indirizzo dall'Instance Metadata Service (IMDS).
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTInvia tracce al contenitore del CloudWatch demone.
Per le applicazioni in esecuzione in
hostmodalità, impostalo su.http://localhost:4316/v1/tracesPer le applicazioni in esecuzione in
bridgemodalità oawsvpcmodalità, impostalo su http: //:4316/v1/traceCW_CONTAINER_IP, dove èCW_CONTAINER_IPl'indirizzo IP privato dell'istanza del contenitore. EC2 È possibile recuperare questo indirizzo dall'Instance Metadata Service (IMDS).
OTEL_TRACES_SAMPLER_ARGImposta l'endpoint del campionatore di tracce.
Per le applicazioni in esecuzione in
hostmodalità, impostalo su.http://localhost:2000Per le applicazioni in esecuzione in
bridgeawsvpcmodalità o modalità, impostalo suhttp://, doveCW_CONTAINER_IP:2000CW_CONTAINER_IPè l'indirizzo IP privato dell'istanza del EC2 contenitore. È possibile recuperare questo indirizzo dall'Instance Metadata Service (IMDS).
OTEL_DOTNET_AUTO_HOMEImpostato sulla posizione di installazione della strumentazione automatica ADOT .NET.
OTEL_DOTNET_AUTO_PLUGINSImpostato per
AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentationabilitare il plug-in Application Signals.CORECLR_ENABLE_PROFILINGImpostare
1per abilitare il profiler.CORECLR_PROFILERImposta su
{918728DD-259F-4A6A-AC2B-B85E1B658318}come CLSID del profiler.CORECLR_PROFILER_PATHImposta questo valore sul percorso del profiler.
Su Linux, impostalo su
${OTEL_DOTNET_AUTO_HOME}/linux-x64/OpenTelemetry.AutoInstrumentation.Native.soIn Windows Server, impostalo su
${OTEL_DOTNET_AUTO_HOME}/win-x64/OpenTelemetry.AutoInstrumentation.Native.dllDOTNET_ADDITIONAL_DEPSImposta questo valore sul percorso della cartella di
${OTEL_DOTNET_AUTO_HOME}/AdditionalDeps.DOTNET_SHARED_STOREImposta questo valore sul percorso della cartella di
${OTEL_DOTNET_AUTO_HOME}/store.DOTNET_STARTUP_HOOKSImposta questo valore sul percorso dell'assieme gestito
${OTEL_DOTNET_AUTO_HOME}/net/OpenTelemetry.AutoInstrumentation.StartupHook.dllda eseguire prima del punto di ingresso dell'applicazione principale.Monta il volume
opentelemetry-auto-instrumentationdefinito 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=dotnet-service-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://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" } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ], "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=dotnet-service-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_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 con ESM, 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'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-node" } ]Aggiungi un nuovo container
initalla definizione dell'attività dell'applicazione. Sostituisci$IMAGEcon l'immagine più recente dall'archivio di immagini AWS Distro for OpenTelemetry Amazon ECR.{ "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 una dipendenza dal
initcontenitore per assicurarti che questo contenitore finisca prima dell'avvio del contenitore dell'applicazione."dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ]Aggiungi le seguenti variabili di ambiente al container dell'applicazione.
Variabile di ambiente Impostazione per abilitare Application Signals OTEL_RESOURCE_ATTRIBUTESSpecificate le seguenti informazioni come coppie chiave-valore:
service.nameimposta 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.environmentimposta 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:defaultviene 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.namesdi 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, sostituitela$YOUR_APPLICATION_LOG_GROUPcon i nomi dei gruppi di log dell'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-2Per 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 registro.OTEL_AWS_APPLICATION_SIGNALS_ENABLEDImposta per
truefare in modo che il contenitore inizi a inviare tracce e CloudWatch metriche X-Ray ad Application Signals.OTEL_METRICS_EXPORTERImposta su
noneper disabilitare gli esportatori di altri parametri.OTEL_LOGS_EXPORTERImpostato per
nonedisabilitare altri esportatori di log.OTEL_EXPORTER_OTLP_PROTOCOLImposta su per
http/protobufinviare metriche e tracce a Application Signals utilizzando OTLP/HTTP e protobuf.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINTInvia le metriche al contenitore del demone. CloudWatch
Per le applicazioni in esecuzione in
hostmodalità, impostalo su.http://localhost:4316/v1/metricsPer le applicazioni in esecuzione in
bridgemodalità oawsvpcmodalità, impostalo su http: //:4316/v1/metricsCW_CONTAINER_IP, dove è l'indirizzo IP privato dell'istanzaCW_CONTAINER_IPdel contenitore. EC2 È possibile recuperare questo indirizzo dall'Instance Metadata Service (IMDS).
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTInvia tracce al contenitore del CloudWatch demone.
Per le applicazioni in esecuzione in
hostmodalità, impostalo su.http://localhost:4316/v1/tracesPer le applicazioni in esecuzione in
bridgemodalità oawsvpcmodalità, impostalo su http: //:4316/v1/traceCW_CONTAINER_IP, dove èCW_CONTAINER_IPl'indirizzo IP privato dell'istanza del contenitore. EC2 È possibile recuperare questo indirizzo dall'Instance Metadata Service (IMDS).
OTEL_TRACES_SAMPLERImpostalo su per
xrayimpostare X-Ray come campionatore di tracce.OTEL_TRACES_SAMPLER_ARGImposta l'endpoint del campionatore di tracce.
Per le applicazioni in esecuzione in
hostmodalità, impostalo su.http://localhost:2000Per le applicazioni in esecuzione in
bridgeawsvpcmodalità o modalità, impostalo suhttp://, doveCW_CONTAINER_IP:2000CW_CONTAINER_IPè l'indirizzo IP privato dell'istanza del EC2 contenitore. È possibile recuperare questo indirizzo dall'Instance Metadata Service (IMDS).
OTEL_PROPAGATORSImposta
xraycome uno dei propagatori.NODE_OPTIONSImposta su
--require. SostituireAWS_ADOT_NODE_INSTRUMENTATION_PATHAWS_ADOT_NODE_INSTRUMENTATION_PATHcon il percorso in cui è memorizzata la strumentazione automatica AWS Distro for OpenTelemetry Node.js. Ad esempio,/otel-auto-instrumentation-node/autoinstrumentation.jsMonta il volume
opentelemetry-auto-instrumentation-nodedefinito 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
initcontenitore 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" } ] }(Facoltativo) Per abilitare la correlazione dei log, effettuate le seguenti operazioni prima di montare il volume. In
OTEL_RESOURCE_ATTRIBUTES, impostate una variabile di ambiente aggiuntivaaws.log.group.namesper 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, sostituitela$YOUR_APPLICATION_LOG_GROUPcon i nomi dei gruppi di log dell'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-2Per 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 registro.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-instrumentationquesta 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 modulo ESM
Forniamo un supporto limitato per le applicazioni Node.js con il formato del modulo ESM. Per informazioni dettagliate, consultare Limitazioni note di Node.js con ESM.
Per il formato del modulo ESM, l'utilizzo del
initcontenitore per iniettare l'SDK di strumentazione Node.js non è applicabile. Per abilitare Application Signals for Node.js con ESM, salta i passaggi 1 e 2 della procedura precedente e procedi invece come 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.0Nei 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— 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.my-app
(Facoltativo) Fase 7: Monitoraggio dello stato dell'applicazione
Dopo aver abilitato le applicazioni su Amazon ECS, puoi monitorare lo stato delle applicazioni. Per ulteriori informazioni, consulta Monitoraggio dell'integrità operativa delle applicazioni con Application Signals.