Criar alertas de métricas do Dataproc

É possível criar um alerta do Monitoring para notificar você quando uma métrica de job ou cluster do Dataproc exceder um limite especificado.

Etapas para criar um alerta

Para criar um alerta, faça o seguinte:

  1. Abra a página Alertas no console do Google Cloud.

  2. Clique em + Criar política para abrir a página Criar política de alertas.

    1. Clique em Selecionar métrica.
    2. Na caixa de entrada "Filtrar por nome do recurso ou da métrica", digite "dataproc" para listar as métricas do Dataproc. Navegue pela hierarquia das métricas do Cloud Dataproc para selecionar uma métrica de cluster, job, lote ou sessão.
    3. Clique em Aplicar.
    4. Clique em Próxima para abrir o painel Configurar acionador do alerta.
    5. Defina um valor limite para acionar o alerta.
    6. Clique em Próxima para abrir o painel Configurar notificações e finalizar alerta.
    7. Defina canais de notificação, documentação e o nome da política de alerta.
    8. Clique em Próxima para analisar a política de alertas.
    9. Clique em Criar política para criar o alerta.

Exemplos de alertas

Esta seção descreve um alerta de exemplo para um job enviado ao serviço do Dataproc e um alerta para uma execução de job como um aplicativo YARN.

Alerta de job de longa duração do Dataproc

O Dataproc emite a métrica dataproc.googleapis.com/job/state, que rastreia por quanto tempo um job está em diferentes estados. Essa métrica pode ser encontrada no Metrics Explorer do console do Google Cloud, no recurso Job do Cloud Dataproc (cloud_dataproc_job). É possível usar essa métrica para configurar um alerta que notifique você quando o estado RUNNING do job exceder um limite de duração.

Configuração do alerta de duração do job

Este exemplo usa a linguagem de consulta do Monitoring (MQL) para criar uma política de alerta (consulte Como criar políticas de alertas do MQL (console)).

fetch cloud_dataproc_job
| metric 'dataproc.googleapis.com/job/state'
| filter metric.state == 'RUNNING'
| group_by [resource.job_id, metric.state], 1m
| condition val() == true()

No exemplo abaixo, o alerta é acionado quando um job está em execução há mais de 30 minutos.

É possível modificar a consulta filtrando o resource.job_id para aplicá-la a um job específico:

fetch cloud_dataproc_job
| metric 'dataproc.googleapis.com/job/state'
| filter (resource.job_id == '1234567890') && (metric.state == 'RUNNING')
| group_by [resource.job_id, metric.state], 1m
| condition val() == true()

Alerta de aplicativo YARN de longa duração

O exemplo anterior mostra um alerta acionado quando um job do Dataproc é executado por mais tempo do que o especificado, mas ele só se aplica a jobs enviados ao serviço do Dataproc pelo console do Google Cloud, pela Google Cloud CLI ou por chamadas diretas à API jobs do Dataproc. Também é possível usar as métricas do OSS para configurar alertas semelhantes que monitoram o tempo de execução dos aplicativos YARN.

Primeiro, algumas informações gerais. O YARN emite métricas de tempo de execução em vários grupos. Por padrão, o YARN mantém 60, 300 e 1440 minutos como limites de bucket e emite quatro métricas: running_0, running_60, running_300 e running_1440:

  • running_0 registra o número de jobs com um tempo de execução entre 0 e 60 minutos.

  • running_60 registra o número de jobs com um tempo de execução entre 60 e 300 minutos.

  • running_300 registra o número de jobs com um tempo de execução entre 300 e 1.440 minutos.

  • running_1440 registra o número de jobs com um tempo de execução maior que 1.440 minutos.

Por exemplo, um job executado por 72 minutos será registrado em running_60, mas não em running_0.

Esses limites de bucket padrão podem ser modificados transmitindo novos valores para a propriedade cluster yarn:yarn.resourcemanager.metrics.runtime.buckets durante a criação do cluster do Dataproc. Ao definir os limites de buckets personalizados, também é necessário definir substituições de métricas. Por exemplo, para especificar limites de bucket de 30, 60 e 90 minutos, o comando gcloud dataproc clusters create precisa incluir as seguintes flags:

  • limites de bucket: ‑‑properties=yarn:yarn.resourcemanager.metrics.runtime.buckets=30,60,90

  • substituições de métricas: ‑‑metric-overrides=yarn:ResourceManager:QueueMetrics:running_0, yarn:ResourceManager:QueueMetrics:running_30,yarn:ResourceManager:QueueMetrics:running_60, yarn:ResourceManager:QueueMetrics:running_90

Exemplo de comando de criação de cluster

gcloud dataproc clusters create test-cluster  \
   --properties ^#^yarn:yarn.resourcemanager.metrics.runtime.buckets=30,60,90  \
   --metric-sources=yarn  \
   --metric-overrides=yarn:ResourceManager:QueueMetrics:running_0,yarn:ResourceManager:QueueMetrics:running_30,yarn:ResourceManager:QueueMetrics:running_60,yarn:ResourceManager:QueueMetrics:running_90

Essas métricas estão listadas no Metrics Explorer do console do Google Cloud, no recurso Instância de VM (gce_instance).

Configuração de alertas de aplicativos YARN

  1. Crie um cluster com os buckets e as métricas necessários ativados .

  2. Crie uma política de alertas que é acionada quando o número de aplicativos em um bucket de métricas do YARN excede um limite especificado.

    • Se preferir, adicione um filtro para alertar sobre clusters que correspondem a um padrão.

    • Configure o limite para acionar o alerta.

Alerta de job do Dataproc com falha

Você também pode usar a métrica dataproc.googleapis.com/job/state (consulte Alerta de job de longa duração do Dataproc), para receber um alerta quando um job do Dataproc falhar.

Falha na configuração do alerta de vagas

Este exemplo usa a linguagem de consulta do Monitoring (MQL) para criar uma política de alerta (consulte Como criar políticas de alertas do MQL (console)).

MQL de alerta
fetch cloud_dataproc_job
| metric 'dataproc.googleapis.com/job/state'
| filter metric.state == 'ERROR'
| group_by [resource.job_id, metric.state], 1m
| condition val() == true()
Configuração do acionador de alerta

No exemplo abaixo, o alerta é acionado quando qualquer job do Dataproc falha no projeto.

É possível modificar a consulta filtrando o resource.job_id para aplicá-la a um job específico:

fetch cloud_dataproc_job
| metric 'dataproc.googleapis.com/job/state'
| filter (resource.job_id == '1234567890') && (metric.state == 'ERROR')
| group_by [resource.job_id, metric.state], 1m
| condition val() == true()

Alerta de desvio de capacidade do cluster

O Dataproc emite a métrica dataproc.googleapis.com/cluster/capacity_deviation, que informa a diferença entre a contagem de nós esperada no cluster e a contagem de nós ativos do YARN. Você pode encontrar essa métrica no Metrics Explorer do console do Google Cloud, no recurso Cluster do Cloud Dataproc. É possível usar essa métrica para criar um alerta que notifica você quando a capacidade do cluster se desvia da capacidade esperada por mais tempo do que uma duração de limite especificado.

As operações a seguir podem causar um subregistro temporário de nós de cluster na métrica capacity_deviation. Para evitar alertas falsos positivos, defina o limite de alerta de métrica para considerar estas operações:

  • Criação e atualizações de cluster:a métrica capacity_deviation não é transmitida durante as operações de criação ou atualização de cluster.

  • Ações de inicialização de cluster:são realizadas depois que um nó é provisionado.

  • Atualizações de workers secundários:os workers secundários são adicionados de forma assíncrona, após a conclusão da operação de atualização.

Configuração do alerta de desvio de capacidade

Este exemplo usa a linguagem de consulta do Monitoring (MQL) para criar uma política de alerta.

fetch cloud_dataproc_cluster
| metric 'dataproc.googleapis.com/cluster/capacity_deviation'
| every 1m
| condition val() <> 0 '1'

No próximo exemplo, o alerta é acionado quando a variação da capacidade do cluster não é zero por mais de 30 minutos.

Ver alertas

Quando um alerta é acionado por uma condição de limite de métrica, o Monitoring cria um incidente e um evento correspondente. Você pode conferir os incidentes na página Monitoring Alerting no console do Google Cloud.

O Monitoring também envia uma notificação do incidente se tiver sido definido na política de alerta algum mecanismo de notificação, como notificações por e-mail ou por SMS.

A seguir