View a markdown version of this page

Monitorar eventos de serviço - Amazon CloudWatch

Monitorar eventos de serviço

O Service Events fornece observabilidade profunda automatizada para serviços monitorados com o CloudWatch Application Signals. Ele captura métricas de erro, dados de desempenho em nível de função, instantâneos de incidentes (quando as solicitações excedem os limites de latência ou lançam exceções) e eventos de implantação, sem alterações adicionais no código.

Como funcionam os eventos de serviço

O Service Events coleta os seguintes tipos de sinais de seus serviços instrumentados:

  • Métricas de erro — contagens e taxas de erro por tipo de exceção para cada operação, permitindo identificar quais exceções são mais frequentes e com maior tendência de crescimento.

  • Métricas de chamada de função — contagem de invocações, duração e taxas de erro para funções individuais no código do seu aplicativo.

  • Instantâneos de incidentes — capturas detalhadas acionadas quando uma solicitação excede o limite de latência ou gera uma exceção, incluindo rastreamentos de pilha, árvores de chamadas, detalhes do chamador e contexto da operação.

  • Eventos de implantação — marcadores emitidos na inicialização do aplicativo e a cada 24 horas que correlacionam implantações de código com mudanças no comportamento do serviço. O aplicativo emite eventos de implantação de maneira automática. O fornecimento de metadados de implantação (git commit, ID de implantação) enriquece esses eventos com contexto adicional.

O Service Events é habilitado de maneira automática quando você habilita o CloudWatch Application Signals para seu serviço. As métricas de erro e o rastreamento de exceções são ativados de forma imediata. As métricas de chamada de função exigem configuração adicional — você deve configurar pacotes para instrumentar antes que os dados de chamada de função sejam coletados (veja Habilitar a instrumentação de funções). Os eventos de serviço podem ser desabilitados através da configuração OTEL_AWS_SERVICE_EVENTS_ENABLED=false. Os dados fluem do SDK ADOT para o agente do CloudWatch. O agente publica eventos no CloudWatch Logs (grupos de logs /aws/service-events/service-name) e no CloudWatch Metrics.

Linguagens com suporte: Java, Python e Node.js.

nota

Os eventos de serviço são desabilitados de maneira automática em ambientes Lambda.

Armazenamento de dados

O Service Events armazena dados no CloudWatch Logs. O CloudWatch publica dados de eventos de serviço em um grupo de logs com o prefixo /aws/application-signals/service-name, em que service-name é o valor da sua variável de ambiente OTEL_SERVICE_NAME. Um grupo de logs é criado por serviço.

Você é cobrado pela ingestão e pelo armazenamento de logs de acordo com as taxas padrão do CloudWatch Logs.

Visualizar erros no console

No console do CloudWatch, navegue até Application Signals, escolha seu serviço e, em seguida, escolha a guia Errors. Essa guia mostra métricas de exceção para seu serviço.

A guia exibe:

  • Um gráfico de contagem de exceções mostrando tendências de erro ao longo do tempo. Utilize isso para detectar quais tipos de exceção mudaram de frequência recentemente.

  • Uma tabela listando cada tipo de exceção, a operação em que ela ocorreu, a contagem de ocorrências e a alteração em comparação com o período anterior.

Selecione uma exceção para detalhar as informações, incluindo o rastreamento de pilha, a mensagem de exceção e um link para o rastreamento associado.

Os erros são agrupados por operação, tipo de exceção e quadros de pilha superiores. Apenas o representante mais recente de cada grupo é mostrado.

nota

Para visualizar os dados de erro, pelo menos um grupo de logs /aws/service-events/service-name deve existir na sua conta. Se não existirem grupos de logs, a guia Errors exibirá um prompt de integração.

Exibir eventos de serviço em logs

Os dados do Service Events são armazenados no CloudWatch Logs em grupos de logs com o prefixo /aws/service-events/service-name. É possível consultar esses dados diretamente usando o CloudWatch Logs Insights para criar visualizações personalizadas, criar painéis ou investigar incidentes específicos.

Para consultar eventos de serviço:

  1. Abra o console do CloudWatch e vá até Logs Insights.

  2. Selecione o grupo de logs /aws/service-events/service-name para seu serviço.

  3. Insira uma consulta para filtrar e analisar os dados dos eventos do serviço.

Eventos de serviço no servidor MCP (Model Context Protocol) do CloudWatch Application Signals

Os dados de eventos de serviço podem ser acessados por meio do servidor MCP (Model Context Protocol) do CloudWatch Application Signals, permitindo que assistentes e agentes de codificação de IA consultem diretamente o comportamento do runtime do seu serviço.

Solução de problemas do

  • Correlacione os erros em seu código de maneira automática com instantâneos de incidentes de produção, incluindo rastreamentos completos da pilha e endpoints afetados.

  • Utilize o contexto do incidente (tipos de exceção, caminhos de chamada, IDs de rastreamento) para sugerir correções específicas sem exigir que você navegue manualmente pelos painéis.

  • Recupere eventos de implantação para determinar se uma versão recente introduziu uma regressão.

Melhoria de performance

  • Consulte dados de performance em nível de função para identificar gargalos ao investigar problemas de latência.

  • Compare as durações das chamadas de função em todas as implantações para identificar as regressões de performance.

Para obter instruções de configuração e uso, veja o servidor MCP do Application Signals no site do GitHub.

Configurar eventos de serviço

Pré-requisitos

Para utilizar eventos de serviço, verifique se você tem as versões mínimas exigidas dos seguintes componentes:

  1. Atualize o SDK ADOT — atualize o SDK de instrumentação do AWS Distro for OpenTelemetry (ADOT) para a versão mais recente da sua linguagem (Java, Python ou Node.js).

  2. Atualize o complemento do Amazon EKS (se aplicável) — se você usar o complemento do Amazon EKS do CloudWatch Observability para instrumentar seus aplicativos, atualize para a versão mais recente do complemento.

  3. Atualize o CloudWatch Agent — atualize para a versão 1.300069.0 ou posterior do agente do CloudWatch.

Se você usa o Amazon EKS, veja Habilitar aplicações em clusters do Amazon EKS para obter instruções de configuração do complemento.

Os recursos são habilitados por padrão

Se você utiliza o CloudWatch Application Signals, os seguintes sinais de eventos de serviço são habilitados por padrão, sem necessidade de configuração adicional:

  • Instantâneos de incidentes (acionados em exceções e violações do limite de latência)

  • Métricas de erro (contagens de erros por tipo de exceção por operação)

  • Eventos de implantação (sempre emitidos; enriquecidos quando você fornece metadados de implantação)

  • Instrumentação de função (habilitada por padrão, mas não produz métricas até que você configure pacotes para instrumentar)

Os recursos mostrados a seguir são opcionais e exigem a configuração de variáveis de ambiente para produzir dados:

  • Métricas em nível de função (requer configuração OTEL_AWS_SERVICE_EVENTS_PACKAGES_INCLUDE)

  • Filtragem de endpoint personalizada

  • Limites de latência por endpoint

Configurações gerais

Variável de ambiente Padrão Descrição
OTEL_AWS_SERVICE_EVENTS_ENABLED Segue o CloudWatch Application Signals Alternar para Service Events. O Service Events é habilitado de maneira automática quando o CloudWatch Application Signals está habilitado. Configure como false para desabilitar explicitamente.
OTEL_AWS_SERVICE_EVENTS_SAMPLING_MODE always Controla a estratégia de amostragem de dados de chamadas de funções. Valores: always (gravar todas as chamadas de função), auto (deixar o SDK decidir com base na carga), never (desabilitar a gravação de chamadas de função). Somente se aplica quando os pacotes de instrumentação de funções são configurados.

Habilitar a instrumentação de funções

A instrumentação de funções é habilitada por padrão, porém, não produz métricas até que você configure quais pacotes instrumentar. Forneça uma lista de permissões de pacotes para começar a coletar telemetria por função:

Variável de ambiente Padrão Descrição
OTEL_AWS_SERVICE_EVENTS_FUNCTION_INSTRUMENT_ENABLED true Habilita ou desabilita a instrumentação em nível de função. Defina como false para desativar por completo.
OTEL_AWS_SERVICE_EVENTS_PACKAGES_INCLUDE Nenhum (obrigatório para métricas) Lista separada por vírgulas de prefixos de pacotes para instrumentar. Não é necessário nenhum curinga. Por exemplo: Java usa com.myapp, Python usa myapp, Node.js usa src/myapp.
OTEL_AWS_SERVICE_EVENTS_PACKAGES_EXCLUDE Nenhum Lista separada por vírgulas de subpacotes a serem excluídos da instrumentação. Excluir sempre tem precedência sobre incluir. Por exemplo, inclua com.myapp e exclua com.myapp.models para instrumentar o código do seu aplicativo, mas ignore as classes do modelo de dados.

Filtragem de endpoints

A filtragem de endpoints controla quais endpoints geram métricas de erro de endpoint e instantâneos de incidentes. Essas configurações não afetam a instrumentação da função.

Variável de ambiente Padrão Descrição
OTEL_AWS_SERVICE_EVENTS_ENDPOINT_INCLUDE_PATTERNS Todos os endpoints Padrões glob separados por vírgula de endpoints a serem incluídos. Combinado com METHOD /route.
OTEL_AWS_SERVICE_EVENTS_ENDPOINT_EXCLUDE_PATTERNS Nenhum Padrões glob separados por vírgula de endpoints a serem excluídos. A exclusão tem precedência quando um endpoint corresponde a ambos.

Limites de latência

Utilize as seguintes variáveis de ambiente para configurar os limites de latência para acionadores de instantâneos de incidentes.

Variável de ambiente Padrão Descrição
OTEL_AWS_SERVICE_EVENTS_INCIDENT_SNAPSHOT_DURATION_THRESHOLD_MS 5000 Limite de latência global em milissegundos. Solicitações que excedam essa duração acionam um instantâneo do incidente.
OTEL_AWS_SERVICE_EVENTS_LATENCY_THRESHOLDS Nenhum Limites de latência por endpoint que substituem o padrão global. Formato: METHOD /route:ms (por exemplo, GET /health:200,POST /checkout:8000).

Limitação de intervalo

Utilize as seguintes variáveis de ambiente para controlar a taxa na qual os dados de eventos de serviço são coletados e relatados.

Variável de ambiente Padrão Descrição
OTEL_AWS_SERVICE_EVENTS_INCIDENT_SNAPSHOT_MAX_PER_MINUTE 100 Número máximo de instantâneos de incidentes capturados por minuto.
OTEL_AWS_SERVICE_EVENTS_INCIDENT_SNAPSHOT_MAX_SAME_ERROR 1 Número máximo de instantâneos para o mesmo erro por janela de captura.

Configurar eventos de implantação

Os eventos de implantação são sempre emitidos na inicialização do aplicativo e a cada 24 horas. O fornecimento de metadados de implantação enriquece esses eventos para que você possa correlacionar incidentes e alterações de desempenho com implantações de código específicas.

Defina as seguintes variáveis de ambiente em seus contêineres ou processos de aplicativos para fornecer metadados de implantação:

Variável de ambiente Descrição
OTEL_AWS_SERVICE_EVENTS_GIT_COMMIT_SHA SHA do commit do Git do código implantado.
OTEL_AWS_SERVICE_EVENTS_GIT_REPO_URL URL do repositório Git.
OTEL_AWS_SERVICE_EVENTS_DEPLOYMENT_ID Identificador exclusivo para a implantação (por exemplo, um ID de execução de pipeline de CI/CD).
OTEL_AWS_SERVICE_EVENTS_DEPLOYMENT_TIMESTAMP Registro de data e hora ISO 8601 da implantação.
OTEL_AWS_SERVICE_EVENTS_DEPLOYMENT_URL URL da compilação de implantação ou execução do pipeline.

Configurar eventos de implantação com o GitHub Actions

No seu fluxo de trabalho do GitHub Actions, utilize as variáveis de ambiente integradas para preencher os metadados de implantação. Adicione o seguinte à sua etapa de implantação ou ambiente de contêiner:

env: OTEL_AWS_SERVICE_EVENTS_GIT_COMMIT_SHA: ${{ github.sha }} OTEL_AWS_SERVICE_EVENTS_GIT_REPO_URL: ${{ github.server_url }}/${{ github.repository }} OTEL_AWS_SERVICE_EVENTS_DEPLOYMENT_ID: ${{ github.run_id }} OTEL_AWS_SERVICE_EVENTS_DEPLOYMENT_TIMESTAMP: $(date -u +%Y-%m-%dT%H:%M:%SZ) OTEL_AWS_SERVICE_EVENTS_DEPLOYMENT_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}

Se você implantar imagens de contêiner, transmita esses valores como variáveis de ambiente na definição da tarefa ou na especificação do pod. É possível incorporá-los à imagem no momento da criação ou injetá-los no momento da implantação através da sua configuração de implantação.

Configurar eventos de implantação com o GitLab CI/CD

Em seu pipeline de CI/CD do GitLab, utilize as variáveis predefinidas de CI/CD para preencher os metadados de implantação. Adicione o seguinte ao seu trabalho de implantação:

deploy: variables: OTEL_AWS_SERVICE_EVENTS_GIT_COMMIT_SHA: $CI_COMMIT_SHA OTEL_AWS_SERVICE_EVENTS_GIT_REPO_URL: $CI_PROJECT_URL OTEL_AWS_SERVICE_EVENTS_DEPLOYMENT_ID: $CI_PIPELINE_ID OTEL_AWS_SERVICE_EVENTS_DEPLOYMENT_TIMESTAMP: $(date -u +%Y-%m-%dT%H:%M:%SZ) OTEL_AWS_SERVICE_EVENTS_DEPLOYMENT_URL: $CI_PIPELINE_URL

Passe essas variáveis para seus contêineres de aplicativos no momento da implantação através da sua plataforma de orquestração de contêineres (por exemplo, como variáveis de ambiente na definição de tarefas do Amazon ECS ou no manifesto de implantação do Kubernetes).