Implementazione utilizzando la strategia daemon
Fase 1: abilitazione di Application Signals nel tuo account
Prima devi abilitare Application Signals nel tuo account. Se non lo hai ancora fatto, consulta Abilitazione di Application Signals in un account.
Fase 2: creazione dei ruoli IAM
È necessario creare un ruolo IAM. Se questo ruolo è già stato creato, potrebbe essere necessario aggiungergli delle autorizzazioni.
-
Ruolo dell'attività ECS: i container utilizzano questo ruolo per l'esecuzione. Le autorizzazioni devono essere quelle richieste dalle applicazioni, più CloudWatchAgentServerPolicy.
Per ulteriori informazioni sulla creazione dei ruoli IAM, consulta Creazione di ruoli IAM.
Fase 3: preparazione della configurazione dell'agente CloudWatch
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, 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 dell'agente CloudWatch
Crea la definizione di attività seguente e implementala nel cluster dell'applicazione. Sostituisci $REGION con il nome effettivo della tua regione. Sostituisci $TASK_ROLE_ARN e $EXECUTION_ROLE_ARN con i ruoli IAM che hai preparato in Fase 2: creazione dei ruoli IAM. Sostituisci $IMAGE con il percorso dell'immagine del container CloudWatch su Amazon Elastic Container Registry. Per maggiori informazioni, consulta cloudwatch-agent
Nota
Il servizio daemon espone due porte sull'host, di cui la 4316 è utilizzata come endpoint per ricevere metriche e tracce e la 2000 come endpoint del campionatore di tracce di 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" }
Passaggio 5: instrumentazione dell'applicazione
Il passaggio successivo è quello di instrumentare l'applicazione per Application Signals.
- Java
-
Per strumentare l'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 dal repository 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 al container
initper assicurarti che questo container finisca prima dell'avvio del container 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 di instrumentazione automatica AWS Distro per OpenTelemetry per Java
. Variabile di ambiente Impostazione per abilitare Application Signals OTEL_RESOURCE_ATTRIBUTESSpecifica 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 si specifica questo valore, viene utilizzato il valore predefinitogeneric:default.
Questa chiave di attributo viene utilizzata solo da Application Signals e viene convertita in annotazioni di tracce X-Ray e dimensioni dei parametri CloudWatch.
(Facoltativo) Per abilitare la correlazione dei log per Application Signals, imposta una variabile di ambiente aggiuntiva
aws.log.group.namescome nome del gruppo di log del log dell'applicazione. In questo modo, le tracce e le metriche dell'applicazione possono essere correlate alle voci di log pertinenti del gruppo di log. Per questa variabile, sostituisci$YOUR_APPLICATION_LOG_GROUPcon i nomi dei gruppi di log dell'applicazione. Se hai più gruppi di log, puoi usare una e commerciale (&) 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 di ambiente corrente. Per ulteriori informazioni, consulta Abilitazione della correlazione tra metrica e log. Per abilitare la correlazione tra traccia e log, dovrai anche modificare la configurazione di registrazione nell'applicazione. Per ulteriori informazioni, consulta Abilitazione della correlazione tra traccia e log.OTEL_AWS_APPLICATION_SIGNALS_ENABLEDImposta la variabile su
trueaffinché il container inizi a inviare tracce X-Ray e metriche CloudWatch ad Application Signals.OTEL_METRICS_EXPORTERImposta su
noneper disabilitare gli esportatori di altri parametri.OTEL_LOGS_EXPORTERImposta il valore su
noneper disabilitare gli altri esportatori di log.OTEL_EXPORTER_OTLP_PROTOCOLImposta il valore su
http/protobufper inviare metriche e tracce ad Application Signals tramite HTTP.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINTInvia le metriche al container dei daemon CloudWatch.
Per le applicazioni in esecuzione in modalità
host, imposta il valore suhttp://localhost:4316/v1/metrics.Per le applicazioni in esecuzione in modalità
bridgeo modalitàawsvpc, imposta il valore su http://CW_CONTAINER_IP:4316/v1/metrics, doveCW_CONTAINER_IPè l'indirizzo IP privato dell'istanza di container EC2. Puoi recuperare questo indirizzo dal servizio di metadati di istanza (IMDS).
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTInvia le tracce al container dei daemon CloudWatch.
Per le applicazioni in esecuzione in modalità
host, imposta il valore suhttp://localhost:4316/v1/traces.Per le applicazioni in esecuzione in modalità
bridgeo modalitàawsvpc, imposta il valore su http://CW_CONTAINER_IP:4316/v1/traces, doveCW_CONTAINER_IPè l'indirizzo IP privato dell'istanza di container EC2. Puoi recuperare questo indirizzo dal servizio di metadati di istanza (IMDS).
OTEL_TRACES_SAMPLERImposta questo valore su
xrayper impostare X-Ray come campionatore di tracce.OTEL_PROPAGATORSAggiungi
xraycome uno dei propagatori.JAVA_TOOL_OPTIONSImposta il valore su
" -javaagent:$. SostituisciAWS_ADOT_JAVA_INSTRUMENTATION_PATH"AWS_ADOT_NODE_INSTRUMENTATION_PATHcon il percorso in cui è archiviato l'agente di instrumentazione automatica di AWS Distro per OpenTelemetry. 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, utilizza l'esempio seguente 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 applicazioni Python, tieni presente le considerazioni riportate di seguito.
In alcune applicazioni containerizzate, l'assenza della variabile di ambiente
PYTHONPATHpuò talvolta impedire l'avvio dell'applicazione. Per risolvere questo problema, assicurati di impostare la variabile di ambientePYTHONPATHsulla posizione della directory di lavoro dell'applicazione. Ciò è dovuto a un problema noto con l'instrumentazione automatica di OpenTelemetry. Per ulteriori informazioni su questo problema, consulta Python autoinstrumentation setting of PYTHONPATH is not compliant. Per le applicazioni Django sono richieste alcune configurazioni aggiuntive, che sono descritte nella documentazione di OpenTelemetry Python
. Usa il flag
--noreloadper impedire il ricaricamento automatico.Imposta la variabile di ambiente
DJANGO_SETTINGS_MODULEsulla posizione del filesettings.pydell'applicazione Django. Ciò garantisce che OpenTelemetry possa accedere e integrarsi correttamente con le impostazioni di Django.
Se stai usando un server WSGI per l'applicazione Python, oltre ai passaggi successivi di questa sezione, consulta Nessun dato di Application Signals per l'applicazione Python che utilizza un server WSGI per informazioni sull'abilitazione di Application Signals.
Per instrumentare l'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 dal repository 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 al container
initper assicurarti che questo container finisca prima dell'avvio del container 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_ATTRIBUTESSpecifica 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 si specifica questo valore, viene utilizzato il valore predefinitogeneric:default.
Questa chiave di attributo viene utilizzata solo da Application Signals e viene convertita in annotazioni di tracce X-Ray e dimensioni dei parametri CloudWatch.
(Facoltativo) Per abilitare la correlazione dei log per Application Signals, imposta una variabile di ambiente aggiuntiva
aws.log.group.namescome nome del gruppo di log del log dell'applicazione. In questo modo, le tracce e le metriche dell'applicazione possono essere correlate alle voci di log pertinenti del gruppo di log. Per questa variabile, sostituisci$YOUR_APPLICATION_LOG_GROUPcon i nomi dei gruppi di log dell'applicazione. Se hai più gruppi di log, puoi usare una e commerciale (&) 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 di ambiente corrente. Per ulteriori informazioni, consulta Abilitazione della correlazione tra metrica e log. Per abilitare la correlazione tra traccia e log, dovrai anche modificare la configurazione di registrazione nell'applicazione. Per ulteriori informazioni, consulta Abilitazione della correlazione tra traccia e log.OTEL_AWS_APPLICATION_SIGNALS_ENABLEDImposta la variabile su
trueaffinché il container inizi a inviare tracce X-Ray e metriche CloudWatch ad Application Signals.OTEL_METRICS_EXPORTERImposta su
noneper disabilitare gli esportatori di altri parametri.OTEL_EXPORTER_OTLP_PROTOCOLImposta il valore su
http/protobufper inviare metriche e tracce a CloudWatch tramite HTTP.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINTInvia le metriche al container dei daemon CloudWatch.
Per le applicazioni in esecuzione in modalità
host, imposta il valore suhttp://localhost:4316/v1/metrics.Per le applicazioni in esecuzione in modalità
bridgeo modalitàawsvpc, imposta il valore su http://CW_CONTAINER_IP:4316/v1/metrics, doveCW_CONTAINER_IPè l'indirizzo IP privato dell'istanza di container EC2. Puoi recuperare questo indirizzo dal servizio di metadati di istanza (IMDS).
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTInvia le tracce al container dei daemon CloudWatch.
Per le applicazioni in esecuzione in modalità
host, imposta il valore suhttp://localhost:4316/v1/traces.Per le applicazioni in esecuzione in modalità
bridgeo modalitàawsvpc, imposta il valore su http://CW_CONTAINER_IP:4316/v1/traces, doveCW_CONTAINER_IPè l'indirizzo IP privato dell'istanza di container EC2. Puoi recuperare questo indirizzo dal servizio di metadati di istanza (IMDS).
OTEL_TRACES_SAMPLERImposta questo valore su
xrayper impostare X-Ray come campionatore di tracce.OTEL_TRACES_SAMPLER_ARGImposta l'endpoint del campionatore di tracce.
Per le applicazioni in esecuzione in modalità
host, imposta il valore suhttp://localhost:2000.Per le applicazioni in esecuzione in modalità
bridgeo modalitàawsvpc, imposta il valore suhttp://, doveCW_CONTAINER_IP:2000CW_CONTAINER_IPè l'indirizzo IP privato dell'istanza di container EC2. Puoi recuperare questo indirizzo dal servizio di metadati di istanza (IMDS).
OTEL_PROPAGATORSAggiungi
xraycome uno dei propagatori.OTEL_PYTHON_DISTROImposta il valore su
aws_distroper utilizzare l'instrumentazione ADOT Python.OTEL_PYTHON_CONFIGURATORImposta il valore su
aws_configurationper utilizzare la configurazione ADOT Python.PYTHONPATHSostituisci
$APP_PATHcon la posizione della directory di lavoro dell'applicazione all'interno del container. Questo è necessario affinché l'interprete Python trovi i moduli dell'applicazione.DJANGO_SETTINGS_MODULERichiesto solo per le applicazioni Django. Imposta il valore sulla posizione del file
settings.pydell'applicazione Django. Sostituisci$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, utilizza 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, effettua le seguenti operazioni prima di montare il volume. In
OTEL_RESOURCE_ATTRIBUTES, imposta 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 alle voci di log pertinenti di questi gruppi di log. Per questa variabile, sostituisci$YOUR_APPLICATION_LOG_GROUPcon i nomi dei gruppi di log dell'applicazione. Se hai più gruppi di log, puoi usare una e commerciale (&) 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 di ambiente corrente. Per ulteriori informazioni, consulta Abilitazione della correlazione tra metrica e log. Per abilitare la correlazione tra traccia e log, dovrai anche modificare la configurazione di registrazione nell'applicazione. Per ulteriori informazioni, consulta Abilitazione della correlazione tra traccia e log.Di seguito è riportato un esempio. Per abilitare la correlazione dei log, utilizza questo esempio quando monti il volume
opentelemetry-auto-instrumentation-pythondefinito nella fase 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 l'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 dal repository di immagini AWS Distro for OpenTelemetry Amazon ECR. Per un'istanza di container Linux, utilizza 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 di container 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 } ] }Aggiungi una dipendenza al container
initper assicurarti che il container finisca prima dell'avvio del container 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 di instrumentazione automatica AWS Distro per OpenTelemetry per .NET
. Variabile di ambiente Impostazione per abilitare Application Signals OTEL_RESOURCE_ATTRIBUTESSpecifica 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 si specifica questo valore, viene utilizzato il valore predefinitogeneric:default.
Questa chiave di attributo viene utilizzata solo da Application Signals e viene convertita in annotazioni di tracce X-Ray e dimensioni dei parametri CloudWatch.
OTEL_AWS_APPLICATION_SIGNALS_ENABLEDImposta la variabile su
trueaffinché il container inizi a inviare tracce X-Ray e metriche CloudWatch ad Application Signals.OTEL_METRICS_EXPORTERImposta su
noneper disabilitare gli esportatori di altri parametri.OTEL_LOGS_EXPORTERImposta il valore su
noneper disabilitare gli altri esportatori di log.OTEL_EXPORTER_OTLP_PROTOCOLImposta il valore su
http/protobufper inviare metriche e tracce ad Application Signals tramite HTTP.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINTInvia le metriche al container dei daemon CloudWatch.
Per le applicazioni in esecuzione in modalità
host, imposta il valore suhttp://localhost:4316/v1/metrics.Per le applicazioni in esecuzione in modalità
bridgeo modalitàawsvpc, imposta il valore su http://CW_CONTAINER_IP:4316/v1/metrics, doveCW_CONTAINER_IPè l'indirizzo IP privato dell'istanza di container EC2. Puoi recuperare questo indirizzo dal servizio di metadati di istanza (IMDS).
OTEL_EXPORTER_OTLP_ENDPOINTInvia le tracce al container dei daemon CloudWatch.
Per le applicazioni in esecuzione in modalità
host, imposta il valore suhttp://localhost:4316.Per le applicazioni in esecuzione in modalità
bridgeo modalitàawsvpc, imposta il valore su http://CW_CONTAINER_IP:4316, doveCW_CONTAINER_IPè l'indirizzo IP privato dell'istanza di container EC2. Puoi recuperare questo indirizzo dal servizio di metadati di istanza (IMDS).
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTInvia le tracce al container dei daemon CloudWatch.
Per le applicazioni in esecuzione in modalità
host, imposta il valore suhttp://localhost:4316/v1/traces.Per le applicazioni in esecuzione in modalità
bridgeo modalitàawsvpc, imposta il valore su http://CW_CONTAINER_IP:4316/v1/traces, doveCW_CONTAINER_IPè l'indirizzo IP privato dell'istanza di container EC2. Puoi recuperare questo indirizzo dal servizio di metadati di istanza (IMDS).
OTEL_TRACES_SAMPLER_ARGImposta l'endpoint del campionatore di tracce.
Per le applicazioni in esecuzione in modalità
host, imposta il valore suhttp://localhost:2000.Per le applicazioni in esecuzione in modalità
bridgeo modalitàawsvpc, imposta il valore suhttp://, doveCW_CONTAINER_IP:2000CW_CONTAINER_IPè l'indirizzo IP privato dell'istanza di container EC2. Puoi recuperare questo indirizzo dal servizio di metadati di istanza (IMDS).
OTEL_DOTNET_AUTO_HOMEImposta il valore sulla posizione di installazione dell'instrumentazione automatica ADOT .NET.
OTEL_DOTNET_AUTO_PLUGINSImposta il valore su
AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentationper abilitare il plug-in Application Signals.CORECLR_ENABLE_PROFILINGImposta il valore su
1per abilitare il profiler.CORECLR_PROFILERImposta il valore su
{918728DD-259F-4A6A-AC2B-B85E1B658318}come CLSID del profiler.CORECLR_PROFILER_PATHImposta questo valore sul percorso del profiler.
In Linux, imposta il valore su
${OTEL_DOTNET_AUTO_HOME}/linux-x64/OpenTelemetry.AutoInstrumentation.Native.soIn Windows Server, imposta il valore 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'assemblgagio 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, utilizza 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, utilizza 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 stai abilitando Application Signals per un'applicazione Node.js con ESM, consulta Setting up a Node.js application with the ESM module format prima di iniziare questi passaggi.
Per strumentare l'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 dal repository 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 al container
initper assicurarti che questo container finisca prima dell'avvio del container 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_ATTRIBUTESSpecifica 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 si specifica questo valore, viene utilizzato il valore predefinitogeneric:default.
Questa chiave di attributo viene utilizzata solo da Application Signals e viene convertita in annotazioni di tracce X-Ray e dimensioni dei parametri CloudWatch.
(Facoltativo) Per abilitare la correlazione dei log per Application Signals, imposta una variabile di ambiente aggiuntiva
aws.log.group.namescome nome del gruppo di log del log dell'applicazione. In questo modo, le tracce e le metriche dell'applicazione possono essere correlate alle voci di log pertinenti del gruppo di log. Per questa variabile, sostituisci$YOUR_APPLICATION_LOG_GROUPcon i nomi dei gruppi di log dell'applicazione. Se hai più gruppi di log, puoi usare una e commerciale (&) 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 di ambiente corrente. Per ulteriori informazioni, consulta Abilitazione della correlazione tra metrica e log. Per abilitare la correlazione tra traccia e log, dovrai anche modificare la configurazione di registrazione nell'applicazione. Per ulteriori informazioni, consulta Abilitazione della correlazione tra traccia e log.OTEL_AWS_APPLICATION_SIGNALS_ENABLEDImposta la variabile su
trueaffinché il container inizi a inviare tracce X-Ray e metriche CloudWatch ad Application Signals.OTEL_METRICS_EXPORTERImposta su
noneper disabilitare gli esportatori di altri parametri.OTEL_LOGS_EXPORTERImposta il valore su
noneper disabilitare gli altri esportatori di log.OTEL_EXPORTER_OTLP_PROTOCOLImposta il valore su
http/protobufper inviare metriche e tracce ad Application Signals tramite OTLP/HTTP e protobuf.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINTInvia le metriche al container dei daemon CloudWatch.
Per le applicazioni in esecuzione in modalità
host, imposta il valore suhttp://localhost:4316/v1/metrics.Per le applicazioni in esecuzione in modalità
bridgeo modalitàawsvpc, imposta il valore su http://CW_CONTAINER_IP:4316/v1/metrics, doveCW_CONTAINER_IPè l'indirizzo IP privato dell'istanza di container EC2. Puoi recuperare questo indirizzo dal servizio di metadati di istanza (IMDS).
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTInvia le tracce al container dei daemon CloudWatch.
Per le applicazioni in esecuzione in modalità
host, imposta il valore suhttp://localhost:4316/v1/traces.Per le applicazioni in esecuzione in modalità
bridgeo modalitàawsvpc, imposta il valore su http://CW_CONTAINER_IP:4316/v1/traces, doveCW_CONTAINER_IPè l'indirizzo IP privato dell'istanza di container EC2. Puoi recuperare questo indirizzo dal servizio di metadati di istanza (IMDS).
OTEL_TRACES_SAMPLERImposta questo valore su
xrayper impostare X-Ray come campionatore di tracce.OTEL_TRACES_SAMPLER_ARGImposta l'endpoint del campionatore di tracce.
Per le applicazioni in esecuzione in modalità
host, imposta il valore suhttp://localhost:2000.Per le applicazioni in esecuzione in modalità
bridgeo modalitàawsvpc, imposta il valore suhttp://, doveCW_CONTAINER_IP:2000CW_CONTAINER_IPè l'indirizzo IP privato dell'istanza di container EC2. Puoi recuperare questo indirizzo dal servizio di metadati di istanza (IMDS).
OTEL_PROPAGATORSAggiungi
xraycome uno dei propagatori.NODE_OPTIONSImposta su
--require. SostituisciAWS_ADOT_NODE_INSTRUMENTATION_PATHAWS_ADOT_NODE_INSTRUMENTATION_PATHcon il percorso in cui è archiviata l'instrumentazione automatica di AWS Distro per 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, utilizza il seguente esempio per un'applicazione Node.js. Se desideri abilitare la correlazione dei log, consulta invece il passaggio successivo.Per il container dell'applicazione, aggiungi una dipendenza al container
initper assicurarti che questo container finisca prima dell'avvio del container 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, effettua le seguenti operazioni prima di montare il volume. In
OTEL_RESOURCE_ATTRIBUTES, imposta 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 alle voci di log pertinenti di questi gruppi di log. Per questa variabile, sostituisci$YOUR_APPLICATION_LOG_GROUPcon i nomi dei gruppi di log dell'applicazione. Se hai più gruppi di log, puoi usare una e commerciale (&) 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 di ambiente corrente. Per ulteriori informazioni, consulta Abilitazione della correlazione tra metrica e log. Per abilitare la correlazione tra traccia e log, dovrai anche modificare la configurazione di registrazione nell'applicazione. Per ulteriori informazioni, consulta Abilitazione della correlazione tra traccia e log.Di seguito è riportato un esempio. Utilizza questo esempio per abilitare la correlazione dei log quando monti il volume
opentelemetry-auto-instrumentationdefinito nella fase 1 di 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 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 container
initper iniettare l'SDK di instrumentazione Node.js non è applicabile. Per abilitare Application Signals per 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'instrumentazione automatica:
npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation npm install @opentelemetry/instrumentation@0.54.0Nei passaggi 4 e 5 della procedura precedente, rimuovi il montaggio del volume
opentelemetry-auto-instrumentation-node:"mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-node", "containerPath": "/otel-auto-instrumentation-node", "readOnly": false } ]Sostituisci 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" }
Passaggio 6: implementazione dell'applicazione
Crea una nuova revisione della definizione dell'attività e distribuiscila nel tuo cluster di applicazioni. Dovresti vedere due container nell'attività appena creata:
init: un container necessario per l'inizializzazione di Application Signals: questo è il container dell'applicazione di esempio nella nostra documentazione. Nei carichi di lavoro effettivi, questo container specifico potrebbe non esistere o potrebbe essere sostituito con container di servizi personalizzati.my-app
(Facoltativo) Passaggio 7: monitoraggio dell'integrità delle applicazioni
Dopo aver abilitato le applicazioni su Amazon ECS, è possibile monitorarne l'integrità. Per ulteriori informazioni, consulta Monitoraggio dell'integrità operativa delle applicazioni con Application Signals.