Métricas disponíveis do CloudWatch para o Amazon SQS - Amazon Simple Queue Service

Métricas disponíveis do CloudWatch para o Amazon SQS

O Amazon SQS envia as seguintes métricas para o CloudWatch.

nota

Para algumas métricas, o resultado é aproximado por causa da arquitetura distribuída do Amazon SQS. Na maioria dos casos, a contagem deve ser próxima da quantidade real de mensagens na fila.

Métricas do Amazon SQS

O Amazon SQS publica automaticamente métricas operacionais no Amazon CloudWatch sob o namespace AWS/SQS. Essas métricas ajudam a monitorar a integridade e o desempenho da fila. Devido à natureza distribuída do SQS, muitos valores são aproximados, mas precisos o suficiente para a maioria das decisões operacionais.

nota
  • Todas as métricas emitem valores não negativos somente quando a fila está ativa.

  • Algumas métricas (como SentMessageSize) não são emitidas até que pelo menos uma mensagem seja enviada.

Métrica Descrição Unidades Relatório resultante Notas principais
ApproximateAgeOfOldestMessage A idade da mensagem não processada mais antiga na fila.

Segundos

Relatado se a fila contém pelo menos uma mensagem ativa.
  • Para filas padrão, se uma mensagem for recebida três vezes ou mais e não for excluída, o SQS a moverá para o final da fila. A métrica, então, refletirá a idade da próxima mensagem que não excedeu o limite de recebimento. Essa reordenação ocorre mesmo quando uma política de redirecionamento está em vigor.

  • As mensagens com pílulas venenosas (aquelas recebidas repetidamente, mas nunca excluídas) são excluídas dessa métrica até serem processadas com sucesso.

  • Quando uma mensagem é movida para uma DLQ após ultrapassar o valor de maxReceiveCount, a idade é redefinida. Nesse caso, a métrica da DLQ reflete a hora em que a mensagem foi movida, não quando foi enviada originalmente.

  • As filas FIFO não reordenam as mensagens para preservar a ordem. Uma mensagem com falha bloqueia seu grupo de mensagens até que seja excluída ou expire. Se uma DLQ estiver configurada, a mensagem será enviada para lá depois que o limite de recebimento for atingido.

ApproximateNumberOfGroupsWithInflightMessages Somente para FIFO. O número de grupos de mensagens com uma ou mais mensagens em trânsito.

Contagem

Relatado se a fila FIFO está ativa.
  • Uma mensagem é considerada em trânsito depois de ser recebida da fila por um consumidor, mas ainda não foi excluída ou expirou.

  • Essa métrica ajuda a solucionar problemas e otimizar o throughput da fila FIFO. Valores altos geralmente indicam uma forte simultaneidade.

  • Se a fila tiver grande acúmulo e esse valor permanecer baixo, considere escalar os consumidores ou aumentar o número de grupos de mensagens ativos.

  • Para limites de throughput e mensagens em trânsito, consulte Cotas do Amazon SQS.

ApproximateNumberOfMessagesDelayed

O número de mensagens na fila que estão atrasadas e não disponíveis imediatamente para recuperação.

Contagem

Relatado se existem mensagens atrasadas na fila.
  • Aplica-se às filas configuradas com um atraso padrão e às mensagens individuais enviadas com um parâmetro DelaySeconds.

  • As mensagens atrasadas permanecem ocultas dos consumidores até que o período de atraso expire, o que pode afetar a percepção do acúmulo ou do throughput da fila.

ApproximateNumberOfMessagesNotVisible O número de mensagens em trânsito que foram recebidas, mas ainda não excluídas ou expiradas.

Contagem

Relatado se existirem mensagens em trânsito.
  • As mensagens entram no estado de trânsito após serem enviadas a um consumidor por meio da API ReceiveMessage.

  • Essas mensagens são temporariamente ocultadas de outros consumidores durante a janela de tempo limite de visibilidade.

  • Use essa métrica para rastrear atrasos no processamento de mensagens ou consumidores presos.

ApproximateNumberOfMessagesVisible O número de mensagens atualmente disponíveis para recuperação e processamento.

Contagem

Relatado se a fila está ativa.
  • Reflete acúmulo sendo atualmente processado na fila.

  • Não há limite rígido de quantas mensagens podem ser acumuladas, mas elas estão sujeitas ao período de retenção configurado pela fila.

  • Um valor consistentemente alto pode indicar consumidores subprovisionados ou lógica de processamento paralisada.

NumberOfEmptyReceives¹ O número de chamadas de API ReceiveMessage que não retornaram mensagens.

Contagem

Relatado durante as operações de recebimento.
  • Essa métrica pode ajudar a identificar ineficiências no comportamento da pesquisa ou instâncias de consumidores subutilizados.

  • Valores altos podem ocorrer quando a fila está vazia, o consumidor usa uma sondagem curta ou as mensagens estão sendo processadas de forma mais rápida do que são produzidas.

  • Esse não é um indicador preciso do estado da fila. Ela reflete o comportamento do lado do serviço e pode incluir novas tentativas.

NumberOfDeduplicatedSentMessages Somente para FIFO. O número de mensagens enviadas que foram desduplicadas e não adicionadas à fila.

Contagem

Relatado se valores ou conteúdo MessageDeduplicationId duplicados forem detectados.
  • O SQS desduplica mensagens com base no hash MessageDeduplicationId ou baseado em conteúdo (se ativado).

  • Um valor alto pode indicar que um produtor está enviando repetidamente a mesma mensagem dentro da janela de desduplicação de 5 minutos.

  • Use essa métrica para solucionar problemas de lógica redundante do produtor ou confirmar se a desduplicação está funcionando conforme o esperado.

NumberOfMessagesDeleted¹

O número de mensagens excluídas com êxito da fila.

Contagem

Relatado para cada solicitação de exclusão com um identificador de recibo válido.
  • Essa métrica conta todas as operações de exclusão bem-sucedidas, mesmo que a mesma mensagem seja excluída mais de uma vez.

  • Os motivos comuns para valores acima do esperado incluem:

    • Várias exclusões da mesma mensagem usando identificadores de recebimento diferentes, depois que o tempo limite de visibilidade expira e a mensagem é recebida novamente.

    • Exclusões duplicadas usando o mesmo identificador de recebimento, que ainda retornam um status de sucesso e incrementam a métrica.

  • Use essa métrica para monitorar o sucesso do processamento de mensagens, mas não a trate como uma contagem exata de mensagens exclusivas excluídas.

NumberOfMessagesReceived¹ O número de mensagens retornadas pela API ReceiveMessage.

Contagem

Relatado durante as operações de recebimento.
  • Isso inclui todas as mensagens retornadas aos consumidores, incluindo aquelas que são posteriormente retornadas à fila devido à expiração do tempo limite de visibilidade.

  • Uma única mensagem pode ser recebida várias vezes se não for excluída, o que pode fazer com que essa métrica exceda o número de mensagens enviadas.

  • Use isso para rastrear a atividade do consumidor, mas não a trate como uma contagem de mensagens exclusivas processadas.

NumberOfMessagesSent¹ O número de mensagens adicionadas com êxito a uma fila.

Contagem

Relatado para cada envio manual bem-sucedido.
  • Chamadas manuais para SendMessage ou SendMessageBatch são contabilizadas, incluindo aquelas direcionadas a uma DLQ.

  • As mensagens que são movidas automaticamente para uma DLQ após excederem a maxReceiveCount não são incluídas nessa métrica.

  • Como resultado, o NumberOfMessagesSent pode ser menor do que o NumberOfMessagesReceived, principalmente se as políticas de redirecionamento estiverem transferindo muitas mensagens para DLQs no segundo plano.

SentMessageSize¹

O tamanho das mensagens enviadas com sucesso para a fila.

Bytes

Não emitido até que pelo menos uma mensagem seja enviada.
  • Essa métrica não aparecerá no console do CloudWatch até que a fila receba sua primeira mensagem.

  • Use essa métrica para rastrear o tamanho de cada mensagem em bytes. Isso é útil para analisar tendências de carga útil ou estimar o custo de throughput.

  • O tamanho máximo da mensagem para o SQS é de 1 MiB.

ApproximateNumberOfNoisyGroups

O número de grupos de mensagens que são considerados barulhentos em uma fila justa. Um grupo de mensagens barulhentas representa um locatário barulhento de uma fila multilocatário.

Contagem

Um valor não negativo é relatado se a fila estiver ativa.
  • Ajuda a identificar possíveis problemas com vizinhos barulhentos em ambientes multilocatário, rastreando grupos de mensagens que consomem recursos desproporcionais.

  • Use essa métrica para definir alarmes que são acionados quando o número de grupos barulhentos exceder o limite aceitável, indicando possíveis problemas de equidade na fila.

ApproximateNumberOfMessagesVisibleInQuietGroups

O número de mensagens visíveis, excluindo mensagens de grupos de mensagens barulhentos.

Contagem

Um valor não negativo é relatado se a fila estiver ativa.
  • Fornece visibilidade do acúmulo de filas para grupos de mensagens de taxa padrão, excluindo mensagens de vizinhos barulhentos.

  • Ajuda a identificar o verdadeiro acúmulo de processamento para grupos de mensagens típicos ao filtrar o impacto de vizinhos barulhentos.

ApproximateNumberOfMessagesNotVisibleInQuietGroups O número de mensagens em trânsito, excluindo mensagens de grupos de mensagens barulhentos.

Contagem

Um valor não negativo é relatado se a fila estiver ativa.
  • Rastreia mensagens em andamento (sendo processadas, mas ainda não excluídas) de grupos de mensagens bem comportados.

  • Use essa métrica para monitorar o throughput de grupos de mensagens normais e detectar gargalos de processamento que não sejam causados por vizinhos barulhentos.

ApproximateNumberOfMessagesDelayedInQuietGroups O número de mensagens, excluindo mensagens de grupos barulhentos que estão atrasadas e indisponíveis para leitura imediata. Isso pode acontecer quando a fila tem a configuração de fila com atraso ou quando uma mensagem foi enviada com um parâmetro de atraso.

Contagem

Um valor não negativo é relatado se a fila estiver ativa.
  • Ajuda a monitorar o acúmulo de mensagens atrasadas de grupos de mensagens com padrões de throughput normais ou esperados (em oposição a grupos de alto volume ou barulhentos)

  • Útil para entender os requisitos futuros de processamento e o planejamento de capacidade para workloads típicas.

ApproximateAgeOfOldestMessageInQuietGroups A idade da mensagem mais antiga não excluída na fila, excluindo mensagens de grupos de mensagens barulhentas.

Segundos

Um valor não negativo é relatado se a fila estiver ativa.
  • Usado para monitorar a conformidade do SLA e detectar gargalos de processamento em grupos de mensagens com padrões de throughput normais ou esperados (em oposição a grupos de mensagens de alto volume ou barulhentas que, de outra forma, poderiam distorcer a métrica).

  • Use essa métrica para definir alarmes para tempos limite de processamento de mensagens que ignoram mensagens transformadas em antigas artificialmente de vizinhos barulhentos.

¹ Essas métricas refletem a atividade no nível do sistema e podem incluir novas tentativas, duplicatas ou mensagens atrasadas. Não use contagens brutas para estimar o estado da fila em tempo real sem considerar o comportamento do ciclo de vida das mensagens.

Filas de mensagens não entregues (DLQs) e métricas do CloudWatch

Ao trabalhar com DLQs, é importante entender como as métricas do Amazon SQS se comportam:

  • NumberOfMessagesSent: essa métrica se comporta de forma diferente para DLQs:

    • Envio manual: as mensagens enviadas manualmente para uma DLQ são capturadas por essa métrica.

    • Redirecionamento automático: as mensagens movidas automaticamente para uma DLQ devido a falhas de processamento não são capturadas por essa métrica. Como resultado, as métricas NumberOfMessagesSent e NumberOfMessagesReceived podem mostrar discrepâncias nas DLQs.

  • Métrica recomendada para DLQs: para monitorar o estado de uma DLQ, use a métrica ApproximateNumberOfMessagesVisible. Essa métrica indica o número de mensagens atualmente disponíveis para processamento na DLQ.

Filas justas e métricas do CloudWatch

Quando você usa filas justas, o Amazon SQS emite as seguintes métricas adicionais:

  • ApproximateNumberOfNoisyGroups

  • ApproximateNumberOfMessagesVisibleInQuietGroups

  • ApproximateNumberOfMessagesNotVisibleInQuietGroups

  • ApproximateNumberOfMessagesDelayedInQuietGroups

  • ApproximateAgeOfOldestMessageInQuietGroups

nota

Cada métrica QuietGroup é um subconjunto da métrica padrão equivalente em nível de fila Approximate, mas exclui mensagens de grupos vizinhos barulhentos.

Grupos barulhentos

Um grupo de mensagens barulhentas representa um locatário barulhento de uma fila multilocatário.

Grupos silenciosos

Grupos de mensagens que excluem grupos barulhentos.

Observação do comportamento das filas justas do SQS

Para monitorar o efeito das filas justas do Amazon SQS, você pode comparar as métricas Approximate..InQuietGroups com métricas padrão em nível de fila. Durante picos de tráfego para um locatário específico, as métricas gerais do nível da fila podem revelar o aumento dos acúmulos ou a idade das mensagens mais antigas. No entanto, ao analisar os grupos silenciosos isoladamente, você pode identificar que a maioria dos grupos de mensagens ou locatários barulhentos não são afetados, e fornece uma estimativa do número total de grupos de mensagens impactados.

Embora essas novas métricas forneçam uma boa visão geral do comportamento das filas justas do Amazon SQS, pode ser benéfico entender qual locatário específico está causando a carga. O Amazon CloudWatch Contributor Insights permite ver métricas relacionadas aos principais colaboradores, o número total de colaboradores exclusivos e o uso deles. Isso é especialmente útil em cenários em que você está lidando com milhares de locatários que, de outra forma, levariam a dados (e custos) de alta cardinalidade ao emitir métricas tradicionais.

Para ver um exemplo de configuração de monitoramento para filas justas, consulte a amostra no GitHub.

Dimensões para métricas do Amazon SQS

As métricas do Amazon SQS no CloudWatch usam uma única dimensão: QueueName. Todos os dados métricos são agrupados e filtrados pelo nome da fila.

Dicas de monitoramento

Monitore o SQS de forma eficaz usando métricas importantes e alarmes do CloudWatch para detectar acúmulos nas filas, otimizar o desempenho e permanecer dentro dos limites do serviço.

  • Defina alarmes do CloudWatch com base em ApproximateNumberOfMessagesVisible para capturar o crescimento do acúmulo.

  • Monitore NumberOfEmptyReceives para ajustar a frequência da pesquisa e reduzir o custo da API.

  • Use ApproximateNumberOfGroupsWithInflightMessages em filas FIFO para diagnosticar limites de throughput.

  • Consulte Cotas do SQS para entender os limites métricos e de serviço.