View a markdown version of this page

Implementazione utilizzando la strategia sidecar - Amazon CloudWatch

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Implementazione utilizzando la strategia sidecar

Passaggio 1: abilitazione di Application Signals nell'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. Inoltre, le autorizzazioni dovrebbero corrispondere a quelle di cui hanno bisogno le tue applicazioni. CloudWatchAgentServerPolicy

Per ulteriori informazioni sulla creazione dei ruoli IAM, consulta Creazione di ruoli IAM.

Fase 3: Preparazione della 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 tua regione.

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

Fase 4: Configura la tua candidatura con l' CloudWatch agente

Il passaggio successivo consiste nello strumentare l' CloudWatch applicazione per Application Signals.

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

    "volumes": [ { "name": "opentelemetry-auto-instrumentation" } ]
  2. Aggiungi una definizione di CloudWatch agente sidecar. A tale scopo, aggiungi un nuovo container chiamato ecs-cwagent alla definizione dell'attività dell'applicazione. $REGIONSostituiscila con il nome effettivo della tua regione. Sostituiscilo $IMAGE con il percorso dell'immagine del CloudWatch contenitore più recente su Amazon Elastic Container Registry. Per maggiori informazioni, consulta cloudwatch-agent su Amazon ECR.

    Se invece desideri abilitare l' CloudWatch agente con una strategia daemon, consulta le istruzioni all'indirizzoImplementazione utilizzando la strategia daemon.

    { "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" } } }
  3. Aggiungi un nuovo container init alla definizione dell'attività dell'applicazione. $IMAGESostituiscila con 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 } ] }
  4. Aggiungi una dipendenza al container init per assicurarti che questo container finisca prima dell'avvio del container dell'applicazione.

    "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ]
  5. Aggiungi le seguenti variabili di ambiente al container dell'applicazione. È necessario utilizzare la versione 1.32.2 o successiva dell'agente AWS Distro for Auto-Instrumentation per Java. OpenTelemetry https://opentelemetry.io/docs/zero-code/java/agent/

    Variabile di ambiente Impostazione per abilitare Application Signals

    OTEL_RESOURCE_ATTRIBUTES

    Specifica le seguenti informazioni come coppie chiave-valore:

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

    • deployment.environmentil parametro definisce l'ambiente di runtime dell'applicazione e controlla la Environment dimensione delle metriche delle applicazioni Amazon ECS in. CloudWatch Se non specificato, CloudWatch l'agente utilizza automaticamente il nome del cluster Amazon ECS

    Questa chiave di attributo viene utilizzata solo da Application Signals e viene convertita in annotazioni di X-Ray traccia e dimensioni CloudWatch metriche.

    (Facoltativo) Per abilitare la correlazione dei log per Application Signals, imposta una variabile di ambiente aggiuntiva aws.log.group.names come 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_GROUP con 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_ENABLED

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

    OTEL_METRICS_EXPORTER

    Imposta su none per disabilitare gli esportatori di altri parametri.

    OTEL_LOGS_EXPORTER

    Imposta il valore su none per disabilitare gli altri esportatori di log.

    OTEL_EXPORTER_OTLP_PROTOCOL

    Imposta il valore su http/protobuf per inviare metriche e tracce ad Application Signals tramite HTTP.

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Imposta su http://localhost:4316/v1/metrics per inviare le metriche al sidecar. CloudWatch

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Impostato su http://localhost:4316/v1/traces per inviare tracce al sidecar. CloudWatch

    OTEL_TRACES_SAMPLER

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

    OTEL_PROPAGATORS

    Aggiungi xray come uno dei propagatori.

    JAVA_TOOL_OPTIONS

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

  6. 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, 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://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" } ], "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 PYTHONPATH può talvolta impedire l'avvio dell'applicazione. Per risolvere questo problema, assicurati di impostare la variabile di PYTHONPATH 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, consulta Python autoinstrumentation setting of PYTHONPATH is not compliant.

  • Per le applicazioni Django, sono richieste configurazioni aggiuntive, descritte nella documentazione di Python. OpenTelemetry

    • Usa il flag --noreload per impedire il ricaricamento automatico.

    • Imposta la variabile di DJANGO_SETTINGS_MODULE ambiente nella posizione del file dell'applicazione Django. settings.py Ciò garantisce che OpenTelemetry possa accedere e integrarsi correttamente con le impostazioni di Django.

  • Se stai usando un server pre-fork (WSGI o ASGI) come Gunicorn, uWSGI o Uvicorn per la tua applicazione Python, oltre ai seguenti passaggi di questa sezione, consulta le informazioni per far funzionare Application Signals. Nessun dato Application Signals per un'applicazione Python che utilizza un server pre-fork (WSGI o ASGI)

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

    "volumes": [ { "name": "opentelemetry-auto-instrumentation-python" } ]
  2. Aggiungi una definizione di CloudWatch agente sidecar. A tale scopo, aggiungi un nuovo container chiamato ecs-cwagent alla definizione dell'attività dell'applicazione. $REGIONSostituiscila con il nome effettivo della tua regione. Sostituiscilo $IMAGE con il percorso dell'immagine del CloudWatch contenitore più recente su Amazon Elastic Container Registry. Per maggiori informazioni, consulta cloudwatch-agent su Amazon ECR.

    Se invece desideri abilitare l' CloudWatch agente con una strategia daemon, consulta le istruzioni all'indirizzoImplementazione utilizzando la strategia daemon.

    { "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" } } }
  3. Aggiungi un nuovo container init alla definizione dell'attività dell'applicazione. $IMAGESostituiscila con 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 } ] }
  4. Aggiungi una dipendenza al container init per assicurarti che questo container finisca prima dell'avvio del container dell'applicazione.

    "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ]
  5. Aggiungi le seguenti variabili di ambiente al container dell'applicazione.

    Variabile di ambiente Impostazione per abilitare Application Signals

    OTEL_RESOURCE_ATTRIBUTES

    Specifica le seguenti informazioni come coppie chiave-valore:

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

    • deployment.environmentil parametro definisce l'ambiente di runtime dell'applicazione e controlla la Environment dimensione delle metriche dell'applicazione Amazon ECS in. CloudWatch Se non specificato, CloudWatch l'agente utilizza automaticamente il nome del cluster Amazon ECS

    Questa chiave di attributo viene utilizzata solo da Application Signals e viene convertita in annotazioni di X-Ray traccia e dimensioni CloudWatch metriche.

    (Facoltativo) Per abilitare la correlazione dei log per Application Signals, imposta una variabile di ambiente aggiuntiva aws.log.group.names come 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_GROUP con 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_ENABLED

    Imposta in true modo che il contenitore inizi a inviare X-Ray tracce e CloudWatch metriche 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 CloudWatch tramite HTTP.

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Imposta su http://127.0.0.1:4316/v1/metrics per inviare le metriche al sidecar. CloudWatch

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Impostato su http://127.0.0.1:4316/v1/traces per inviare tracce al sidecar. CloudWatch

    OTEL_TRACES_SAMPLER

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

    OTEL_PROPAGATORS

    Aggiungi xray come uno dei propagatori.

    OTEL_PYTHON_DISTRO

    Imposta il valore su aws_distro per utilizzare l'instrumentazione ADOT Python.

    OTEL_PYTHON_CONFIGURATOR

    Imposta il valore su aws_configurator per utilizzare 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 nella posizione del settings.py file della tua applicazione Django. Sostituisci $PATH_TO_SETTINGS.

  6. 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, 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://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 } ] }
  7. (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 aggiuntiva aws.log.group.names per i gruppi di log dell'applicazione. In questo modo, le tracce e le metriche dell'applicazione possono essere correlate alle voci di log pertinenti di questi gruppi di log. Per questa variabile, sostituisci $YOUR_APPLICATION_LOG_GROUP con 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 di : Per abilitare la correlazione dei log, utilizza questo esempio quando monti il volume opentelemetry-auto-instrumentation-python definito 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://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'agente CloudWatch
  1. Innanzitutto, specifica un montaggio vincolato. Il volume verrà utilizzato per condividere file tra container nei passaggi successivi. Dovrai utilizzare questo montaggio vincolato più avanti in questa procedura.

    "volumes": [ { "name": "opentelemetry-auto-instrumentation" } ]
  2. Aggiungi una definizione di CloudWatch agente sidecar. A tale scopo, aggiungi un nuovo container chiamato ecs-cwagent alla definizione dell'attività dell'applicazione. $REGIONSostituiscila con il nome effettivo della tua regione. Sostituiscilo $IMAGE con il percorso dell'immagine del CloudWatch contenitore più recente su Amazon Elastic Container Registry. Per maggiori informazioni, consulta cloudwatch-agent su Amazon ECR.

    Se invece desideri abilitare l' CloudWatch agente con una strategia daemon, consulta le istruzioni all'indirizzoImplementazione utilizzando la strategia daemon.

    { "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" } } }
  3. Aggiungi un nuovo container init alla definizione dell'attività dell'applicazione. $IMAGESostituiscila con 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 } ] }
  4. Aggiungi una dipendenza al container init per assicurarti che questo container finisca prima dell'avvio del container dell'applicazione.

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

    Variabile di ambiente Impostazione per abilitare Application Signals

    OTEL_RESOURCE_ATTRIBUTES

    Specifica le seguenti informazioni come coppie chiave-valore:

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

    • deployment.environmentil parametro definisce l'ambiente di runtime dell'applicazione e controlla la Environment dimensione delle metriche dell'applicazione Amazon ECS in. CloudWatch Se non specificato, CloudWatch l'agente utilizza automaticamente il nome del cluster Amazon ECS

    Questa chiave di attributo viene utilizzata solo da Application Signals e viene convertita in annotazioni di X-Ray traccia e dimensioni CloudWatch metriche.

    OTEL_AWS_APPLICATION_SIGNALS_ENABLED

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

    OTEL_METRICS_EXPORTER

    Imposta su none per disabilitare gli esportatori di altri parametri.

    OTEL_LOGS_EXPORTER

    Imposta il valore su none per disabilitare gli altri esportatori di log.

    OTEL_EXPORTER_OTLP_PROTOCOL

    Imposta il valore su http/protobuf per inviare metriche e tracce ad Application Signals tramite HTTP.

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Imposta su http://localhost:4316/v1/metrics per inviare le metriche al sidecar. CloudWatch

    OTEL_EXPORTER_OTLP_ENDPOINT

    Impostato su http://localhost:4316/ per inviare tracce al sidecar. CloudWatch

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Impostato su http://localhost:4316/v1/traces per inviare tracce al CloudWatch sidecar.

    OTEL_DOTNET_AUTO_HOME

    Imposta il valore sulla posizione di installazione dell'instrumentazione automatica ADOT .NET.

    OTEL_DOTNET_AUTO_PLUGINS

    Imposta il valore su AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation per abilitare il plug-in Application Signals.

    CORECLR_ENABLE_PROFILING

    Imposta il valore su 1 per abilitare il profiler.

    CORECLR_PROFILER

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

    CORECLR_PROFILER_PATH

    Imposta questo valore sul percorso del profiler.

    In Linux, imposta il valore su ${OTEL_DOTNET_AUTO_HOME}/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so

    In Windows Server, imposta il valore 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'assemblgagio gestito ${OTEL_DOTNET_AUTO_HOME}/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll da eseguire prima del punto di ingresso dell'applicazione principale.

  6. Monta il volume opentelemetry-auto-instrumentation definito 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=aws-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://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" } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ] }

    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://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
Nota

Se stai abilitando Application Signals per un' Node.js applicazione con ESM, consulta 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
  1. Innanzitutto, specifica un montaggio vincolato. Il volume verrà utilizzato per condividere file tra container nei passaggi successivi. Dovrai utilizzare questo montaggio vincolato più avanti in questa procedura.

    "volumes": [ { "name": "opentelemetry-auto-instrumentation-node" } ]
  2. Aggiungi una definizione di CloudWatch agente sidecar. A tale scopo, aggiungi un nuovo container chiamato ecs-cwagent alla definizione dell'attività dell'applicazione. $REGIONSostituiscila con il nome effettivo della tua regione. Sostituiscilo $IMAGE con il percorso dell'immagine del CloudWatch contenitore più recente su Amazon Elastic Container Registry. Per maggiori informazioni, consulta cloudwatch-agent su Amazon ECR.

    Se invece desideri abilitare l' CloudWatch agente con una strategia daemon, consulta le istruzioni all'indirizzoImplementazione utilizzando la strategia daemon.

    { "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" } } }
  3. Aggiungi un nuovo container init alla definizione dell'attività dell'applicazione. $IMAGESostituiscila con 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 } ], }
  4. Aggiungi una dipendenza al container init per assicurarti che questo container finisca prima dell'avvio del container dell'applicazione.

    "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ]
  5. Aggiungi le seguenti variabili di ambiente al container dell'applicazione.

    Variabile di ambiente Impostazione per abilitare Application Signals

    OTEL_RESOURCE_ATTRIBUTES

    Specifica le seguenti informazioni come coppie chiave-valore:

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

    • deployment.environmentil parametro definisce l'ambiente di runtime dell'applicazione e controlla la Environment dimensione delle metriche dell'applicazione Amazon ECS in. CloudWatch Se non specificato, CloudWatch l'agente utilizza automaticamente il nome del cluster Amazon ECS

    Questa chiave di attributo viene utilizzata solo da Application Signals e viene convertita in annotazioni di X-Ray traccia e dimensioni CloudWatch metriche.

    (Facoltativo) Per abilitare la correlazione dei log per Application Signals, imposta una variabile di ambiente aggiuntiva aws.log.group.names come 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_GROUP con 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_ENABLED

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

    OTEL_METRICS_EXPORTER

    Imposta su none per disabilitare gli esportatori di altri parametri.

    OTEL_LOGS_EXPORTER

    Imposta il valore su none per disabilitare gli altri esportatori di log.

    OTEL_EXPORTER_OTLP_PROTOCOL

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

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Imposta su per http://localhost:4316/v1/metrics inviare le metriche al sidecar. CloudWatch

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Impostato su http://localhost:4316/v1/traces per inviare tracce al sidecar. CloudWatch

    OTEL_TRACES_SAMPLER

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

    OTEL_PROPAGATORS

    Aggiungi xray come uno dei propagatori.

    NODE_OPTIONS

    Imposta su --require AWS_ADOT_NODE_INSTRUMENTATION_PATH. Sostituiscilo AWS_ADOT_NODE_INSTRUMENTATION_PATH con il percorso in cui è memorizzata la AWS Distro per la strumentazione OpenTelemetry Node.js automatica. Ad esempio, /otel-auto-instrumentation-node/autoinstrumentation.js

  6. 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, 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 init per 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://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" } ] }
  7. (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 aggiuntiva aws.log.group.names per i gruppi di log dell'applicazione. In questo modo, le tracce e le metriche dell'applicazione possono essere correlate alle voci di log pertinenti di questi gruppi di log. Per questa variabile, sostituisci $YOUR_APPLICATION_LOG_GROUP con 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 di : Utilizza questo esempio per abilitare la correlazione dei log quando monti il volume opentelemetry-auto-instrumentation definito 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://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" } ] }

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

Forniamo un supporto limitato per Node.js le applicazioni con il formato del modulo ESM. Per informazioni dettagliate, vedi Limitazioni note relative all'utilizzo di ESM Node.js.

Per il formato del modulo ESM, l'utilizzo del init contenitore per iniettare l'SDK di Node.js strumentazione non è applicabile. Per abilitare Application Signals for Node.js with ESM, salta i passaggi 1 e 3 della procedura precedente ed esegui invece quanto segue.

Per abilitare Application Signals per un' Node.js applicazione con ESM
  1. Installa le dipendenze pertinenti alla tua Node.js applicazione per la strumentazione automatica:

    npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation npm install @opentelemetry/instrumentation@0.54.0
  2. Nei passaggi 5 e 6 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" }

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: un container necessario per l'inizializzazione di Application Signals.

  • ecs-cwagent— Un contenitore su cui è in esecuzione l'agente CloudWatch

  • my-app: 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.

(Facoltativo) Passaggio 6: monitoraggio dell'integrità delle applicazioni

Dopo aver abilitato le tue applicazioni su Amazon ECS, puoi monitorarne lo stato. Per ulteriori informazioni, consulta Monitoraggio dell'integrità operativa delle applicazioni con Application Signals.