Métricas coletadas pelo Application Signals - Amazon CloudWatch

Métricas coletadas pelo Application Signals

O Application Signals coleta métricas de aplicação padrão e métricas de runtime das aplicações para os quais você o habilita.

As métricas padrão da aplicação estão relacionadas às partes mais críticas da performance, latência e disponibilidade do serviço.

As métricas de runtime monitoram as métricas da aplicação ao longo do tempo, incluindo uso de memória, uso de CPU e coleta de resíduos. O Application Signals exibe as métricas de runtime no contexto dos serviços que você habilitou para o Application Signals. Quando você tem um problema operacional, observar as métricas de runtime pode ser útil para ajudar a encontrar a causa raiz do problema. Por exemplo, você pode ver se os picos na latência no serviço estão relacionados a picos em uma métrica de runtime.

Coleta de métricas de aplicações padrão

O Application Signals coleta métricas de aplicações padrão usando os serviços que descobre. Essas métricas estão relacionadas aos aspectos mais críticos da performance de um serviço, nomeadamente, a latência, as falhas e os erros. As métricas podem ajudar você a identificar problemas, monitorar tendências de performance e otimizar recursos para aprimorar a experiência geral do usuário.

A tabela apresentada a seguir lista as métricas coletadas pelo Application Signals. Essas métricas são enviadas ao CloudWatch no namespace ApplicationSignals.

Métrica Descrição

Latency

O atraso antes da transferência de dados começa após a solicitação ser realizada.

Unidade: milissegundos

Fault

Uma contagem de falhas do lado do servidor HTTP 5XX e de erros de status de extensão do OpenTelemetry.

Unidades: nenhuma

Error

Uma contagem de erros do lado do cliente HTTP 4XX. Eles são considerados erros de solicitação que não são causados ​​por problemas de serviço. Portanto, a métrica Availability, que é exibida nos painéis do Application Signals, não considera esses erros como falhas de serviço.

Unidades: nenhuma

A métrica Availability exibida nos painéis do Application Signals é calculada como (1 - Faults/Total)*100. O total de respostas inclui todas as respostas e é derivado deSampleCount(Latency). As respostas com êxito são todas as respostas sem erros 5XX. As respostas 4XX são tratadas como com êxito quando o Application Signals calcula a Availability.

Dimensões coletadas e combinações de dimensões

As dimensões apresentadas a seguir são definidas para cada uma das métricas de aplicações padrão. Para obter mais informações sobre dimensões, consulte Dimensões.

Diferentes dimensões são coletadas para as métricas de serviço e para as métricas de dependência. Dentro dos serviços descobertos pelo Application Signals, quando o microsserviço A chama o microsserviço B, este está atendendo à solicitação. Nesse caso, o microsserviço A emite métricas de dependência e o microsserviço B emite métricas de serviço. Quando um cliente chama o microsserviço A, este está atendendo à solicitação e emite métricas de serviço.

Dimensões para métricas de serviço

As dimensões apresentadas a seguir são coletadas para as métricas de serviço.

Dimensão Descrição

Service

O nome do serviço da .

O valor máximo é de 255 caracteres.

Operation

O nome da operação de API ou de outra atividade.

O valor máximo é de 1.024 caracteres. Atualmente, você só poderá definir objetivos de nível de serviço nas operações quando o nome da operação tiver 194 caracteres ou menos.

Environment

O nome do ambiente em que os serviços estão sendo executados. Se os serviços não estiverem sendo executados no Amazon EKS, você poderá especificar um valor personalizado opcional para deployment.environment no parâmetro OTEL_ATTRIBUTE_RESOURCES.

O valor máximo é de 259 caracteres.

Ao visualizar essas métricas no console do CloudWatch, é possível vê-las usando as seguintes combinações de dimensões:

  • [Environment, Service, Operation, [Latency, Error, Fault]]

  • [Environment, Service, [Latency, Error, Fault]]

Dimensões para métricas de dependência

As seguintes dimensões são coletadas para métricas de dependência:

Dimensão Descrição

Service

O nome do serviço da .

O valor máximo é de 255 caracteres.

Operation

O nome da operação de API ou de outra operação.

O valor máximo é de 1.024 caracteres.

RemoteService

O nome do serviço remoto que está sendo invocado.

O valor máximo é de 255 caracteres.

RemoteOperation

O nome da operação de API que está sendo invocada.

O valor máximo é de 1.024 caracteres.

Environment

O nome do ambiente em que os serviços estão sendo executados. Se os serviços não estiverem sendo executados no Amazon EKS, você poderá especificar um valor personalizado opcional para deployment.environment no parâmetro OTEL_ATTRIBUTE_RESOURCES.

O valor máximo é de 259 caracteres.

RemoteEnvironment

O nome do ambiente em que os serviços da dependência estão sendo executados. O parâmetro RemoteEnvironment é gerado automaticamente quando um serviço chama uma dependência e ambos estão sendo executados no mesmo cluster. Do contrário, o RemoteEnvironment não é gerado nem relatado nas métricas da dependência do serviço. Atualmente, disponível somente no Amazon EKS e nas plataformas do K8S.

O valor máximo é de 259 caracteres.

RemoteResourceIdentifier

O nome do recurso invocado por uma chamada remota. O parâmetro RemoteResourceIdentifier será gerado automaticamente se o serviço chamar um serviço remoto da AWS. Do contrário, o RemoteResourceIdentifier não é gerado nem relatado nas métricas da dependência do serviço.

O valor máximo é de 1.024 caracteres.

RemoteResourceType

O tipo do recurso que é invocado por uma chamada remota. Obrigatório somente se RemoteResourceIdentifier estiver definido.

O valor máximo é de 1.024 caracteres.

Ao visualizar essas métricas no console do CloudWatch, é possível vê-las usando as seguintes combinações de dimensões:

Execução em clusters do Amazon EKS

  • [Environment, Service, Operation, RemoteService, RemoteOperation, RemoteEnvironment, RemoteResourceIdentifier, RemoteResourceType, [Latency, Error, Fault]]

  • [Environment, Service, Operation, RemoteService, RemoteOperation, RemoteEnvironment, [Latency, Error, Fault]]

  • [Environment, Service, Operation, RemoteService, RemoteOperation, RemoteResourceIdentifier, RemoteResourceType, [Latency, Error, Fault]]

  • [Environment, Service, Operation, RemoteService, RemoteOperation, [Latency, Error, Fault]]

  • [Environment, Service, RemoteService, RemoteEnvironment, [Latency, Error, Fault]]

  • [Environment, Service, RemoteService, [Latency, Error, Fault]]

  • [Environment, Service, RemoteService, RemoteOperation, RemoteEnvironment, RemoteResourceIdentifier, RemoteResourceType, [Latency, Error, Fault]]

  • [Environment, Service, RemoteService, RemoteOperation, RemoteEnvironment, [Latency, Error, Fault]]

  • [Environment, Service, RemoteService, RemoteOperation, RemoteResourceIdentifier, RemoteResourceType, [Latency, Error, Fault]]

  • [Environment, Service, RemoteService, RemoteOperation, [Latency, Error, Fault]]

  • [RemoteService [Latency, Error, Fault]]

  • [RemoteService, RemoteResourceIdentifier, RemoteResourceType [Latency, Error, Fault]]

Métricas de runtime

O Application Signals usa o SDK do AWS Distro para OpenTelemetry para coletar automaticamente métricas compatíveis com o OpenTelemetry das aplicações Java e Python. Para que as métricas de runtime sejam coletadas, você deve atender aos seguintes pré-requisitos:

  • O agente do CloudWatch deve ser da versão 1.300049.1 ou posterior.

  • Se você usar o complemento Amazon CloudWatch Observability EKS, ele deverá ser da versão 2.30-eksbuild.1 ou posterior. Se você atualizar o complemento, deverá reiniciar as aplicações.

  • Para aplicações Java, você deve estar executando a versão 1.32.5 ou posterior do SDK do AWS Distro do OpenTelemetry para Java.

  • Para aplicações Python, você deve estar executando a versão 0.7.0 ou posterior do SDK do AWS Distro para OpenTelemetry para Python.

  • Para aplicações .Net, você deve estar executando a versão 1.6.0 ou mais recente do SDK do AWS Distro para OpenTelemetry para .Net.

As métricas de runtime não são coletadas para aplicações Node.js.

As métricas de runtime são cobradas como parte dos custos do Application Signals. Para obter mais informações sobre os preços do CloudWatch, consulte Preço do Amazon CloudWatch.

nota

Problemas conhecidos

Sabemos que a coleção de métricas de runtime na versão v1.32.5 do Java SDK não funciona com aplicações que usam o JBoss Wildfly. Esse problema se estende ao complemento Amazon CloudWatch Observability EKS, afetando as versões 2.3.0-eksbuild.1 até 2.6.0-eksbuild.1. O problema foi corrigido na versão v1.32.6 do Java SDK e na versão v3.0.0-eksbuild.1 do complemento Amazon CloudWatch Observability para EKS.

Se você for afetado, atualize a versão do Java SDK ou desabilite a coleção de métricas de runtime adicionando a variável de ambiente OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false à sua aplicação.

Métricas de runtime Java

O Application Signals coleta as métricas a seguir da JVM das aplicações Java que você habilita para o Application Signals. Todas as métricas de runtime são enviadas para o CloudWatch no namespace ApplicationSignals, e são coletadas com o conjunto de dimensões Service e Environment.

Nome da métrica Descrição Estatísticas significativas

JVMGCDuration

Métrica agregada da duração das ações de coleta de resíduos da JVM.

Unidade: milissegundos

Soma, Média, Mínimo, Máximo

JVMGCOldGenDuration

Métrica agregada da duração das ações de coleta de resíduos da JVM da geração antiga. Somente disponível na G1.

Unidade: milissegundos

Soma, Média, Mínimo, Máximo

JVMGCYoungGenDuration

Métrica agregada da duração das ações de coleta de resíduos da JVM da geração mais recente. Somente disponível na G1.

Unidade: milissegundos

Soma, Média, Mínimo, Máximo

JVMGCCount

Métrica agregada da quantidade de ações de coleta de resíduos da JVM.

Unidade: nenhuma

Soma, Média, Mínimo, Máximo

JVMGCOldGenCount

Métrica agregada da quantidade de ações de coleta de resíduos da JVM da antiga geração. Somente disponível na G1.

Unidade: nenhuma

Soma, Média, Mínimo, Máximo

JVMGCYoungGenCount

Métrica agregada da quantidade de ações de coleta de resíduos da JVM da antiga mais recente. Somente disponível na G1.

Unidade: nenhuma

Soma, Média, Mínimo, Máximo

JVMMemoryHeapUsed

A quantidade do heap de memória usado.

Unidade: bytes

Média, Mínimo, Máximo

JVMMemoryUsedAfterLastGC

Quantidade de memória usada, conforme calculada após o evento de coleta de resíduos mais recente neste pool.

Unidade: bytes

Média, Mínimo, Máximo

JVMMemoryOldGenUsed

A quantidade de memória usada pela geração antiga.

Unidade: bytes

Média, Mínimo, Máximo

JVMMemorySurvivorSpaceUsed

A quantidade do heap memória usado pelo survivor space.

Unidade: bytes

Média, Mínimo, Máximo

JVMMemoryEdenSpaceUsed

A quantidade de memória usada pelo eden space.

Unidade: bytes

Média, Mínimo, Máximo

JVMMemoryNonHeapUsed

A quantidade de memória não heap usada.

Unidade: bytes

Média, Mínimo, Máximo

JVMThreadCount

O número de threads em execução, incluindo threads daemon e não daemon.

Unidade: nenhuma

Soma, Média, Mínimo, Máximo

JVMClassLoaded

O número de classes carregadas.

Unidade: nenhuma

Soma, Média, Mínimo, Máximo

JVMCpuTime

O tempo de CPU usado pelo processo, conforme relatado pela JVM.

Unidade: nenhuma (nanossegundos)

Soma, Média, Mínimo, Máximo

JVMCpuRecentUtilization

A CPU recente utilizada pelo processo, conforme relatado pela JVM.

Unidade: nenhuma

Média, Mínimo, Máximo

Métricas de runtime Python

O Application Signals coleta as métricas a seguir das aplicações Python que você habilita para o Application Signals. Todas as métricas de runtime são enviadas para o CloudWatch no namespace ApplicationSignals, e são coletadas com o conjunto de dimensões Service e Environment.

Nome da métrica Descrição Estatísticas significativas

PythonProcessGCCount

O número total de objetos que estão sendo rastreados atualmente.

Unidade: nenhuma

Soma, Média, Mínimo, Máximo

PythonProcessGCGen0Count

O número de objetos que estão sendo rastreados atualmente na Geração 0.

Unidade: nenhuma

Soma, Média, Mínimo, Máximo

PythonProcessGCGen1Count

O número de objetos que estão sendo rastreados atualmente na Geração 1.

Unidade: nenhuma

Soma, Média, Mínimo, Máximo

PythonProcessGCGen2Count

O número de objetos que estão sendo rastreados atualmente na Geração 2.

Unidade: nenhuma

Soma, Média, Mínimo, Máximo

PythonProcessVMSMemoryUsed

A quantidade total de memória virtual usada pelo processo.

Unidade: bytes

Média, Mínimo, Máximo

PythonProcessRSSMemoryUsed

A quantidade total de memória física não trocada usada pelo processo.

Unidade: bytes

Média, Mínimo, Máximo

PythonProcessThreadCount

O número de threads atualmente usados pelo processo.

Unidade: nenhuma

Soma, Média, Mínimo, Máximo

PythonProcessCpuTime

O tempo de CPU usado pelo processo.

Unidade: segundos

Soma, Média, Mínimo, Máximo

PythonProcessCpuUtilization

A utilização da CPU do processo.

Unidade: nenhuma

Média, Mínimo, Máximo

Métricas de runtime de .Net

O Application Signals coleta as métricas a seguir das aplicações .Net que você habilita para o Application Signals. Todas as métricas de runtime são enviadas para o CloudWatch no namespace ApplicationSignals, e são coletadas com o conjunto de dimensões Service e Environment.

Nome da métrica Descrição Estatísticas significativas

DotNetGCGen0Count

O número total de métricas de coleta de resíduos rastreadas na Geração 0 desde o início do processo.

Unidade: nenhuma

Soma, Média, Mínimo, Máximo

DotNetGCGen1Count

O número total de métricas de coleta de resíduos rastreadas na Geração 1 desde o início do processo.

Unidade: nenhuma

Soma, Média, Mínimo, Máximo

DotNetGCGen2Count

O número total de métricas de coleta de resíduos rastreadas na Geração 2 desde o início do processo.

Unidade: nenhuma

Soma, Média, Mínimo, Máximo

DotNetGCDuration

O tempo total de pausa na coleta de resíduos desde o início do processo.

Unidade: nenhuma

Soma, Média, Mínimo, Máximo

DotNetGCGen0HeapSize

O tamanho do heap (incluindo fragmentação) da Geração 0 observado durante a última coleta de resíduos.

nota

Essa métrica só estará disponível após a conclusão da primeira coleta de resíduos.

Unidade: bytes

Média, Mínimo, Máximo

DotNetGCGen1HeapSize

O tamanho do heap (incluindo fragmentação) da Geração 1 observado durante a última coleta de resíduos.

nota

Essa métrica só estará disponível após a conclusão da primeira coleta de resíduos.

Unidade: bytes

Média, Mínimo, Máximo

DotNetGCGen2HeapSize

O tamanho do heap (incluindo fragmentação) da Geração 2 observado durante a última coleta de resíduos.

nota

Essa métrica só estará disponível após a conclusão da primeira coleta de resíduos.

Unidade: bytes

Média, Mínimo, Máximo

DotNetGCLOHHeapSize

O tamanho do heap de objetos grandes (incluindo fragmentação) observado durante a última coleta de resíduos.

nota

Essa métrica só estará disponível após a conclusão da primeira coleta de resíduos.

Unidade: bytes

Média, Mínimo, Máximo

DotNetGCPOHHeapSize

O tamanho do heap de objetos fixados (incluindo fragmentação) observado durante a última coleta de resíduos.

nota

Essa métrica só estará disponível após a conclusão da primeira coleta de resíduos.

Unidade: bytes

Média, Mínimo, Máximo

DotNetThreadCount

O número de threads do pool de threads que existem atualmente.

Unidade: nenhuma

Média, Mínimo, Máximo

DotNetThreadQueueLength

O número de itens de trabalho que estão atualmente na fila para serem processados pelo pool de threads.

Unidade: nenhuma

Média, Mínimo, Máximo

Desativar a coleta de métricas de runtime

As métricas de runtime são coletadas por padrão de aplicações Java e Python que estão habilitadas para o Application Signals. Se você quiser desabilitar a coleta dessas métricas, siga as instruções descritas nesta seção para o seu ambiente.

Amazon EKS

Para desabilitar as métricas de runtime nas aplicações do Amazon EKS no nível da aplicação, adicione a variável de ambiente a seguir à especificação da workload.

env: - name: OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED value: "false"

Para desabilitar as métricas de runtime nas aplicações do Amazon EKS no nível do cluster, aplique a configuração à configuração avançada do complemento Amazon CloudWatch Observability EKS.

{ "agent": { "config": { "traces": { "traces_collected": { "application_signals": { } } }, "logs": { "metrics_collected": { "application_signals": { } } } }, "manager": { "autoInstrumentationConfiguration": { "java": { "runtime_metrics": { "enabled": false } }, "python": { "runtime_metrics": { "enabled": false } }, "dotnet": { "runtime_metrics": { "enabled": false } } } } } }

Amazon ECS

Para desabilitar as métricas de runtime nas aplicações do Amazon ECS, adicione a variável de ambiente OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false na nova revisão da definição de tarefas e reimplante a aplicação.

EC2

Para desabilitar as métricas de runtime nas aplicações do Amazon EC2, adicione a variável de ambiente OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false antes do início da aplicação.

Kubernetes

Para desabilitar as métricas de runtime nas aplicações do Kubernetes no nível da aplicação, adicione a variável de ambiente a seguir à especificação da workload.

env: - name: OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED value: "false"

Para desabilitar as métricas de runtime nas aplicações do Kubernetes no nível do cluster, use o seguinte:

helm upgrade ... \ --set-string manager.autoInstrumentationConfiguration.java.runtime_metrics.enabled=false \ --set-string manager.autoInstrumentationConfiguration.python.runtime_metrics.enabled=false \ -\-set-string manager.autoInstrumentationConfiguration.dotnet.runtime_metrics.enabled=false