Personalizar o painel de monitoramento do Dataflow

Nesta página, mostramos como personalizar o painel de monitoramento do projeto do Dataflow adicionando um gráfico que consulta métricas do Cloud Monitoring.

Com o painel de monitoramento de projetos, é possível monitorar uma coleção de jobs e conferir a integridade e o desempenho gerais deles. O painel contém um conjunto padrão de gráficos úteis para a maioria das cargas de trabalho. Ao personalizar o painel, você pode adicionar gráficos específicos para os requisitos da sua empresa.

Exemplo de cenário

Para mostrar como personalizar o painel, vamos supor que uma organização queira acompanhar o custo estimado dos 25 principais jobs no projeto dela.

Para este cenário, suponha que os jobs tenham as seguintes características:

Escolher métricas

As métricas a seguir são necessárias para estimar o custo de um job, considerando as premissas listadas na seção anterior:

RecursoMétrica relevante
CPU (vCPU por hora) job/total_vcpu_time
Memória (GB por hora) job/total_memory_usage_time
Dados processados durante o embaralhamento (GB) job/total_streaming_data_processed
Uso do Persistent Disk (GB por hora, padrão e SSD) job/total_pd_usage_time

Para mais informações, consulte Preços do Dataflow.

Para saber quais recursos estão disponíveis no Monitoring, consulte Tipos de recursos monitorados.

Escrever uma consulta PromQL

Para consultar métricas do Cloud Monitoring, use a linguagem de consulta do Prometheus (PromQL). Nesta seção, mostramos como escrever uma consulta PromQL para o cenário criando-a com cláusulas menores. Esta seção não pressupõe nenhum conhecimento prévio de PromQL. Para mais informações, consulte PromQL no Cloud Monitoring.

Mapear nomes de métricas para strings do PromQL

Para usar métricas do Monitoring em consultas PromQL, é necessário mapear o nome da métrica para uma string PromQL, da seguinte maneira:

Nome da métricaString PromQL
job/total_vcpu_time dataflow_googleapis_com:job_total_vcpu_time
job/total_memory_usage_time dataflow_googleapis_com:job_total_memory_usage_time
job/total_streaming_data_processed dataflow_googleapis_com:job_total_streaming_data_processed
job/total_pd_usage_time dataflow_googleapis_com:job_total_pd_usage_time

Para mais informações, consulte Como mapear métricas do Cloud Monitoring para PromQL.

Criar a consulta

Para saber o custo estimado, calcule os preços de cada componente com base no valor mais atual de cada métrica. As métricas são amostradas a cada 60 segundos. Para receber o valor mais recente, use uma função de janela de 1 minuto e pegue o valor máximo em cada janela.

  • Para saber o custo estimado de CPU, primeiro converta job/total_vcpu_time de segundos para horas. Multiplique pelo preço da CPU por vCPU por hora.

    # ((vCPU time)[Bucket 1m] / Seconds per hour * vCPU Price)
    max_over_time(dataflow_googleapis_com:job_total_vcpu_time[1m]) / 3600 * CPU_PRICE
    

    Essa fórmula fornece o custo estimado de CPU para todos os jobs no projeto. Para receber o custo estimado de CPU por job, use o operador de agregação sum e agrupe por ID do job.

    sum(
      max_over_time(dataflow_googleapis_com:job_total_vcpu_time[1m]) / 3600 * CPU_PRICE
    ) by (job_id)
    
  • Para receber o custo de memória estimado, converta job/total_memory_usage_time de segundos para horas. Multiplique pelo preço da memória por GB por hora e agrupe por ID do job.

    #((Memory time)[Bucket 1m] / Seconds per hour) * Memory Price
    sum(
      max_over_time(dataflow_googleapis_com:job_total_memory_usage_time[1m]) / 3600 * MEMORY_PRICE
    ) by (job_id)
    
  • Para saber o custo estimado de embaralhamento, converta job/total_streaming_data_processed de bytes para GB. Multiplique pelo preço dos dados processados durante o embaralhamento por GB e agrupe por ID do job.

    # Shuffle Billing. Reported once every 60 seconds, measured in bytes.
    # Formula: (Shuffle Data)[Bucket 1m] / (Bytes in GB) * (Shuffle Price)
    sum(
      max_over_time(
        dataflow_googleapis_com:job_total_streaming_data_processed[1m]
     ) / 1000000000 * SHUFFLE_PRICE
    ) by (job_id)
    
  • Para saber o custo estimado de uso do Persistent Disk, indexe o rótulo storage_type para separar por tipo de disco (padrão ou SSD). Converta cada valor de GB-segundos para GB-horas e agrupe por ID do job.

    # Formula: ((Standard PD time)[Bucket 1m] / Seconds per hour) * Standard PD price
    sum(
      max_over_time(
        dataflow_googleapis_com:job_total_pd_usage_time{storage_type="HDD"}[1m]
      ) / 3600 * STANDARD_PD_PRICE
    ) by (job_id)
    
    # Formula: ((SSD PD time)[Bucket 1m] / Seconds per hour) * SSD PD price
    sum(
      max_over_time(
        dataflow_googleapis_com:job_total_pd_usage_time{storage_type="SSD"}[1m]
      ) / 3600 * SSD_PD_PRICE
    ) by (job_id)
    
  • A soma dos valores anteriores dá o custo estimado por job. Para receber os 25 principais jobs, use um filtro "top-K":

    topk(25,
      # Sum the individual values.
    )
    

Escrever a consulta completa

Confira a consulta completa:

topk(25,
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_vcpu_time[1m]) / 3600 * CPU_PRICE
  )
  by (job_id) +
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_memory_usage_time[1m]) / 3600 * MEMORY_PRICE
  )
  by (job_id) +
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_streaming_data_processed[1m]) / 1000000000 * SHUFFLE_PRICE
  )
  by (job_id) +
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_pd_usage_time{storage_type="HDD"}[1m]) / 3600 * STANDARD_PD_PRICE
  )
  by (job_id) +
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_pd_usage_time{storage_type="SSD"}[1m]) / 3600 * SSD_PD_PRICE
  )
  by (job_id)
)

Substitua as variáveis a seguir por valores da página de preços do Dataflow da sua região.

  • CPU_PRICE: preço da CPU, por vCPU a cada hora
  • MEMORY_PRICE: preço da memória, por GB/hora
  • SHUFFLE_PRICE: preço de embaralhamento, por GB
  • STANDARD_PD_PRICE: preço do disco permanente padrão, por GB/hora
  • SSD_PD_PRICE: preço do disco permanente SSD, por GB/hora

Editar o painel

Se você não criou um painel personalizado para o Dataflow neste projeto, crie um da seguinte maneira:

  1. No console Google Cloud , acesse a página Dataflow > Monitoramento.

    Acessar Monitoring

  2. No menu suspenso Predefinido, clique em Personalizar painel.

  3. Opcional: insira um nome para o painel na caixa Nome da visualização personalizada.

Se você já criou um painel personalizado, siga estas etapas para editar o painel:

  1. No console Google Cloud , acesse a página Dataflow > Monitoramento.

    Acessar Monitoring

  2. No menu suspenso Predefinido, selecione o painel personalizado.

  3. Clique em Editar painel.

Adicionar um gráfico de métricas

Para adicionar um gráfico de métricas ao painel, siga estas etapas:

  1. Clique em Adicionar widget.
  2. No painel Adicionar widget, selecione Métrica.
  3. Na caixa Título do widget, insira um título para o gráfico, como Estimated cost (top 25).
  4. Clique em PROMQL.
  5. Cole a consulta PromQL mostrada anteriormente.
  6. Clique em Executar consulta.
  7. Clique em Aplicar.
  8. Opcional: arraste o gráfico para posicioná-lo no painel.

A seguir