Rastreamento para seu aplicativo App Runner com X-Ray - AWS App Runner

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Rastreamento para seu aplicativo App Runner com X-Ray

AWS X-Ray é um serviço que coleta dados sobre solicitações atendidas pelo seu aplicativo e fornece ferramentas que você pode usar para visualizar, filtrar e obter informações sobre esses dados para identificar problemas e oportunidades de otimização. Para qualquer solicitação rastreada para seu aplicativo, você pode ver informações detalhadas não apenas sobre a solicitação e a resposta, mas também sobre as chamadas que seu aplicativo faz para AWS recursos downstream, microsserviços, bancos de dados e APIs HTTP da web.

O X-Ray usa dados de rastreamento dos AWS recursos que alimentam seus aplicativos em nuvem para gerar um gráfico de serviço detalhado. O gráfico de serviço mostra o cliente, o serviço front-end e os serviços back-end chamados pelo serviço front-end para processar solicitações e manter dados. Use o gráfico de serviço para identificar gargalos, picos de latência e outros problemas a fim de resolver o desempenho dos aplicativos.

Para obter mais informações sobre o X-Ray, consulte o Guia do desenvolvedor do AWS X-Ray.

Um exemplo de um mapa de serviço X-Ray para um serviço App Runner

Instrumente seu aplicativo para rastreamento

Instrumente seu aplicativo de serviço App Runner para rastreamento usando OpenTelemetryuma especificação de telemetria portátil. No momento, o App Runner oferece suporte à AWS Distro for OpenTelemetry (ADOT), uma OpenTelemetry implementação que coleta e apresenta informações de telemetria usando serviços. AWS X-Ray implementa o componente de rastreamento.

Dependendo do SDK ADOT específico que você usa em seu aplicativo, o ADOT suporta até duas abordagens de instrumentação: automática e manual. Para obter mais informações sobre instrumentação com seu SDK, consulte a documentação do ADOT e escolha seu SDK no painel de navegação.

Configuração de tempo de execução

A seguir estão as instruções gerais de configuração do tempo de execução para instrumentar seu aplicativo de serviço App Runner para rastreamento.

Para configurar o rastreamento para seu tempo de execução
  1. Siga as instruções fornecidas para seu tempo de execução no AWS Distro for OpenTelemetry (ADOT), para instrumentar seu aplicativo.

  2. Instale as OTEL dependências necessárias na build seção do apprunner.yaml arquivo se você estiver usando o repositório de código-fonte ou no Dockerfile se estiver usando uma imagem de contêiner.

  3. Configure suas variáveis de ambiente no apprunner.yaml arquivo se você estiver usando o repositório de código-fonte ou no Dockerfile se estiver usando uma imagem de contêiner.

    exemplo Variáveis de ambiente
    nota

    O exemplo a seguir lista as variáveis de ambiente importantes a serem adicionadas ao apprunner.yaml arquivo. Adicione essas variáveis de ambiente ao seu Dockerfile se você estiver usando uma imagem de contêiner. No entanto, cada tempo de execução pode ter suas próprias idiossincrasias e talvez seja necessário adicionar mais variáveis de ambiente à lista a seguir. Para obter mais informações sobre instruções específicas de seu tempo de execução e exemplos sobre como configurar seu aplicativo para seu tempo de execução, consulte AWS Distro for OpenTelemetry and go your runtime, em Getting Started.

    env: - name: OTEL_PROPAGATORS value: xray - name: OTEL_METRICS_EXPORTER value: none - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://localhost:4317 - name: OTEL_RESOURCE_ATTRIBUTES value: 'service.name=example_app'
    nota

    OTEL_METRICS_EXPORTER=noneé uma variável de ambiente importante para o App Runner, pois o coletor App Runner Otel não aceita o registro de métricas. Ele só aceita rastreamento de métricas.

Exemplo de configuração de tempo de execução

O exemplo a seguir demonstra a instrumentação automática de seu aplicativo com o SDK ADOT Python. O SDK produz automaticamente extensões com dados de telemetria que descrevem os valores usados pelas estruturas Python em seu aplicativo sem adicionar uma única linha de código Python. Você precisa adicionar ou modificar apenas algumas linhas em dois arquivos de origem.

Primeiro, adicione algumas dependências, conforme mostrado no exemplo a seguir.

exemplo requirements.txt
opentelemetry-distro[otlp]>=0.24b0 opentelemetry-sdk-extension-aws~=2.0 opentelemetry-propagator-aws-xray~=1.0

Em seguida, instrumente seu aplicativo. A forma de fazer isso depende da fonte do serviço: imagem fonte ou código-fonte.

Source image

Quando sua fonte de serviço é uma imagem, você pode instrumentar diretamente o Dockerfile que controla a criação da imagem do contêiner e a execução do aplicativo na imagem. O exemplo a seguir mostra um Dockerfile instrumentado para um aplicativo Python. As adições de instrumentação são enfatizadas em negrito.

exemplo Dockerfile
FROM public.ecr.aws/amazonlinux/amazonlinux:latest RUN yum install python3.7 -y && curl -O https://bootstrap.pypa.io/get-pip.py && python3 get-pip.py && yum update -y COPY . /app WORKDIR /app RUN pip3 install -r requirements.txt RUN opentelemetry-bootstrap --action=install ENV OTEL_PYTHON_DISABLED_INSTRUMENTATIONS=urllib3 ENV OTEL_METRICS_EXPORTER=none ENV OTEL_RESOURCE_ATTRIBUTES='service.name=example_app' CMD OTEL_PROPAGATORS=xray OTEL_PYTHON_ID_GENERATOR=xray opentelemetry-instrument python3 app.py EXPOSE 8080
Source code repository

Quando sua fonte de serviço é um repositório contendo a fonte do aplicativo, você instrumenta indiretamente sua imagem usando as configurações do arquivo de configuração do App Runner. Essas configurações controlam o Dockerfile que o App Runner gera e usa para criar a imagem para seu aplicativo. O exemplo a seguir mostra um arquivo de configuração instrumentado do App Runner para um aplicativo Python. As adições de instrumentação são enfatizadas em negrito.

exemplo apprunner.yaml
version: 1.0 runtime: python3 build: commands: build: - pip install -r requirements.txt - opentelemetry-bootstrap --action=install run: command: opentelemetry-instrument python app.py network: port: 8080 env: - name: OTEL_PROPAGATORS value: xray - name: OTEL_METRICS_EXPORTER value: none - name: OTEL_PYTHON_ID_GENERATOR value: xray - name: OTEL_PYTHON_DISABLED_INSTRUMENTATIONS value: urllib3 - name: OTEL_RESOURCE_ATTRIBUTES value: 'service.name=example_app'

Adicione permissões X-Ray à sua função de instância de serviço App Runner

Para usar o rastreamento X-Ray com seu serviço App Runner, você precisa fornecer às instâncias do serviço permissões para interagir com o serviço X-Ray. Você faz isso associando uma função de instância ao seu serviço e adicionando uma política gerenciada com permissões X-Ray. Para obter mais informações sobre uma função de instância do App Runner, consulteFunção da instância. Adicione a política AWSXRayDaemonWriteAccess gerenciada à sua função de instância e atribua-a ao seu serviço durante a criação.

Ative o rastreamento X-Ray para seu serviço App Runner

Quando você cria um serviço, o App Runner desativa o rastreamento por padrão. Você pode ativar o rastreamento X-Ray para seu serviço como parte da configuração da observabilidade. Para ter mais informações, consulte Gerencie a observabilidade.

Se você usa a API App Runner ou a AWS CLI, o TraceConfigurationobjeto dentro do objeto de ObservabilityConfigurationrecurso contém configurações de rastreamento. Para manter o rastreamento desativado, não especifique um TraceConfiguration objeto.

Nos casos do console e da API, não se esqueça de associar sua função de instância discutida na seção anterior ao seu serviço App Runner.

Visualize os dados de rastreamento do X-Ray para seu serviço App Runner

Na guia Observabilidade da página do painel de serviços no console do App Runner, escolha Exibir mapa do serviço para navegar até o console da Amazon CloudWatch .

Página do painel do serviço App Runner mostrando a guia de observabilidade

Use o CloudWatch console da Amazon para visualizar mapas e rastreamentos de serviços para solicitações atendidas pelo seu aplicativo. Os mapas de serviços mostram informações como latência da solicitação e interações com outros aplicativos e AWS serviços. As anotações personalizadas que você adiciona ao seu código permitem que você pesquise facilmente por rastreamentos. Para obter mais informações, consulte Usando ServiceLens para monitorar a integridade de seus aplicativos no Guia do CloudWatch usuário da Amazon.