Trabalhar com métricas de funções Lambda - AWS Lambda

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á.

Trabalhar com métricas de funções Lambda

Quando sua AWS Lambda função termina de processar um evento, o Lambda envia métricas sobre a invocação para a Amazon. CloudWatch Essas métricas não são cobradas.

No CloudWatch console, você pode criar gráficos e painéis com essas métricas. É possível definir alarmes para responder a alterações na utilização, na performance ou nas taxas de erro. O Lambda envia dados métricos CloudWatch em intervalos de 1 minuto. Para obter insights mais imediatos sobre a sua função do Lambda, você pode criar métricas personalizadas de alta resolução, conforme descrito no Serverless Land. As cobranças se aplicam a métricas e CloudWatch alarmes personalizados. Para obter mais informações, consulte Definição de preço do Amazon CloudWatch.

Esta página descreve as métricas de invocação, desempenho e simultaneidade da função Lambda disponíveis no console. CloudWatch

Visualizando métricas no CloudWatch console

Você pode usar o CloudWatch console para filtrar e classificar as métricas da função por nome, alias ou versão da função.

Para visualizar métricas no CloudWatch console
  1. Abra a página Métricas (AWS/Lambdanamespace) do CloudWatch console.

  2. Na guia Procurar, em Métricas, escolha qualquer uma das seguintes dimensões:

    • Por nome da função (FunctionName): visualize métricas agregadas para todas as versões e aliases de uma função.

    • Por recurso (Resource): visualize métricas para uma versão ou um alias de uma função.

    • Por versão executada (ExecutedVersion): visualize métricas para uma combinação de alias e versão. Use a dimensão ExecutedVersion para comparar taxas de erro para duas versões de uma função que são ambas destinos de um alias ponderado.

    • Em todas as funções (nenhum): visualize métricas agregadas para todas as funções na Região da AWS atual.

  3. Escolha uma métrica e escolha Adicionar ao gráfico ou outra opção gráfica.

Por padrão, os gráficos usam a estatística Sum para todas as métricas. Para escolher uma estatística diferente e personalizar o gráfico, use as opções na guia Graphed metrics (Métricas no gráfico).

nota

O timestamp em uma métrica reflete quando a função foi invocada. Dependendo da duração da invocação, isso pode representar vários minutos até a métrica ser emitida. Se, por exemplo, a função tiver um tempo limite de dez minutos, para obter métricas precisas, procure mais de dez minutos no passado.

Para obter mais informações sobre CloudWatch, consulte o Guia CloudWatch do usuário da Amazon.

Tipos de métricas

A seção a seguir descreve os tipos de métricas do Lambda disponíveis no CloudWatch console.

Métricas de invocação

As métricas de invocação são indicadores binários do resultado de uma invocação da função do Lambda. Por exemplo, se a função retornar um erro, o Lambda enviará a métrica Errors com um valor de 1. Para obter uma contagem do número de erros de função que ocorrem a cada minuto, visualize o Sum da métrica Errors com o período de 1 minuto.

nota

Visualize as métricas a seguir com a estatística Sum.

  • Invocations: o número de vezes em que o código da sua função foi chamado, incluindo invocações bem-sucedidas e invocações que resultem em um erro de função. As invocações não serão registradas se a solicitação de invocação tiver controle de utilização ou se resultar em erro de invocação. O valor de Invocations é igual ao número de solicitações faturadas.

  • Errors: o número de invocações que resultam em um erro de função. Os erros de função incluem exceções emitidas pelo código e exceções emitidas pelo runtime do Lambda. O runtime retorna um erro para problemas como tempos limite e erros de configuração. Para calcular a taxa de erro, divida o valor de Errors pelo valor de Invocations. Observe que o timestamp em uma métrica de erro reflete quando a função foi chamada, não quando o erro ocorreu.

  • DeadLetterErrors: para a invocação assíncrona, o número de vezes em que o Lambda tenta enviar um evento para uma fila de mensagens não entregues (DLQ), mas falha. Os erros de mensagens não entregues podem ocorrer devido a recursos configurados incorretamente ou limites de tamanho.

  • DestinationDeliveryFailures: para invocação assíncrona e mapeamentos da origem do evento compatíveis, o número de vezes em que o Lambda tenta enviar um evento a um destino, mas falha. Para mapeamentos da origem do evento, o Lambda oferece suporte a origens de fluxo (DynamoDB e Kinesis). Os erros de entrega podem ocorrer devido a erros de permissão, recursos configurados incorretamente ou limites de tamanho. Os erros também podem acontecer se o destino que você configurou incluir um tipo incompatível, como uma fila do Amazon SQS FIFO ou um tópico do Amazon SNS FIFO.

  • Throttles: o número de solicitações de invocação que são limitadas. Quando todas as instâncias da função estão processando solicitações e nenhuma simultaneidade está disponível para aumento de escala vertical, o Lambda rejeita solicitações adicionais com um erro TooManyRequestsException. As solicitações limitadas e outros erros de invocação não contam como Invocations ou Errors.

  • OversizedRecordCount: para origens de eventos do Amazon DocumentDB, o número de eventos que sua função recebe do stream de alterações com mais de 6 MB de tamanho. O Lambda descarta a mensagem e emite essa métrica.

  • ProvisionedConcurrencyInvocations: o número de vezes em que o código da sua função é invocado em simultaneidade provisionada.

  • ProvisionedConcurrencySpilloverInvocations: o número de vezes em que o código da sua função é invocado usando a simultaneidade padrão quando toda a simultaneidade provisionada está em uso.

  • RecursiveInvocationsDropped: o número de vezes que o Lambda interrompeu a invocação da função porque detectou que ela era parte de um loop recursivo infinito. A Detecção de loop recursivo do Lambda monitora quantas vezes uma função é invocada como parte de uma cadeia de solicitações ao rastrear metadados adicionados por AWS SDKs compatíveis. Se a função for invocada mais de 16 vezes como parte de uma cadeia de solicitações, o Lambda descartará a próxima invocação.

Métricas de performance

As métricas de performance fornecem detalhes de performance sobre uma única invocação de função. Por exemplo, a métrica Duration indica a quantidade de tempo, em milissegundos, que a função gasta processando um evento. Para ter uma ideia da velocidade de processamento de eventos da função, visualize essas métricas com a estatística Average ou Max.

  • Duration: quantidade de tempo que o código da função gasta processando um evento. A duração faturada de uma invocação é o valor da Duration arredondado para o milissegundo mais próximo. A Duration não inclui o tempo de inícialização a frio.

  • PostRuntimeExtensionsDuration: a quantidade cumulativa de tempo que o runtime gasta executando o código para extensões após a conclusão do código de função.

  • IteratorAge: para origens de eventos do DynamoDB, Kinesis e Amazon DocumentDB, a data do último registro no evento. Essa métrica mede o tempo transcorrido entre quando um  stream recebe o registro e quando o mapeamento da origem do evento envia o evento à função.

  • OffsetLag: para origens de eventos do Apache Kafka autogerenciado e do Amazon Managed Streaming for Apache Kafka (Amazon MSK), a diferença de deslocamento entre o último registro gravado em um tópico e o último registro que o grupo de consumidores da sua função processou. Embora um tópico do Kafka possa ter várias partições, essa métrica mensura o atraso de deslocamento no nível do tópico.

Duration também é compatível com estatísticas de percentil (p). Use os percentis para excluir valores discrepantes que distorcem estatísticas Average e Maximum. Por exemplo, a estatística p95 mostra a duração máxima de 95% das invocações, excluindo as 5% mais lentas. Para obter mais informações, consulte Percentis no Guia CloudWatch do usuário da Amazon.

Métricas de simultaneidade

O Lambda relata métricas de simultaneidade como uma contagem agregada do número de instâncias que estão processando eventos em uma função, uma versão, um alias ou uma Região da AWS. Para ver se você está próximo de atingir os limites de simultaneidade, visualize essas métricas com a estatística Max.

  • ConcurrentExecutions: o número de instâncias da função que estão processando eventos. Se esse número atingir a cota de execuções simultâneas para a região ou o limite de simultaneidade reservada na função, o Lambda controlará a utilização de solicitações de invocação adicionais.

  • ProvisionedConcurrentExecutions: o número de instâncias da função que estão processando eventos usando a simultaneidade provisionada. Para cada invocação de um alias ou versão com simultaneidade provisionada, o Lambda emite a contagem atual.

  • ProvisionedConcurrencyUtilization: para uma versão ou um alias, o valor de ProvisionedConcurrentExecutions dividido pela quantidade total de simultaneidade provisionada alocada. Por exemplo, .5 indica que 50% da simultaneidade provisionada alocada estão em uso.

  • UnreservedConcurrentExecutions: para uma região, o número de eventos que estão sendo processados por funções que não tenham simultaneidade reservada.

  • ClaimedAccountConcurrency: para uma região, quantidade de simultaneidade que não está disponível para invocações sob demanda. ClaimedAccountConcurrency é igual a UnreservedConcurrentExecutions mais a quantidade de simultaneidade alocada (ou seja, a simultaneidade total reservada mais a simultaneidade total provisionada). Para ter mais informações, consulte Trabalhar com a métrica ClaimedAccountConcurrency.

Métricas de invocação assíncrona

As métricas de invocação assíncrona fornecem detalhes sobre invocações assíncronas de fontes de eventos e invocações diretas. Você pode definir limites e alarmes para notificá-lo sobre determinadas alterações. Por exemplo, quando há um aumento indesejado no número de eventos enfileirados para processamento (AsyncEventsReceived). Ou quando um evento está esperando há muito tempo para ser processado (AsyncEventAge).

  • AsyncEventsReceived: o número de eventos que o Lambda enfileira com sucesso para processamento. Esta métrica fornece informações sobre o número de eventos que uma função do Lambda recebe. Monitore essa métrica e defina alarmes de limites para verificar problemas. Por exemplo, para detectar um número indesejável de eventos enviados ao Lambda e diagnosticar rapidamente problemas resultantes de configurações incorretas de gatilhos ou funções. As incompatibilidades entre os AsyncEventsReceived e as Invocations podem indicar uma disparidade no processamento, a eliminação de eventos ou um possível backlog na fila.

  • AsyncEventAge: o tempo entre o momento em que o Lambda enfileira com sucesso o evento e o momento em que a função é invocada. O valor dessa métrica aumenta quando os eventos estão sendo repetidos devido a falhas de invocação ou no controle de utilização. Monitore esta métrica e defina alarmes para limites em estatísticas diferentes para quando ocorrer um acúmulo de fila. Para solucionar um aumento nessa métrica, examine a métrica Errors para identificar erros de função e a métrica Throttles para identificar problemas de simultaneidade.

  • AsyncEventsDropped: o número de eventos que são eliminados sem executar a função com êxito. Se você configurar uma fila de mensagens não entregues (DLQ) ou um destino OnFailure, os eventos serão enviados para lá antes de serem descartados. Os eventos são encerrados por vários motivos. Por exemplo, os eventos podem exceder a idade máxima do evento, esgotar o máximo de tentativas ou a simultaneidade reservada pode ser definida como 0. Para entender por que os eventos são encerrados, confira a métrica Errors para identificar erros de função e a métrica Throttles para identificar problemas de simultaneidade.