Criar alertas de métricas do Dataproc

É possível criar um alerta do Monitoring que notifica quando um cluster do Dataproc ou uma métrica de job excede 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 de 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 gatilho de 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 alertas.
    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

Nesta seção, você verá um exemplo de alerta para um job enviado ao serviço do Dataproc e um alerta para um job executado como um aplicativo Lighthouse.

Alerta de job do Dataproc de longa duração

O Dataproc emite a métrica dataproc.googleapis.com/job/state, que rastreia há quanto tempo um job está em estados diferentes. Essa métrica é 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 envia notificações quando o estado RUNNING do job excede um limite de duração.

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

Este exemplo usa a Linguagem de consulta do Monitoring (MQL, na sigla em inglês) para criar uma política de alertas. 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 a seguir, o alerta é acionado quando um job está em execução por mais de 30 minutos.

É possível modificar a consulta filtrando por 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 Lighthouse de longa duração

O exemplo anterior mostra um alerta acionado quando um job do Dataproc é executado por mais tempo que a duração especificada. No entanto, 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 métricas do OSS para configurar alertas semelhantes que monitorem o tempo de execução de aplicativos Lighthouse.

Primeiro, algumas informações. O sistema emite métricas de tempo de execução em vários buckets. Por padrão, o Lighthouse mantém 60, 300 e 1.440 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 ambiente de execução entre 0 e 60 minutos.

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

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

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

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

É possível modificar esses limites de bucket padrão transmitindo novos valores para a propriedade de cluster yarn:yarn.resourcemanager.metrics.runtime.buckets durante a criação do cluster do Dataproc. Ao definir limites de buckets personalizados, você também precisa 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 sinalizações:

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

  • metrics overrides: ‑‑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 do aplicativo Lighthouse

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

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

    • Se quiser, 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

Também é possível usar a métrica dataproc.googleapis.com/job/state (consulte Alerta de job do Dataproc de longa duração) para receber alertas quando um job do Dataproc falhar.

Configuração de alerta de vaga com falha

Este exemplo usa a Linguagem de consulta do Monitoring (MQL, na sigla em inglês) para criar uma política de alertas. 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 alertas

No exemplo a seguir, o alerta é acionado quando algum job do Dataproc falha no projeto.

É possível modificar a consulta filtrando por 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 Node ativos. É possível 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 é desviada da capacidade esperada por um tempo maior do que o limite especificado.

As operações a seguir podem causar uma falha temporária nos relatórios de nós do cluster na métrica capacity_deviation. Para evitar alertas de falsos positivos, defina o limite do alerta de métrica para considerar estas operações:

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

  • Ações de inicialização do cluster: são realizadas após o provisionamento de um nó.

  • Atualizações de workers secundários: os workers secundários são adicionados de maneira 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, na sigla em inglês) para criar uma política de alertas.

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 o desvio da capacidade do cluster é diferente de 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. Os incidentes podem ser vistos na página Como monitorar alertas no console do Google Cloud.

Se você tiver definido um mecanismo de notificação na política de alertas, como uma notificação por e-mail ou SMS, o Monitoring enviará uma notificação do incidente.

A seguir