Implemente usando a estratégia de arquivo associado
Etapa 1: habilitar o Application Signals em sua conta
Caso ainda não tenha habilitado o Application Signals nessa conta, você deve conceder as permissões necessárias para o Application Signals descobrir seus serviços. Para fazê-lo, siga as etapas apresentadas a seguir. Você precisa fazer isso somente uma vez para a conta.
Como habilitar o Application Signals para suas aplicações
Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/
. No painel de navegação, escolha Serviços.
Escolha Começar a descobrir os serviços.
Marque a caixa de seleção e escolha Começar a descobrir serviços.
A conclusão dessa etapa pela primeira vez em sua conta cria a função vinculada ao serviço AWSServiceRoleForCloudWatchApplicationSignals. Essa função concede as seguintes permissões ao Application Signals:
-
xray:GetServiceGraph
-
logs:StartQuery
-
logs:GetQueryResults
-
cloudwatch:GetMetricData
-
cloudwatch:ListMetrics
-
tag:GetResources
Para obter mais informações sobre essa função, consulte Permissões de perfis vinculados ao serviço para o CloudWatch Application Signals.
-
Etapa 2: criar perfis do IAM
Você precisa criar um perfil do IAM. Se você já criou esse perfil, talvez seja necessário adicionar permissões a ele.
-
Função de tarefa do ECS: os contêineres usam essa função para serem executados. As permissões devem ser as necessárias para as aplicações, acrescidas de CloudWatchAgentServerPolicy.
Para obter mais informações sobre a criação de funções do IAM, consulte Criar funções do IAM.
Etapa 3: preparar a configuração do agente do CloudWatch
Primeiro, prepare a configuração do agente com o Application Signals habilitado. Para fazer isso, crie um arquivo local denominado /tmp/ecs-cwagent.json
.
{ "traces": { "traces_collected": { "application_signals": {} } }, "logs": { "metrics_collected": { "application_signals": {} } } }
Em seguida, faça o upload dessa configuração no SSM Parameter Store. Para fazer isso, insira o comando a seguir. No arquivo, substitua $REGION
pelo nome real da sua região.
aws ssm put-parameter \ --name "ecs-cwagent" \ --type "String" \ --value "`cat /tmp/ecs-cwagent.json`" \ --region "
$REGION
"
Etapa 4: instrumentalizar a aplicação com o agente do CloudWatch
A próxima etapa corresponde à instrumentação da sua aplicação para o CloudWatch Application Signals.
- Java
-
Como instrumentalizar a aplicação no Amazon ECS com o agente do CloudWatch
Primeiro, especifique uma associação de montagem. O volume será usado para compartilhar arquivos entre contêineres nas próximas etapas. Você usará essa associação de montagem posteriormente nesse procedimento.
"volumes": [ { "name": "opentelemetry-auto-instrumentation" } ]
Adicione uma definição de arquivo associado para o agente do CloudWatch. Para fazer isso, anexe um novo contêiner, denominado
ecs-cwagent
, à definição de tarefa da aplicação. Substitua$REGION
pelo nome real da sua região. Substitua$IMAGE
pelo caminho da imagem de contêiner mais recente do CloudWatch no Amazon Elastic Container Registry. Para obter mais informações, consulte cloudwatch-agentno Amazon ECR. Se, em vez disso, você quiser habilitar o agente do CloudWatch com uma estratégia de daemon, consulte as instruções em Implemente usando a estratégia de 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" } } }Anexe um novo contêiner
init
à definição de tarefa da aplicação. Substitua$IMAGE
pela imagem mais recente do repositório de imagens do AWS Distro para OpenTelemetry do 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 } ] }Adicione as variáveis de ambiente apresentadas a seguir ao contêiner da aplicação. Você deverá usar a versão 1.32.2 ou posterior do agente de instrumentação automática para Java
do AWS Distro para OpenTelemetry. Variável de ambiente Configuração para habilitação do Application Signals OTEL_RESOURCE_ATTRIBUTES
Especifique as seguintes informações como pares de chave-valor:
service.name
define o nome do serviço. Isso será exibido como o nome do serviço para a aplicação nos painéis do Application Signals. Se você não fornecer um valor para essa chave, o padrãoUnknownService
será usado.deployment.environment
define o ambiente em que a aplicação é executada. Essa variável será exibida como o ambiente Hospedado em da aplicação nos painéis do Application Signals. Se você não especificar, o padrão degeneric:default
será usado.
Essa chave de atributo é usada somente pelo Application Signals e é convertida em anotações de rastreamentos do X-Ray e em dimensões de métricas do CloudWatch.
(Opcional) Para habilitar a correlação de logs para o Application Signals, defina uma variável de ambiente
aws.log.group.names
adicional para ser o nome do grupo de logs para o log da sua aplicação. Ao fazer isso, será possível correlacionar os rastreamentos e métricas da sua aplicação com as entradas de log relevantes do grupo de logs. Para essa variável, substitua$YOUR_APPLICATION_LOG_GROUP
pelos nomes do grupo de logs da sua aplicação. Se você tiver vários grupos de logs, é possível usar um e comercial (&
) para separá-los, como neste exemplo:aws.log.group.names=log-group-1&log-group-2
. Para permitir que a métrica registre a correlação em log, basta definir essa variável ambiental atual. Para ter mais informações, consulte Habilitar a correlação entre métrica e logs. Para habilitar a correlação entre logs e rastreamento, você também precisará alterar a configuração de registro em log em sua aplicação. Para ter mais informações, consulte Habilitar a correlação entre rastreamento e logs.OTEL_AWS_APPLICATION_SIGNALS_ENABLED
Defina como
true
para que seu contêiner comece a enviar rastreamentos do X-Ray e métricas do CloudWatch para o Application Signals.OTEL_METRICS_EXPORTER
Defina como
none
para desabilitar outros exportadores de métricas.OTEL_LOGS_EXPORTER
Defina como
none
para desabilitar outros exportadores de logs.OTEL_EXPORTER_OTLP_PROTOCOL
Defina como
http/protobuf
para enviar métricas e rastreamentos ao Application Signals usando HTTP.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
Defina como
http://localhost:4316/v1/metrics
para enviar métricas para o arquivo associado do CloudWatch.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
Defina como
http://localhost:4316/v1/traces
para enviar rastreamentos para o arquivo associado do CloudWatch.OTEL_TRACES_SAMPLER
Defina essa opção como
xray
para definir o X-Ray como o gerador de amostras de rastreamentos.OTEL_PROPAGATORS
Defina
xray
como um dos propagadores.JAVA_TOOL_OPTIONS
Defina
" -javaagent:$
para substituirAWS_ADOT_JAVA_INSTRUMENTATION_PATH
"AWS_ADOT_JAVA_INSTRUMENTATION_PATH
pelo caminho no qual o agente de instrumentação automática em Java do AWS Distro para OpenTelemetry está armazenado. Por exemplo,/otel-auto-instrumentation/javaagent.jar
Monte o volume
opentelemetry-auto-instrumentation
definido na etapa 1 deste procedimento. Se você não precisar habilitar a correlação de logs com métricas e rastreamentos, use o exemplo a seguir para uma aplicação em Java. Se quiser habilitar a correlação de logs, consulte a próxima etapa.{ "name": "
my-app
", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME
" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "JAVA_TOOL_OPTIONS", "value": " -javaagent:/otel-auto-instrumentation/javaagent.jar" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://localhost:4316/v1/traces" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_PROPAGATORS", "value": "tracecontext,baggage,b3,xray" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ] }
- Python
-
Antes de habilitar o Application Signals para suas aplicações em Python, esteja ciente das considerações apresentadas a seguir.
Em algumas aplicações em contêineres, uma variável de ambiente
PYTHONPATH
ausente pode, às vezes, causar falhas na inicialização da aplicação. Para resolver isso, certifique-se de definir a variável de ambientePYTHONPATH
para o local do diretório de trabalho da sua aplicação. Isso ocorre devido a um problema conhecido com a instrumentação automática do OpenTelemetry. Para obter mais informações sobre esse problema, consulte Python autoinstrumentation setting of PYTHONPATH is not compliant. Para aplicações em Django, existem configurações adicionais necessárias, descritas na documentação do OpenTelemetry em Python
. Use o sinalizador
--noreload
para evitar o recarregamento automático.Defina a variável de ambiente
DJANGO_SETTINGS_MODULE
para o local do arquivosettings.py
da sua aplicação em Django. Isso garante que o OpenTelemetry possa acessar e se integrar adequadamente às suas configurações do Django.
Se você estiver usando um servidor WSGI para a aplicação em Python, além das etapas apresentadas a seguir nesta seção, consulte Não há dados do Application Signals para aplicações em Python que usam um servidor WSGI para obter informações sobre como fazer o Application Signals funcionar.
Como instrumentalizar a aplicação em Python no Amazon ECS com o agente do CloudWatch
Primeiro, especifique uma associação de montagem. O volume será usado para compartilhar arquivos entre contêineres nas próximas etapas. Você usará essa associação de montagem posteriormente nesse procedimento.
"volumes": [ { "name": "opentelemetry-auto-instrumentation-python" } ]
Adicione uma definição de arquivo associado para o agente do CloudWatch. Para fazer isso, anexe um novo contêiner, denominado
ecs-cwagent
, à definição de tarefa da aplicação. Substitua$REGION
pelo nome real da sua região. Substitua$IMAGE
pelo caminho da imagem de contêiner mais recente do CloudWatch no Amazon Elastic Container Registry. Para obter mais informações, consulte cloudwatch-agentno Amazon ECR. Se, em vez disso, você quiser habilitar o agente do CloudWatch com uma estratégia de daemon, consulte as instruções em Implemente usando a estratégia de 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" } } }Anexe um novo contêiner
init
à definição de tarefa da aplicação. Substitua$IMAGE
pela imagem mais recente do repositório de imagens do AWS Distro para OpenTelemetry do 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 } ] }
Adicione as variáveis de ambiente apresentadas a seguir ao contêiner da aplicação.
Variável de ambiente Configuração para habilitação do Application Signals OTEL_RESOURCE_ATTRIBUTES
Especifique as seguintes informações como pares de chave-valor:
service.name
define o nome do serviço. Isso será exibido como o nome do serviço para a aplicação nos painéis do Application Signals. Se você não fornecer um valor para essa chave, o padrãoUnknownService
será usado.deployment.environment
define o ambiente em que a aplicação é executada. Essa variável será exibida como o ambiente Hospedado em da aplicação nos painéis do Application Signals. Se você não especificar, o padrão degeneric:default
será usado.
Essa chave de atributo é usada somente pelo Application Signals e é convertida em anotações de rastreamentos do X-Ray e em dimensões de métricas do CloudWatch.
(Opcional) Para habilitar a correlação de logs para o Application Signals, defina uma variável de ambiente
aws.log.group.names
adicional para ser o nome do grupo de logs para o log da sua aplicação. Ao fazer isso, será possível correlacionar os rastreamentos e métricas da sua aplicação com as entradas de log relevantes do grupo de logs. Para essa variável, substitua$YOUR_APPLICATION_LOG_GROUP
pelos nomes do grupo de logs da sua aplicação. Se você tiver vários grupos de logs, é possível usar um e comercial (&
) para separá-los, como neste exemplo:aws.log.group.names=log-group-1&log-group-2
. Para permitir que a métrica registre a correlação em log, basta definir essa variável ambiental atual. Para ter mais informações, consulte Habilitar a correlação entre métrica e logs. Para habilitar a correlação entre logs e rastreamento, você também precisará alterar a configuração de registro em log em sua aplicação. Para ter mais informações, consulte Habilitar a correlação entre rastreamento e logs.OTEL_AWS_APPLICATION_SIGNALS_ENABLED
Defina como
true
para que seu contêiner comece a enviar rastreamentos do X-Ray e métricas do CloudWatch para o Application Signals.OTEL_METRICS_EXPORTER
Defina como
none
para desabilitar outros exportadores de métricas.OTEL_EXPORTER_OTLP_PROTOCOL
Defina como
http/protobuf
para enviar métricas e rastreamentos ao CloudWatch usando HTTP.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
Defina como
http://127.0.0.1:4316/v1/metrics
para enviar métricas para o arquivo associado do CloudWatch.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
Defina como
http://127.0.0.1:4316/v1/traces
para enviar rastreamentos para o arquivo associado do CloudWatch.OTEL_TRACES_SAMPLER
Defina essa opção como
xray
para definir o X-Ray como o gerador de amostras de rastreamentos.OTEL_PROPAGATORS
Adicione o
xray
como um dos propagadores.OTEL_PYTHON_DISTRO
Defina como
aws_distro
para usar a instrumentação do ADOT em Python.OTEL_PYTHON_CONFIGURATOR
Defina como
aws_configuration
para usar a configuração do ADOT em Python.PYTHONPATH
Substitua
$APP_PATH
pelo local do diretório de trabalho da aplicação no contêiner. Isso é necessário para que o interpretador em Python localize os módulos da aplicação.DJANGO_SETTINGS_MODULE
Obrigatória somente para aplicações em Django. Defina-a como o local do arquivo
settings.py
da sua aplicação em Django. Substitua$PATH_TO_SETTINGS
.Monte o volume
opentelemetry-auto-instrumentation-python
definido na etapa 1 deste procedimento. Se você não precisar habilitar a correlação de logs com métricas e rastreamentos, use o exemplo a seguir para uma aplicação em Python. Se quiser habilitar a correlação de logs, consulte a próxima etapa.{ "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 } ] }(Opcional) Para habilitar a correlação de logs, faça o seguinte antes de montar o volume. Em
OTEL_RESOURCE_ATTRIBUTES
, defina uma variável de ambienteaws.log.group.names
adicional para os grupos de logs da sua aplicação. Ao fazer isso, será possível correlacionar os rastreamentos e métricas da sua aplicação com as entradas de log relevantes desses grupos de logs. Para essa variável, substitua$YOUR_APPLICATION_LOG_GROUP
pelos nomes do grupo de logs da sua aplicação. Se você tiver vários grupos de logs, é possível usar um e comercial (&
) para separá-los, como neste exemplo:aws.log.group.names=log-group-1&log-group-2
. Para permitir que a métrica registre a correlação em log, basta definir essa variável ambiental atual. Para ter mais informações, consulte Habilitar a correlação entre métrica e logs. Para habilitar a correlação entre logs e rastreamento, você também precisará alterar a configuração de registro em log em sua aplicação. Para ter mais informações, consulte Habilitar a correlação entre rastreamento e logs.Veja um exemplo a seguir. Para habilitar a correlação de logs, siga este exemplo ao montar o volume
opentelemetry-auto-instrumentation-python
definido na etapa 1 deste procedimento.{ "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
-
Como instrumentalizar a aplicação no Amazon ECS com o agente do CloudWatch
Primeiro, especifique uma associação de montagem. O volume será usado para compartilhar arquivos entre contêineres nas próximas etapas. Você usará essa associação de montagem posteriormente nesse procedimento.
"volumes": [ { "name": "opentelemetry-auto-instrumentation" } ]
Adicione uma definição de arquivo associado para o agente do CloudWatch. Para fazer isso, anexe um novo contêiner, denominado
ecs-cwagent
, à definição de tarefa da aplicação. Substitua$REGION
pelo nome real da sua região. Substitua$IMAGE
pelo caminho da imagem de contêiner mais recente do CloudWatch no Amazon Elastic Container Registry. Para obter mais informações, consulte cloudwatch-agentno Amazon ECR. Se, em vez disso, você quiser habilitar o agente do CloudWatch com uma estratégia de daemon, consulte as instruções em Implemente usando a estratégia de 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" } } }Anexe um novo contêiner
init
à definição de tarefa da aplicação. Substitua$IMAGE
pela imagem mais recente do repositório de imagens do AWS Distro para OpenTelemetry do Amazon ECR. Para uma instância de contêiner Linux, use o seguinte.
{ "name": "init", "image": "
$IMAGE
", "essential": false, "command": [ "cp", "-a", "autoinstrumentation/.", "/otel-auto-instrumentation" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ] }Para uma instância de contêiner Windows Server, use o seguinte.
{ "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 } ] }Adicione uma dependência no contêiner
init
para garantir que o contêiner termine antes do início do contêiner da aplicação."dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ]
Adicione as variáveis de ambiente apresentadas a seguir ao contêiner da aplicação. Você deverá usar a versão 1.1.0 ou posterior do agente de instrumentação automática para .NET
do AWS Distro para OpenTelemetry. Variável de ambiente Configuração para habilitação do Application Signals OTEL_RESOURCE_ATTRIBUTES
Especifique as seguintes informações como pares de chave-valor:
service.name
define o nome do serviço. Isso será exibido como o nome do serviço para a aplicação nos painéis do Application Signals. Se você não fornecer um valor para essa chave, o padrãoUnknownService
será usado.deployment.environment
define o ambiente em que a aplicação é executada. Essa variável será exibida como o ambiente Hospedado em da aplicação nos painéis do Application Signals. Se você não especificar, o padrão degeneric:default
será usado.
Essa chave de atributo é usada somente pelo Application Signals e é convertida em anotações de rastreamentos do X-Ray e em dimensões de métricas do CloudWatch.
OTEL_AWS_APPLICATION_SIGNALS_ENABLED
Defina como
true
para que seu contêiner comece a enviar rastreamentos do X-Ray e métricas do CloudWatch para o Application Signals.OTEL_METRICS_EXPORTER
Defina como
none
para desabilitar outros exportadores de métricas.OTEL_LOGS_EXPORTER
Defina como
none
para desabilitar outros exportadores de logs.OTEL_EXPORTER_OTLP_PROTOCOL
Defina como
http/protobuf
para enviar métricas e rastreamentos ao Application Signals usando HTTP.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
Defina como
http://localhost:4316/v1/metrics
para enviar métricas para o arquivo associado do CloudWatch.OTEL_EXPORTER_OTLP_ENDPOINT
Defina como
http://localhost:4316/
para enviar rastreamentos para o arquivo associado do CloudWatch.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
Defina como
http://localhost:4316/v1/traces
para enviar rastreamentos para o arquivo associado do CloudWatch.OTEL_DOTNET_AUTO_HOME
Defina o local de instalação da instrumentação automática para .NET. do ADOT
OTEL_DOTNET_AUTO_PLUGINS
Defina como
AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation
para habilitar o plug-in Application Signals.CORECLR_ENABLE_PROFILING
Defina como
1
para habilitar o criador de perfil.CORECLR_PROFILER
Defina
{918728DD-259F-4A6A-AC2B-B85E1B658318}
como o CLSID do criador de perfil.CORECLR_PROFILER_PATH
Defina isso como o caminho do criador de perfil.
No Linux, defina como
${OTEL_DOTNET_AUTO_HOME}/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so
No Windows Server, defina como
${OTEL_DOTNET_AUTO_HOME}/win-x64/OpenTelemetry.AutoInstrumentation.Native.dll
DOTNET_ADDITIONAL_DEPS
Defina isso como o caminho da pasta
${OTEL_DOTNET_AUTO_HOME}/AdditionalDeps
.DOTNET_SHARED_STORE
Defina isso como o caminho da pasta
${OTEL_DOTNET_AUTO_HOME}/store
.DOTNET_STARTUP_HOOKS
Defina isso como o caminho da montagem gerenciada
${OTEL_DOTNET_AUTO_HOME}/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll
a ser executada antes do ponto de entrada da aplicação principal.Monte o volume
opentelemetry-auto-instrumentation
definido na etapa 1 deste procedimento. Para Linux, use o seguinte.{ "name": "my-app", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME" }, { "name": "CORECLR_ENABLE_PROFILING", "value": "1" }, { "name": "CORECLR_PROFILER", "value": "{918728DD-259F-4A6A-AC2B-B85E1B658318}" }, { "name": "CORECLR_PROFILER_PATH", "value": "/otel-auto-instrumentation/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so" }, { "name": "DOTNET_ADDITIONAL_DEPS", "value": "/otel-auto-instrumentation/AdditionalDeps" }, { "name": "DOTNET_SHARED_STORE", "value": "/otel-auto-instrumentation/store" }, { "name": "DOTNET_STARTUP_HOOKS", "value": "/otel-auto-instrumentation/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll" }, { "name": "OTEL_DOTNET_AUTO_HOME", "value": "/otel-auto-instrumentation" }, { "name": "OTEL_DOTNET_AUTO_PLUGINS", "value": "AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation" }, { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP,service.name=aws-otel-integ-test" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://localhost:4316/v1/traces" }, { "name": "OTEL_EXPORTER_OTLP_ENDPOINT", "value": "http://localhost:4316" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://localhost:2000" }, { "name": "OTEL_PROPAGATORS", "value": "tracecontext,baggage,b3,xray" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }
Para Windows, use o seguinte.
{ "name": "my-app", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME" }, { "name": "CORECLR_ENABLE_PROFILING", "value": "1" }, { "name": "CORECLR_PROFILER", "value": "{918728DD-259F-4A6A-AC2B-B85E1B658318}" }, { "name": "CORECLR_PROFILER_PATH", "value": "C:\\otel-auto-instrumentation\\win-x64\\OpenTelemetry.AutoInstrumentation.Native.dll" }, { "name": "DOTNET_ADDITIONAL_DEPS", "value": "C:\\otel-auto-instrumentation\\AdditionalDeps" }, { "name": "DOTNET_SHARED_STORE", "value": "C:\\otel-auto-instrumentation\\store" }, { "name": "DOTNET_STARTUP_HOOKS", "value": "C:\\otel-auto-instrumentation\\net\\OpenTelemetry.AutoInstrumentation.StartupHook.dll" }, { "name": "OTEL_DOTNET_AUTO_HOME", "value": "C:\\otel-auto-instrumentation" }, { "name": "OTEL_DOTNET_AUTO_PLUGINS", "value": "AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation" }, { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP,service.name=aws-otel-integ-test" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://localhost:4316/v1/traces" }, { "name": "OTEL_EXPORTER_OTLP_ENDPOINT", "value": "http://localhost:4316" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://localhost:2000" }, { "name": "OTEL_PROPAGATORS", "value": "tracecontext,baggage,b3,xray" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "C:\\otel-auto-instrumentation", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }
- Node.js (Preview)
-
Como instrumentalizar a aplicação no Amazon ECS com o agente do CloudWatch
Primeiro, especifique uma associação de montagem. O volume será usado para compartilhar arquivos entre contêineres nas próximas etapas. Você usará essa associação de montagem posteriormente nesse procedimento.
"volumes": [ { "name": "opentelemetry-auto-instrumentation-node" } ]
Adicione uma definição de arquivo associado para o agente do CloudWatch. Para fazer isso, anexe um novo contêiner, denominado
ecs-cwagent
, à definição de tarefa da aplicação. Substitua$REGION
pelo nome real da sua região. Substitua$IMAGE
pelo caminho da imagem de contêiner mais recente do CloudWatch no Amazon Elastic Container Registry. Para obter mais informações, consulte cloudwatch-agentno Amazon ECR. Se, em vez disso, você quiser habilitar o agente do CloudWatch com uma estratégia de daemon, consulte as instruções em Implemente usando a estratégia de 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" } } }Anexe um novo contêiner
init
à definição de tarefa da aplicação. Substitua$IMAGE
pela imagem mais recente do repositório de imagens do AWS Distro para OpenTelemetry do 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 } ], }Adicione as variáveis de ambiente apresentadas a seguir ao contêiner da aplicação.
Variável de ambiente Configuração para habilitação do Application Signals OTEL_RESOURCE_ATTRIBUTES
Especifique as seguintes informações como pares de chave-valor:
service.name
define o nome do serviço. Isso será exibido como o nome do serviço para a aplicação nos painéis do Application Signals. Se você não fornecer um valor para essa chave, o padrãoUnknownService
será usado.deployment.environment
define o ambiente em que a aplicação é executada. Essa variável será exibida como o ambiente Hospedado em da aplicação nos painéis do Application Signals. Se você não especificar, o padrão degeneric:default
será usado.
Essa chave de atributo é usada somente pelo Application Signals e é convertida em anotações de rastreamentos do X-Ray e em dimensões de métricas do CloudWatch.
(Opcional) Para habilitar a correlação de logs para o Application Signals, defina uma variável de ambiente
aws.log.group.names
adicional para ser o nome do grupo de logs para o log da sua aplicação. Ao fazer isso, será possível correlacionar os rastreamentos e métricas da sua aplicação com as entradas de log relevantes do grupo de logs. Para essa variável, substitua$YOUR_APPLICATION_LOG_GROUP
pelos nomes do grupo de logs da sua aplicação. Se você tiver vários grupos de logs, é possível usar um e comercial (&
) para separá-los, como neste exemplo:aws.log.group.names=log-group-1&log-group-2
. Para permitir que a métrica registre a correlação em log, basta definir essa variável ambiental atual. Para ter mais informações, consulte Habilitar a correlação entre métrica e logs. Para habilitar a correlação entre logs e rastreamento, você também precisará alterar a configuração de registro em log em sua aplicação. Para ter mais informações, consulte Habilitar a correlação entre rastreamento e logs.OTEL_AWS_APPLICATION_SIGNALS_ENABLED
Defina como
true
para que seu contêiner comece a enviar rastreamentos do X-Ray e métricas do CloudWatch para o Application Signals.OTEL_METRICS_EXPORTER
Defina como
none
para desabilitar outros exportadores de métricas.OTEL_LOGS_EXPORTER
Defina como
none
para desabilitar outros exportadores de logs.OTEL_EXPORTER_OTLP_PROTOCOL
Defina como
http/protobuf
para enviar métricas e acompanhamentos para o Application Signals usando OTLP/HTTP e protobuf.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
Defina como
http://localhost:4316/v1/metrics
para enviar métricas para o arquivo associado do CloudWatch.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
Defina como
http://localhost:4316/v1/traces
para enviar rastreamentos para o arquivo associado do CloudWatch.OTEL_TRACES_SAMPLER
Defina essa opção como
xray
para definir o X-Ray como o gerador de amostras de rastreamentos.OTEL_PROPAGATORS
Defina
xray
como um dos propagadores.NODE_OPTIONS
Definido como
--require
. SubstituaAWS_ADOT_NODE_INSTRUMENTATION_PATH
AWS_ADOT_NODE_INSTRUMENTATION_PATH
pelo caminho que direcionada para a instrumentação automática em Node.js do AWS Distro para OpenTelemetry armazenada. Por exemplo,/otel-auto-instrumentation-node/autoinstrumentation.js
Monte o volume
opentelemetry-auto-instrumentation
definido na etapa 1 deste procedimento. Se não for necessário habilitar a correlação de logs com métricas e acompanhamentos, use o exemplo apresentado a seguir para uma aplicação em Node.js. Se quiser habilitar a correlação de logs, consulte a próxima etapa.Em seu Application Container, adicione uma dependência ao contêiner
init
para garantir que ele seja finalizado antes que o contêiner da sua aplicação comece.{ "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" } ] }(Opcional) Para habilitar a correlação de logs, faça o seguinte antes de montar o volume. Em
OTEL_RESOURCE_ATTRIBUTES
, defina uma variável de ambienteaws.log.group.names
adicional para os grupos de logs da sua aplicação. Ao fazer isso, será possível correlacionar os rastreamentos e métricas da sua aplicação com as entradas de log relevantes desses grupos de logs. Para essa variável, substitua$YOUR_APPLICATION_LOG_GROUP
pelos nomes do grupo de logs da sua aplicação. Se você tiver vários grupos de logs, é possível usar um e comercial (&
) para separá-los, como neste exemplo:aws.log.group.names=log-group-1&log-group-2
. Para permitir que a métrica registre a correlação em log, basta definir essa variável ambiental atual. Para ter mais informações, consulte Habilitar a correlação entre métrica e logs. Para habilitar a correlação entre logs e rastreamento, você também precisará alterar a configuração de registro em log em sua aplicação. Para ter mais informações, consulte Habilitar a correlação entre rastreamento e logs.Veja um exemplo a seguir. Siga este exemplo para habilitar a correlação de logs ao montar o volume
opentelemetry-auto-instrumentation
definido na etapa 1 deste procedimento.{ "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" } ] }
Etapa 5: implantar a aplicação
Crie uma nova revisão da sua definição de tarefa e implante-a no cluster da aplicação. Você deverá visualizar três contêineres na tarefa recém-criada:
init
: um contêiner necessário para inicializar o Application Signals.ecs-cwagent
: um contêiner executando o agente do CloudWatch
: esse é o exemplo de contêiner de aplicação na nossa documentação. Nas suas workloads reais, esse contêiner específico pode não existir ou pode ser substituído por seus próprios contêineres de serviço.my-app