Como criar políticas de alerta

Nesta página, mostramos como criar políticas de alertas com base em métricas para clusters do Google Distributed Cloud. Disponibilizamos 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étricas 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 uma política de exemplo: 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 clusters 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. Opcionalmente, 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 limite para equilibrar o ruído e a importância.

  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
O administrador do controlador não está disponível (essencial) 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 é reiniciado continuamente e pode estar em um status de loop de falha pod-crash-looping.json
O pod não está pronto há 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% (aviso) O uso da memória do contêiner está 85% acima do limite container-memory-usage-high-reaching-limit.json
Uso elevado do 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 da CPU do nó está acima de 80% do total alocável por 5 min node-cpu-usage-high.json
O uso do disco do nó excede 85% (aviso) Menos de 15% é livre por ponto de montagem do disco durante 10 minutos node-disk-usage-high.json
O uso da memória do nó excede 80% (aviso) O uso da memória do nó está acima de 80% do total alocável por 5 min node-memory-usage-high.json
O nó não está pronto há 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 de API excede 20% (crítico) O servidor da API apresenta erros 5xx ou 429 em mais de 20% de todas as solicitações por verbo durante 15m apiserver-error-ratio-high.json
Alteração do líder do ETCD ou falha muito frequente na proposta (aviso) As alterações do líder etcd ou falhas na proposta acontecem com muita frequência etcd-leader-changes-or-proposal-failures-frequent.json
O servidor ETCD não está no quórum (crítico) Não há etcd propostas de servidor comprometidas por cinco minutos. Por isso, elas podem ter perdido o quórum. etcd-server-not-in-quorum.yaml
O armazenamento ETCD excede 90% do limite (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 a documentação Usar o serviço gerenciado para Prometheus no Google Distributed Cloud e as 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.