Criar políticas de alerta

Esta página mostra como criar políticas de alerta para clusters do Google Distributed Cloud.

Antes de começar

Tem de ter as seguintes autorizações para criar políticas de alerta:

  • monitoring.alertPolicies.create
  • monitoring.alertPolicies.delete
  • monitoring.alertPolicies.update

Tem estas autorizações se tiver uma das seguintes funções:

  • monitoring.alertPolicyEditor
  • monitoring.editor
  • Editor de projetos
  • Proprietário do projeto

Para criar uma política de alertas baseada em registos através da Google Cloud CLI, também tem de ter a função serviceusage.serviceUsageConsumer.

Para verificar as suas funções, aceda à página IAM na Google Cloud consola.

Criar uma política de exemplo: servidor de API indisponível

Neste exercício, vai criar uma política de alerta para servidores da API Kubernetes. Com esta política em vigor, pode fazer com que receba uma notificação sempre que o servidor da API de um cluster estiver indisponível.

  1. Transfira o ficheiro de configuração da política: apiserver-unavailable.json.

  2. Crie a política:

    gcloud alpha monitoring policies create --policy-from-file=POLICY_CONFIG
    

    Substitua POLICY_CONFIG pelo caminho do ficheiro de configuração que acabou de transferir.

  3. Veja as suas políticas de alerta:

    Consola

    1. Na Google Cloud consola, aceda à página Monitorização.

      Aceder a Monitorização

    2. No lado esquerdo, selecione Alertas.

    3. Em Políticas, pode ver uma lista das suas políticas de alerta.

      Na lista, selecione Servidor de API do cluster do Anthos indisponível (crítico) para ver detalhes sobre a sua nova política. Em Condições, pode ver uma descrição da política. Por exemplo:

      Policy violates when ANY condition is met
      Anthos cluster API server uptime is absent for 5m
      

    gcloud

    gcloud alpha monitoring policies list

    O resultado mostra informações detalhadas sobre a política. Por exemplo:

    combiner: OR
    conditions:
    - conditionAbsent:
        aggregations:
        - alignmentPeriod: 60s
          crossSeriesReducer: REDUCE_MEAN
          groupByFields:
          - resource.label.project_id
          - resource.label.location
          - resource.label.cluster_name
          - resource.label.namespace_name
          - resource.label.container_name
          - resource.label.pod_name
          perSeriesAligner: ALIGN_MAX
        duration: 300s
        filter: resource.type = "k8s_container" AND metric.type = "kubernetes.io/anthos/container/uptime"
          AND resource.label."container_name"=monitoring.regex.full_match("kube-apiserver")
        trigger:
          count: 1
      displayName: Anthos cluster API server uptime is absent for 5m
      name: projects/…/alertPolicies/…/conditions/…
    displayName: Anthos cluster API server unavailable (critical)
    enabled: true
    mutationRecord:
      mutateTime: 
      mutatedBy: 
    name: projects/…/alertPolicies/…
    

Crie políticas de alerta adicionais

Esta secção fornece descrições e ficheiros de configuração para um conjunto de políticas de alerta recomendadas.

Para criar uma política, siga os mesmos passos que usou no exercício anterior:

  1. Clique no link na coluna do lado direito para transferir o ficheiro de configuração.

  2. Opcionalmente, ajuste as condições para se adaptarem melhor às suas necessidades específicas. Por exemplo, pode adicionar filtros adicionais para um subconjunto de clusters ou ajustar os valores de limite para equilibrar a variância e a criticidade.

  3. Execute gcloud alpha monitoring policies create para criar a política.

Disponibilidade dos componentes do plano de controlo

Nome do alerta Descrição Definição da política de alertas no Cloud Monitoring
Servidor da API indisponível (crítico) A métrica de tempo de atividade do servidor da API não está disponível apiserver-unavailable.json
Agendador indisponível (crítico) A métrica de tempo de atividade do programador não está disponível scheduler-unavailable.json
O gestor de comandos está indisponível (crítico) A métrica de tempo de atividade do gestor de controladores não está disponível controller-manager-unavailable.json

Sistema Kubernetes

Nome do alerta Descrição Definição da política de alertas no Cloud Monitoring
Ciclo de falhas de sistema do agrupamento (aviso) O pod continua a reiniciar e pode estar num estado de loop de falhas pod-crash-looping.json
O agrupamento não está pronto durante mais de uma hora (crítico) O agrupamento está num estado não pronto há mais de uma hora pod-not-ready-1h.json
A utilização da CPU do contentor excede 80 por cento (aviso) A utilização da CPU do contentor é superior a 80% do limite container-cpu-usage-high-reaching-limit.json
A utilização de memória do contentor excede 85 por cento (aviso) A utilização de memória do contentor está acima de 85% do limite container-memory-usage-high-reaching-limit.json
Utilização elevada do volume persistente (crítico) O volume persistente reivindicado tem menos de 3% de espaço livre persistent-volume-usage-high.json
A utilização da CPU do nó excede 80 por cento (aviso) A utilização da CPU do nó é superior a 80% do total alocável durante 5 minutos node-cpu-usage-high.json
A utilização do disco do nó excede 85% (aviso) Menos de 15% está livre por ponto de montagem do disco durante 10 minutos node-disk-usage-high.json
A utilização de memória do nó excede 80 por cento (aviso) A utilização de memória do nó é superior a 80% do total alocável durante 5 minutos node-memory-usage-high.json
O nó não está pronto há mais de uma hora (crítico) O nó está num estado não pronto há mais de uma hora node-not-ready-1h.json

Desempenho do Kubernetes

Nome do alerta Descrição Definição da política de alertas no Cloud Monitoring
A taxa de erros do servidor da API excede 20% (crítico) O servidor da API devolve erros 5xx ou 429 em mais de 20% de todos os pedidos por verbo durante 15 minutos apiserver-error-ratio-high.json
A alteração do líder do ETCD ou a falha da proposta é demasiado frequente (aviso) O líder do grupo etcd muda ou as falhas de propostas ocorrem com demasiada frequência etcd-leader-changes-or-proposal-failures-frequent.json
O servidor ETCD não está em quorum (crítico) Nenhuma proposta de servidor etcd confirmada durante 5 minutos, pelo que podem ter perdido o quórum etcd-server-not-in-quorum.yaml
O armazenamento ETCD excede o limite de 90 por cento (aviso) A utilização de armazenamento de etcd é superior a 90% do limite etcd-storage-usage-high.json

Políticas de alerta com PromQL

As consultas nas políticas de alerta também podem ser expressas em PromQL em vez de MQL. Por exemplo, a versão PromQL da política API server error ratio exceeds 20 percent (critical) está disponível para transferência: apiserver-error-ratio-high-promql.json.

Para mais informações, consulte a documentação Usar o serviço gerido para Prometheus do Google Distributed Cloud e a documentação Políticas de alerta baseadas em PromQL do Cloud Monitoring.

Receber notificações

Depois de criar uma política de alerta, pode definir um ou mais canais de notificação para a política. Existem vários tipos de canais de notificação. Por exemplo, pode receber uma notificação por email, num canal do Slack ou numa app para dispositivos móveis. Pode escolher os canais que se adequam às suas necessidades.

Para ver instruções sobre como configurar canais de notificação, consulte o artigo Gerir canais de notificação.