Como criar políticas de alerta

Nesta página, mostramos como criar políticas de alertas com base em métricas para clusters do GKE em bare metal. Fornecemos vários exemplos para download para ajudar você a configurar políticas de alertas para cenários comuns. Para mais informações sobre políticas de alertas com base em métricas, consulte Criar políticas de alertas de limite de métrica na documentação de observabilidade do Google Cloud.

Antes de começar

Para criar políticas de alertas, é necessário ter as seguintes permissões:

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

Você terá essas permissões se tiver um dos seguintes papéis:

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

Se você quiser criar políticas de alertas com base em registros usando a Google Cloud CLI, também será necessário ter o papel serviceusage.serviceUsageConsumer. Para instruções sobre como configurar políticas de alertas com base em registros, consulte Configurar alertas com base em registros na documentação de observabilidade do Google Cloud.

Para verificar seus papéis, acesse a página do IAM no Console do Google Cloud.

Como criar um exemplo de política: "Servidor de API indisponível"

Neste exercício, você cria uma política de alertas para os servidores da API Kubernetes dos clusters. Com essa política em vigor, é possível ser notificado sempre que o servidor da API de um cluster ficar inativo.

  1. Faça o download do arquivo 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 arquivo de configuração que você acabou de receber.

  3. Veja suas políticas de alertas:

    Console

    1. No Console do Google Cloud, acesse a página Monitoring.

      Acessar Monitoring

    2. À esquerda, selecione Alertas.

    3. Em Políticas, é possível ver uma lista das suas políticas de alertas.

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

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

    gcloud

    gcloud alpha monitoring policies list

    A resposta mostra informações detalhadas sobre a política. 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/…
    

Como criar outras políticas de alertas

Nesta seção, fornecemos descrições e arquivos de configuração para um conjunto de políticas de alertas recomendadas.

Para criar uma política, siga as mesmas etapas usadas no exercício anterior:

  1. Para fazer o download do arquivo de configuração, clique no link na coluna da direita.

  2. Se preferir, ajuste as condições para atender melhor às suas necessidades específicas. Por exemplo, é possível adicionar mais filtros para um subconjunto de clusters ou ajustar os valores do limite para equilibrar entre ruído e crítico.

  3. Para criar a política, execute gcloud alpha monitoring policies create.

É possível fazer o download e instalar todos os exemplos de política de alertas 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/anthos/clusters/docs/bare-metal/latest/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 controle

Nome do alerta Descrição Definição da política de alertas no Cloud Monitoring
Servidor de API indisponível (crítico) A métrica de tempo de atividade do servidor de API não está disponível apiserver-unavailable.json
Programador indisponível (crítico) A métrica de tempo de atividade do programador não está disponível scheduler-unavailable.json
Gerenciador indisponível (crítico) A métrica de tempo de atividade do gerenciador do controlador 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
Loop de falha do pod (aviso) O pod continua reiniciando e pode estar em um status de loop de falha pod-crash-looping.json
O pod não está pronto por mais de uma hora (crítico) O pod leva mais de uma hora para ficar pronto pod-not-ready-1h.json
O uso da CPU do contêiner excede 80% (aviso) O uso da CPU do contêiner está 80% acima do limite container-cpu-usage-high-reaching-limit.json
O uso da memória do contêiner excede 85 por cento (aviso) O uso da memória do contêiner está 85% acima do limite container-memory-usage-high-reaching-limit.json
Uso elevado de volume permanente (crítico) O volume permanente reivindicado tem menos de 3% de espaço livre persistent-volume-usage-high.json
O uso da CPU do nó excede 80% (aviso) O uso de CPU do nó é mais de 80% do total alocável por 5 min node-cpu-usage-high.json
O uso do disco do nó excede 85 por cento (aviso) Menos de 15% é livre por ponto de montagem no disco por 10 minutos. node-disk-usage-high.json
O uso da memória do nó excede 80% (aviso) O uso de memória do nó é mais de 80% do total alocável por 5 min node-memory-usage-high.json
O nó não está pronto por mais de uma hora (crítico) O nó leva mais de uma hora para ficar pronto node-not-ready-1h.json

Desempenho do Kubernetes

Nome do alerta Descrição Definição da política de alertas no Cloud Monitoring
A proporção de erros do servidor da API excede 20% (crítico) O servidor da API gera erros 5xx ou 429 em mais de 20% de todas as solicitações por verbo por 15 min apiserver-error-ratio-high.json
Alteração no líder do ETCD ou falha na proposta com muita frequência (aviso) As mudanças do líder etcd ou falhas na proposta ocorrem com muita frequência etcd-leader-changes-or-proposal-failures-frequent.json
O servidor ETCD não está no quórum (crítico) Nenhuma proposta de servidor etcd confirmada por cinco minutos. Talvez ela tenha perdido quórum etcd-server-not-in-quorum.yaml
O armazenamento ETCD excede o limite de 90% (aviso) O uso do armazenamento etcd é superior a 90% do limite etcd-storage-usage-high.json

Políticas de alertas com PromQL

As consultas nas políticas de alertas 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 download: apiserver-error-ratio-high-promql.json.

Para mais informações, consulte Usar o serviço gerenciado para Prometheus da documentação do GKE em Bare Metal e Políticas de alertas com PromQL para a documentação do Cloud Monitoring.

Como receber notificações

Depois de criar uma política de alertas, é possível definir um ou mais canais de notificação para essa política. Há vários tipos de canais de notificação. Por exemplo, é possível ser notificado por e-mail, um canal do Slack ou um app para dispositivos móveis. Você pode escolher os canais mais adequados.

Para instruções sobre como configurar canais de notificação, consulte Como gerenciar canais de notificação.