Métricas de tarefas do Dataflow

O Dataflow recolhe métricas para as suas tarefas, o que pode ajudar a resolver erros, solucionar problemas de desempenho ou otimizar o seu pipeline. A interface de monitorização do Dataflow apresenta visualizações destas métricas. Também pode usar o Cloud Monitoring para criar alertas ou criar consultas do Metrics Explorer.

Aceda às métricas de tarefas

Para ver as métricas de uma tarefa, siga estes passos:

  1. Na Google Cloud consola, aceda à página Dataflow > Tarefas.

    Aceda a Empregos

  2. Selecione uma tarefa.

  3. Clique no separador Métricas de tarefas.

  4. Selecione uma métrica para ver.

  5. Para aceder a informações adicionais nos gráficos de métricas de tarefas, clique em Explorar dados.

Cada métrica está organizada nos seguintes painéis de controlo:

Apoio técnico e limitações

Quando usar as métricas do Dataflow, tenha em atenção os seguintes detalhes.

  • Por vezes, os dados de empregos estão intermitentemente indisponíveis. Quando faltam dados, aparecem lacunas nos gráficos de monitorização de tarefas.

  • Alguns destes gráficos são específicos dos pipelines de streaming.

  • Para escrever dados de métricas, uma conta de serviço gerida pelo utilizador tem de ter a autorização da API IAM monitoring.timeSeries.create. Esta autorização está incluída na função de trabalhador do Dataflow.

  • O serviço Dataflow comunica o tempo de CPU reservado após a conclusão dos trabalhos. Para tarefas ilimitadas (streaming), o tempo de CPU reservado só é comunicado após o cancelamento ou a falha das tarefas. Por conseguinte, as métricas de tarefas não incluem o tempo de CPU reservado para tarefas de streaming.

Métricas de escala automática

O dimensionamento automático horizontal permite que o Dataflow escolha o número adequado de instâncias de trabalho para a sua tarefa, adicionando ou removendo trabalhadores conforme necessário.

A secção Ajuste de escala automático do separador Métricas de tarefas mostra o número de trabalhadores e o número de trabalhadores alvo ao longo do tempo. Se o seu trabalho usar o Streaming Engine, também mostra o número mínimo e máximo de trabalhadores.

Uma visualização de dados que mostra o número de trabalhadores num pipeline.

Para ver o histórico de alterações da escalabilidade automática, clique em Mais histórico. É apresentada uma tabela com informações sobre o histórico do trabalhador da sua tarefa.

Tabela que mostra o histórico do histórico do trabalhador de um pipeline.

Para ver informações adicionais sobre o ajuste de escala automático para tarefas de streaming, clique no separador Ajuste de escala automático. Para mais informações, consulte o artigo Monitorize o ajuste de escala automático do Dataflow.

Métricas de vista geral

As seguintes métricas são apresentadas em Métricas de vista geral.

Atualidade dos dados

Esta métrica aplica-se apenas a tarefas de streaming.

A atualidade dos dados é a diferença entre a hora em que um elemento de dados é processado (tempo de processamento) e a data/hora do elemento de dados (hora do evento). Os valores mais elevados significam que houve um atraso maior entre a hora do evento e a hora de processamento.

O gráfico de atualidade dos dados mostra o valor máximo de atualidade dos dados em qualquer momento. O Dataflow processa vários elementos em paralelo, pelo que o gráfico reflete o elemento com o maior atraso relativamente à respetiva hora do evento.

Se alguns dados de entrada ainda não tiverem sido processados, a marca de água de saída pode sofrer um atraso, o que afeta a atualização dos dados. Uma diferença significativa entre a hora da marca de água e a hora do evento pode indicar uma operação lenta ou bloqueada. Para mais informações, consulte o artigo Marcas de água e dados atrasados na documentação do Apache Beam.

O painel de controlo inclui os seguintes dois gráficos:

  • Atualidade dos dados por fases
  • Atualidade dos dados

Na imagem seguinte, a área realçada mostra uma grande diferença entre a hora do evento e a hora da marca de água de saída, o que indica uma operação lenta.

Uma visualização de dados que mostra a atualidade dos dados num pipeline de streaming.

Os seguintes problemas podem causar valores elevados para esta métrica:

  • Gargalos de desempenho: se o pipeline tiver fases com uma latência do sistema elevada ou registos que indicam transformações bloqueadas, o pipeline pode ter problemas de desempenho que podem aumentar a atualização dos dados. Para investigar mais detalhadamente, consulte o artigo Resolva problemas de trabalhos de streaming lentos ou bloqueados.
  • Gargalos da origem de dados: se as suas origens de dados tiverem atrasos crescentes, as datas/horas dos eventos dos seus elementos podem divergir da marca d'água enquanto aguardam processamento. Normalmente, os atrasos grandes são causados por restrições de desempenho ou problemas de origem de dados, que são melhor detetados através da monitorização das origens usadas pelo seu pipeline.
    • As origens não ordenadas, como o Pub/Sub, podem produzir marcas de água bloqueadas, mesmo quando geram resultados a uma taxa elevada. Esta situação ocorre porque os elementos não são produzidos por ordem de data/hora, e a marca de água baseia-se na data/hora não processada mínima.
  • Repetições frequentes: se vir erros que indicam que os elementos não estão a ser processados e estão a ser repetidos, as datas/horas mais antigas dos elementos repetidos podem estar a aumentar a atualização dos dados. A lista de erros comuns do Dataflow pode ajudar a resolver problemas.

Para tarefas de streaming atualizadas recentemente, as informações sobre o estado da tarefa e a marca de água podem não estar disponíveis. A operação de atualização faz várias alterações que demoram alguns minutos a propagar-se à interface de monitorização do Dataflow. Experimente atualizar a interface de monitorização cinco minutos após atualizar a tarefa.

Latência do sistema

Esta métrica aplica-se apenas a tarefas de streaming.

A latência do sistema é o número máximo atual de segundos que um item de dados está a ser processado ou a aguardar processamento. A métrica inclui o tempo que os elementos esperam dentro de uma origem. Por exemplo, se um destino de saída deixar de aceitar pedidos de gravação durante algum tempo, os dados podem acumular-se na origem, o que faz aumentar a latência do sistema. Se as operações de escrita forem retomadas e o pipeline conseguir recuperar o atraso, a latência do sistema volta ao nível de referência.

Seguem-se alguns casos que são considerações adicionais:

  • Para várias origens e destinos, a latência do sistema é o tempo máximo que um elemento aguarda numa origem antes de ser escrito em todos os destinos.
  • Por vezes, uma origem não fornece um valor para o período durante o qual um elemento aguarda no interior da origem. Além disso, o elemento pode não ter metadados para definir a respetiva hora do evento. Neste cenário, a latência do sistema é calculada a partir do momento em que o pipeline recebe o elemento pela primeira vez.

O painel de controlo inclui os seguintes dois gráficos:

  • Latência do sistema por fases
  • Latência do sistema

Uma visualização de dados que mostra a latência do sistema num pipeline de streaming.

Débito

A taxa de transferência é o volume de dados processados em qualquer momento. O painel de controlo inclui os seguintes gráficos:

  • Débito por passo em elementos por segundo
  • Débito por passo em bytes por segundo

Uma visualização de dados que mostra o débito de quatro passos num pipeline.

Contagem de registos de erros do trabalhador

A contagem do registo de erros do trabalhador mostra-lhe a taxa de erros observados em todos os trabalhadores em qualquer altura.

Um resumo de cada erro registado e o número de vezes que ocorreu.

Métricas de streaming

As seguintes métricas são apresentadas em Métricas de streaming.

Trabalho acumulado

Esta métrica aplica-se apenas a tarefas de streaming.

O painel de controlo Backlog fornece informações sobre os elementos que aguardam processamento. O painel de controlo inclui os seguintes dois gráficos:

  • Segundos de atraso (apenas para o motor de streaming)
  • Bytes de pendências (com e sem o Streaming Engine)

O gráfico Segundos de pendências mostra uma estimativa da quantidade de tempo em segundos necessária para consumir as pendências atuais se não chegarem novos dados e o débito não mudar. O tempo de pendências estimado é calculado a partir do débito e dos bytes de pendências da origem de entrada que ainda têm de ser processados. Esta métrica é usada pela funcionalidade de dimensionamento automático de streaming para determinar quando aumentar ou diminuir a escala.

Uma visualização de dados que mostra o gráfico de segundos de pendências num pipeline de streaming.

O gráfico Backlog bytes mostra a quantidade de entrada não processada conhecida para uma fase em bytes. Esta métrica compara os bytes restantes a consumir por cada fase com as fases anteriores. Para que esta métrica seja comunicada com precisão, cada origem carregada pelo pipeline tem de estar configurada corretamente. As origens incorporadas, como o Pub/Sub e o BigQuery, já são suportadas imediatamente. No entanto, as origens personalizadas requerem alguma implementação adicional. Para mais detalhes, consulte o artigo Dimensionamento automático para origens ilimitadas personalizadas.

Uma visualização de dados que mostra o gráfico de bytes de pendências num pipeline de streaming.

A processar…

Esta métrica aplica-se apenas a tarefas de streaming.

Quando executa uma pipeline do Apache Beam no serviço Dataflow, as tarefas da pipeline são executadas em VMs de trabalho. O painel de controlo Processing fornece informações sobre o tempo que as tarefas foram processadas nas VMs de trabalho. O painel de controlo inclui os seguintes dois gráficos:

  • Mapa térmico das latências de processamento de utilizadores
  • Latências de processamento de utilizadores por fase

O mapa de calor das latências de processamento do utilizador mostra as latências máximas de operação nas distribuições dos percentis 50, 95 e 99. Use o mapa de calor para ver se alguma operação de cauda longa está a causar uma latência geral do sistema elevada ou a afetar negativamente a atualização geral dos dados.

Para corrigir um problema a montante antes que se torne um problema a jusante, defina uma política de alertas para latências elevadas no percentil 50.

Uma visualização de dados que mostra o gráfico de um mapa térmico das latências de processamento do utilizador para um pipeline de streaming.

O gráfico Latências de processamento de utilizadores por fase mostra o percentil 99 para todas as tarefas que os trabalhadores estão a processar, discriminadas por fase. Se o código do utilizador estiver a causar um gargalo, este gráfico mostra a fase que contém o gargalo. Pode usar os seguintes passos para depurar o pipeline:

  1. Use o gráfico para encontrar uma fase com uma latência invulgarmente elevada.

  2. Na página de detalhes da tarefa, no separador Detalhes da execução, para Vista de gráfico, selecione Fluxo de trabalho de preparação. No gráfico Fluxo de trabalho de etapas, encontre a etapa com uma latência invulgarmente elevada.

  3. Para encontrar as operações do utilizador associadas, no gráfico, clique no nó dessa fase.

  4. Para encontrar detalhes adicionais, navegue para o Cloud Profiler e use o Cloud Profiler para depurar o rastreio da pilha no intervalo de tempo correto. Procure as operações do utilizador que identificou no passo anterior.

Uma visualização de dados que mostra o gráfico de latências de processamento do utilizador por fase para um pipeline de streaming.

Paralelismo

Esta métrica aplica-se apenas a tarefas do Streaming Engine.

O gráfico Tratamento paralelo mostra o número aproximado de chaves em utilização para o tratamento de dados em cada fase. O Dataflow é dimensionado com base no paralelismo de um pipeline.

Quando o Dataflow executa um pipeline, o processamento é distribuído por várias máquinas virtuais (VMs) do Compute Engine, também conhecidas como trabalhadores. O serviço Dataflow paraleliza e distribui automaticamente a lógica de processamento no seu pipeline para os trabalhadores. O processamento de qualquer chave é serializado, pelo que o número total de chaves para uma fase representa o paralelismo máximo disponível nessa fase.

As métricas de paralelismo podem ser úteis para encontrar teclas de atalho ou gargalos para pipelines lentos ou bloqueados.

Uma visualização de dados que mostra o gráfico de processamento paralelo num pipeline de streaming.

Persistência

Esta métrica aplica-se apenas a tarefas de streaming.

O painel de controlo Persistência fornece informações sobre a taxa a que o armazenamento persistente é escrito e lido por uma fase de pipeline específica em bytes por segundo. Os bytes lidos e escritos incluem operações de estado do utilizador e estado para misturas persistentes, remoção de duplicados, entradas laterais e acompanhamento de marcas de água. Os codificadores de pipeline e o armazenamento em cache afetam os bytes lidos e escritos. Os bytes de armazenamento podem diferir dos bytes processados devido à utilização de armazenamento interno e à colocação em cache.

O painel de controlo inclui os seguintes dois gráficos:

  • Gravação no armazenamento
  • Leitura de armazenamento

Uma visualização de dados que mostra o gráfico de gravação de armazenamento para um pipeline de streaming.

Duplicados

Esta métrica aplica-se apenas a tarefas de streaming.

O gráfico Duplicados mostra o número de mensagens que estão a ser processadas por uma fase específica e que foram filtradas como duplicados. O Dataflow suporta muitas origens e destinos que garantem a at least onceentrega. A desvantagem do fornecimento at least once é que pode resultar em duplicados. O Dataflow garante a exactly onceentrega, o que significa que os duplicados são filtrados automaticamente. As fases posteriores são guardadas do reprocessamento dos mesmos elementos, o que garante que o estado e os resultados não são afetados. A estrutura pode ser otimizada para recursos e desempenho reduzindo o número de duplicados produzidos em cada fase.

Uma visualização de dados que mostra o gráfico de duplicados num pipeline de streaming.

Temporizadores

Esta métrica aplica-se apenas a tarefas de streaming.

O painel de controlo Temporizadores fornece informações sobre o número de temporizadores pendentes e o número de temporizadores já processados numa fase específica do pipeline. Uma vez que os períodos dependem de temporizadores, esta métrica permite-lhe acompanhar o progresso dos períodos.

O painel de controlo inclui os seguintes dois gráficos:

  • Temporizadores pendentes por fase
  • Processamento de temporizadores por fase

Estes gráficos mostram a taxa à qual as janelas estão pendentes ou em processamento num ponto específico no tempo. O gráfico Temporizadores pendentes por fase indica quantas janelas estão atrasadas devido a gargalos. O gráfico Processamento de temporizadores por fase indica quantas janelas estão a recolher elementos.

Estes gráficos apresentam todos os temporizadores de tarefas. Por isso, se os temporizadores forem usados noutro local do código, também aparecem nestes gráficos.

Uma visualização de dados que mostra o número de temporizadores pendentes numa fase específica.

Uma visualização de dados que mostra o número de temporizadores já processados numa fase específica.

Métricas de recursos

As seguintes métricas são apresentadas em Métricas de recursos.

Utilização da CPU

A utilização da CPU é a quantidade de CPU usada dividida pela quantidade de CPU disponível para processamento. Esta métrica por trabalhador é apresentada como uma percentagem. O painel de controlo inclui os seguintes quatro gráficos:

  • Utilização da CPU (todos os trabalhadores)
  • Utilização da CPU (estatísticas)
  • Utilização da CPU (4 principais)
  • Utilização da CPU (4 inferiores)

Uma visualização de dados animada que mostra a utilização da CPU para um worker do Dataflow.

Utilização da memória

A utilização da memória é a quantidade estimada de memória usada pelos trabalhadores em bytes por segundo. O painel de controlo inclui os seguintes dois gráficos:

  • Utilização máxima da memória do trabalhador (bytes estimados por segundo)
  • Utilização da memória (bytes estimados por segundo)

O gráfico Utilização máxima de memória do trabalhador fornece informações sobre os trabalhadores que usam mais memória na tarefa do Dataflow em cada ponto no tempo. Se, em diferentes pontos durante uma tarefa, o trabalhador que usa a quantidade máxima de memória mudar, a mesma linha no gráfico apresenta dados para vários trabalhadores. Cada ponto de dados na linha apresenta dados do trabalhador que usa a quantidade máxima de memória nesse momento. O gráfico compara a memória estimada usada pelo trabalhador com o limite de memória em bytes.

Pode usar este gráfico para resolver problemas de falta de memória (OOM). As falhas de memória dos trabalhadores não são apresentadas neste gráfico.

O gráfico Utilização de memória mostra uma estimativa da memória usada por todos os trabalhadores no trabalho do Dataflow em comparação com o limite de memória em bytes.

Métricas de entrada e saída

Se a sua tarefa de streaming do Dataflow lê ou escreve registos através do Pub/Sub, o separador Métricas da tarefa mostra métricas para leituras ou escritas do Pub/Sub.

Todas as métricas de entrada do mesmo tipo são combinadas, e todas as métricas de saída também são combinadas. Por exemplo, todas as métricas do Pub/Sub estão agrupadas numa secção. Cada tipo de métrica está organizado numa secção separada. Para alterar as métricas apresentadas, selecione a secção à esquerda que melhor representa as métricas que procura. As imagens seguintes mostram todas as secções disponíveis.

Uma imagem de exemplo que mostra as secções de entrada e saída separadas para uma tarefa do Dataflow.

Os dois gráficos seguintes são apresentados nas secções Métricas de entrada e Métricas de saída.

Uma série de gráficos que mostram as métricas de entrada e saída de uma tarefa do Dataflow.

Pedidos por segundo

Os pedidos por segundo são a taxa de pedidos da API para ler ou escrever dados pela origem ou pelo destino ao longo do tempo. Se esta taxa descer para zero ou diminuir significativamente durante um período prolongado em relação ao comportamento esperado, a conduta pode ser impedida de realizar determinadas operações. Além disso, pode não haver dados para ler. Nesse caso, reveja os passos da tarefa que têm uma marca de água do sistema elevada. Além disso, examine os registos do worker para ver se existem erros ou indicações sobre o processamento lento.

Um gráfico que mostra o número de pedidos de API para ler ou escrever dados pela origem ou destino ao longo do tempo.

Erros de resposta por segundo por tipo de erro

Os erros de resposta por segundo por tipo de erro são a taxa de pedidos de API falhados para ler ou escrever dados pela origem ou destino ao longo do tempo. Se estes erros ocorrerem com frequência, estes pedidos de API podem abrandar o processamento. Esses pedidos de API com falhas têm de ser investigados. Para ajudar a resolver estes problemas, reveja os códigos de erro de entrada e saída gerais. Reveja também qualquer documentação de código de erro específica usada pela origem ou pelo destino, como os códigos de erro do Pub/Sub.

Um gráfico que mostra a taxa de pedidos de API com falhas para ler ou escrever dados pela origem ou destino ao longo do tempo.

Para mais informações sobre cenários em que pode usar estas métricas para depuração, consulte Ferramentas para depuração em "Resolva problemas de tarefas lentas ou bloqueadas".

Utilize o Cloud Monitoring

O Dataflow está totalmente integrado com o Cloud Monitoring. Use o Cloud Monitoring para as seguintes tarefas:

  • Crie alertas quando a tarefa exceder um limite definido pelo utilizador.
  • Use o Explorador de métricas para criar consultas e ajustar o intervalo de tempo das métricas.
  • Veja métricas que não aparecem na interface de monitorização do Dataflow.

Para obter instruções sobre como criar alertas e usar o Explorador de métricas, consulte o artigo Use o Cloud Monitoring para pipelines do Dataflow.

Para ver a lista completa de métricas do Dataflow, consulte a documentação de métricas da Google Cloud Platform.

Crie alertas do Cloud Monitoring

O Cloud Monitoring permite-lhe criar alertas quando a tarefa do Dataflow excede um limite definido pelo utilizador. Para criar um alerta do Cloud Monitoring a partir de um gráfico de métricas, clique em Criar política de alertas.

Se não conseguir ver os gráficos de monitorização nem criar alertas, pode precisar de autorizações de monitorização adicionais.

Veja no Metrics Explorer

Pode ver os gráficos de métricas do Dataflow no Explorador de métricas, onde pode criar consultas e ajustar o intervalo de tempo das métricas.

Para ver os gráficos de fluxo de dados no explorador de métricas, na vista Métricas da tarefa, abra Mais opções do gráfico e clique em Ver no explorador de métricas.

Quando ajusta o período das métricas, pode selecionar uma duração predefinida ou selecionar um intervalo de tempo personalizado para analisar a tarefa.

Por predefinição, para tarefas de streaming e tarefas em lote em curso, o ecrã mostra as métricas das seis horas anteriores para essa tarefa. Para trabalhos de streaming parados ou concluídos, a apresentação predefinida mostra todo o tempo de execução da duração do trabalho.

Métricas de E/S do Dataflow

Pode ver as seguintes métricas de I/O do Dataflow no explorador de métricas:

Métricas DoFn

Para tarefas de streaming que usam o Streaming Engine e não usam o Runner v2, pode ver as seguintes métricas para DoFns definidas pelo utilizador individual:

  • job/dofn_latency_average: O tempo médio de processamento de mensagens para um único DoFn durante o período de 3 minutos anterior, em milissegundos.
  • job/dofn_latency_max: O tempo máximo de processamento de mensagens para um único DoFn nos últimos 3 minutos, em milissegundos.
  • job/dofn_latency_min: O tempo mínimo de processamento de mensagens para um único DoFn nos últimos 3 minutos, em milissegundos.
  • job/dofn_latency_num_messages: O número de mensagens processadas por um único DoFn nos últimos 3 minutos.
  • job/dofn_latency_total: O tempo total de processamento de mensagens para todas as mensagens num único DoFn durante o período de 3 minutos anterior, em milissegundos.
  • job/oldest_active_message_age: Há quanto tempo a mensagem ativa mais antiga está a ser processada num DoFn, em milissegundos.

Estas métricas requerem a versão 2.53.0 ou posterior do SDK do Apache Beam. Para ver estas métricas, use o Explorador de métricas.

Pode usar estas métricas para saber que DoFns contribuem mais para a latência de processamento nos seus trabalhos. Por exemplo, se uma tarefa estiver bloqueada, use a métrica job/oldest_active_message_age para encontrar o DoFn com a mensagem ativa mais antiga. A imagem seguinte mostra um DoFn com um grande pico nesta métrica:

Um gráfico que mostra um DoFn com um valor atípico para a mensagem ativa mais antiga.

Para ver o nome do DoFn, mantenha o ponteiro sobre a linha do gráfico.

O que se segue?