Criar políticas de alerta

Esta página mostra como criar políticas de alerta baseadas em métricas para clusters do Google Distributed Cloud. Disponibilizámos vários exemplos transferíveis para ajudar a configurar políticas de alerta para cenários comuns. Para mais informações acerca das políticas de alerta baseadas em métricas, consulte o artigo Crie políticas de alerta de limite de métricas na documentação do Google Cloud Observability.

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 projeto
  • Proprietário do projeto

Se quiser criar políticas de alerta baseadas em registos através da CLI Google Cloud, também tem de ter a função serviceusage.serviceUsageConsumerroles/logging.configWriterserviceusage.serviceUsageConsumer. Para obter instruções sobre como configurar políticas de alertas baseadas em registos, consulte o artigo Configure alertas baseados em registos na documentação do Google Cloud Observability.

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 alertas para servidores da API Kubernetes de clusters. Com esta política em vigor, pode fazer os preparativos para receber 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. Para transferir o ficheiro de configuração, clique no link na coluna da direita.

  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. Para criar a política, execute gcloud alpha monitoring policies create.

Pode transferir e instalar todos os exemplos de políticas de alerta descritos neste documento com o seguinte script:

# 1. Create a directory named alert_samples:

mkdir alert_samples && cd alert_samples
declare -a alerts=("apiserver-unavailable.json" "controller-manager-unavailable.json" "scheduler-unavailable.json" \
  "pod-crash-looping.json" "pod-not-ready-1h.json" "container-cpu-usage-high-reaching-limit.json" \
  "container-memory-usage-high-reaching-limit.json" "persistent-volume-usage-high.json" "node-cpu-usage-high.json" \
  "node-disk-usage-high.json" "node-memory-usage-high.json" "node-not-ready-1h.json" "apiserver-error-ratio-high.json" \
  "etcd-leader-changes-or-proposal-failures-frequent.json" "etcd-server-not-in-quorum.yaml" "etcd-storage-usage-high.json")

# 2. Download all alert samples into the alert_samples/ directory:

for x in "${alerts[@]}"
do
  wget https://cloud.google.com/kubernetes-engine/distributed-cloud/bare-metal/docs/samples/${x}
done

# 3. (optional) Uncomment and provide your project ID to set the default project
# for gcloud commands:

# gcloud config set project <PROJECT_ID>

# 4. Create alert policies for each of the downloaded samples:

for x in "${alerts[@]}"
do
  gcloud alpha monitoring policies create --policy-from-file=${x}
done

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 o artigo Use o serviço gerido para Prometheus na documentação do Google Distributed Cloud e o artigo Políticas de alerta com PromQL na documentação 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.