Quais métricas posso usar para monitorar e solucionar problemas do Kinesis Data Streams?

6 minuto de leitura
0

Quero monitorar dados de entrada e saída do Amazon Kinesis Data Streams.

Resolução

Usar métricas de nível de fluxo

É possível usar as métricas do Amazon CloudWatch para monitoramento contínuo do desempenho do seu fluxo de dados do Amazon Kinesis e seu throughput. As métricas a seguir podem ajudar você a monitorar problemas do produtor e do consumidor.

GetRecords.IteratorAgeMilliseconds
GetRecords.IteratorAgeMilliseconds mede a idade do último registro no fluxo em milissegundos para todas as solicitações GetRecords. Um valor de zero para essa métrica indica que os registros são atuais no fluxo. Um valor menor é preferível. Para monitorar problemas de desempenho, aumente o número de consumidores do seu fluxo, para que os dados sejam processados mais rapidamente. Para otimizar o código da aplicação, aumente o número de consumidores para reduzir o atraso no processamento de registros.

ReadProvisionedThroughputExceeded
ReadProvisionedThroughputExceeded mede a contagem de chamadas GetRecords que sofrem controle de utilização durante um determinado período e excedem os limites de serviço ou fragmento do Kinesis Data Streams. Um valor de zero indica que os consumidores de dados não estão excedendo as service quotas. Qualquer outro valor indica que o limite de throughput foi excedido e exigiu fragmentos adicionais. Essa métrica confirma que não há mais do que cinco leituras/segundo/fragmento ou 2 MB/segundo/fragmento no fluxo. Você pode ativar o monitoramento aprimorado para validar se não há fragmentos sobrecarregados no fluxo.

WriteProvisionedThroughputExceeded
WriteProvisionedThroughputExceeded mede o PUT ou o produtor de dados (como ReadProvisionedThroughputExceeded) para ajudar a determinar se o fluxo está sofrendo controle de utilização. Isso excede as service quotas para fluxos de dados ao gravar em um fragmento. Certifique-se de que as solicitações PUT não excedam 1 MB/segundo/fragmento ou 1.000 registros/fragmento/segundo. Certifique-se de que a chave de partição esteja distribuída uniformemente e que o monitoramento aprimorado esteja ativado para verificar fragmentos sobrecarregados no fluxo. Dependendo da saturação do fragmento, atualize a contagem de fragmentos no fluxo para permitir uma taxa de throughput maior.

PutRecord.Success e PutRecords.Success
PutRecord.Success e PutRecords.Success medem a contagem de registros bem-sucedidos da solicitação PutRecords durante um determinado período pelos produtores de dados no fluxo. Essa métrica confirma a lógica de repetição efetiva para registros com falha.

GetRecords.Success
GetRecords.Success mede a contagem de solicitações GetRecords bem-sucedidas em um determinado período de tempo no fluxo. Ela confirma a lógica de repetição efetiva para registros com falha.

GetRecords.Latency
GetRecords.Latency mede o tempo gasto por cada operação GetRecords no fluxo durante um período de tempo especificado. Ela confirma recursos físicos suficientes ou lógica de processamento de registros para um maior throughput do fluxo. Ela também processa lotes maiores de dados para reduzir latências de rede e outras latências downstream na aplicação. Para a Kinesis Client Library (KCL), investigue a métrica ProcessTask.Time para monitorar o tempo de processamento da aplicação que está atrasada. A métrica GetRecords.Latency confirma que a configuração IDLE_TIME_BETWEEN_READS_IN_MILLIS está definida para acompanhar o processamento do fluxo.

PutRecords.Latency
PutRecords.Latency mede o tempo gasto por cada operação PutRecords no fluxo durante um período de tempo especificado. Se o valor de PutRecords.Latency for elevado, agregue os registros em um arquivo maior para colocar dados em lote no fluxo de dados do Kinesis. Também é possível usar vários threads para gravar dados. A lógica de repetição e controle de utilização na API PutRecords pode afetar a latência e o tempo gasto por cada operação PutRecords no fluxo. Em seguida, use a estatística Média das métricas listadas para monitorar o desempenho e a taxa de throughput do fluxo.
Observação: para GetRecords.IteratorAgeMilliseconds, use a estatística Máxima para reduzir o risco de perda de dados para consumidores que estão atrasados em relação a operações de leitura. Configure um alarme do CloudWatch para responder aos pontos de dados a serem avaliados para uma métrica. Para obter mais informações sobre os alarmes do CloudWatch, consulte Usar alarmes do Amazon CloudWatch.

Se você usa o atributo de distribuição aprimorada, use as métricas a seguir para monitorar o Kinesis Data Streams:

SubscribeToShard.RateExceeded: mede o número de chamadas excedidas por segundo que são permitidas para a operação ou quando uma tentativa de assinatura falha porque já existe uma assinatura ativa.

SubscribeToShard.Success: verifica se a operação SubscribeToShard obteve êxito.

SubscribeToShardEvent.Success: verifica a publicação bem-sucedida de um evento para assinatura ativa.

SubscribeToShardEvent.Bytes: mede o número de bytes recebidos nos fragmentos durante o período de tempo especificado.

SubscribeToShardEvent.Records: mede o número de registros recebidos nos fragmentos durante o período especificado.

SubscribeToShardEvent.MillisBehindLatest: mede a diferença entre a hora atual e o último registro do evento SubscribeToShard gravado no fluxo.

Ativar métricas aprimoradas de nível de fragmento

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Ative as métricas de nível de fragmento no CloudWatch para monitorar tarefas específicas e solucionar problemas de produtores e consumidores de dados. Por exemplo, ative métricas de nível de fragmento para ajudar a identificar problemas como distribuições desiguais de workload. Para ativar o monitoramento aprimorado, conclua as seguintes etapas:

Observação: você também pode usar a solicitação de API EnableEnhancedMonitoring ou o comando enable-enhanced-monitoring da AWS CLI.

  1. Abra o console do Kinesis.
  2. Escolha uma região específica.
  3. No painel de navegação, selecione Fluxo de dados.
  4. Em Nome do fluxo de dados, selecione seu fluxo de dados do Kinesis.
  5. Selecione Configuração.
  6. Em Métricas aprimoradas (de nível de fragmento), escolha Editar.
  7. No menu suspenso, selecione suas métricas de monitoramento aprimorado.
  8. Escolha Salvar alterações.

Solução de problemas adicional com chamadas de API

Use as chamadas de API a seguir para ler ou gravar dados do Kinesis Data Streams:

  • CreateStream: Limite de cinco transações por segundo por conta.
  • DeleteStream: Limite de cinco transações por segundo por conta.
  • ListStreams: Limite de cinco transações por segundo por conta.
  • GetShardIterator: Limite de cinco transações por segundo por conta e por fragmento aberto.
  • MergeShards: Limite de cinco transações por segundo por conta.
  • DescribeStream: Limite de dez transações por segundo por conta.
  • DescribeStreamSummary: Limite de vinte transações por segundo por conta.

Ao usar essas chamadas de API, você pode monitorar o controle de utilização nos logs do AWS CloudTrail. Para obter mais informações sobre as chamadas de API do Kinesis Data Streams e o CloudTrail, consulte Registro de chamadas da API do Amazon Kinesis Data Streams com o AWS CloudTrail.

Informações relacionadas

Preço do Amazon CloudWatch

Monitoramento do serviço Amazon Kinesis Data Streams com o Amazon CloudWatch

AWS OFICIAL
AWS OFICIALAtualizada há 5 meses