Como criar políticas de alerta

Nesta página, mostramos como criar políticas de alertas para clusters do GKE em Bare Metal.

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

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

Como criar uma política: servidor da API do Anthos em bare metal 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 do Anthos em bare metal 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 on baremetal cluster API server uptime is absent
      Anthos on baremetal cluster API server uptime is less than 99.99% per minute
      

    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 resource.labels.namespace_name = "kube-system"
          AND metric.type = "kubernetes.io/anthos/container/uptime" AND resource.label."container_name"=monitoring.regex.full_match("kube-apiserver")
        trigger:
          count: 1
      displayName: Anthos on baremetal cluster API server uptime is absent
      name: projects/…/alertPolicies/12404845535868002666/conditions/12404845535868003603
    - conditionThreshold:
        aggregations:
        - alignmentPeriod: 120s
          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
        comparison: COMPARISON_LT
        duration: 300s
        filter: resource.type = "k8s_container" AND resource.labels.namespace_name = "kube-system"
          AND metric.type = "kubernetes.io/anthos/container/uptime" AND resource.label."container_name"=monitoring.regex.full_match("kube-apiserver")
        thresholdValue: 119.0
        trigger:
          count: 1
      displayName: Anthos on baremetal cluster API server uptime is less than 99.99% per
        minute
      name: projects/…/alertPolicies/12404845535868002666/conditions/12404845535868004540
    creationRecord:
      mutateTime: 
      mutatedBy: 
    displayName: Anthos on baremetal cluster API server unavailable (critical)
    enabled: true
    mutationRecord:
      mutateTime: 
      mutatedBy: 
    name: projects/…/alertPolicies/12404845535868002666
    

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. 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" "scheduler-unavailable.json" "controller-manager-unavailable.json" "pod-crash-looping.json" "container-memory-usage-high-reaching-limit.json"
"container-cpu-usage-high-reaching-limit.json" "pod-not-ready-1h.json" "persistent-volume-usage-high.json" "node-not-ready-1h.json" "node-cpu-usage-high.json" "node-memory-usage-high.json"
"node-disk-usage-high.json" "api-server-error-ratio-10-percent.json" "api-server-error-ratio-5-percent.json" "etcd-leader-changes-too-frequent.json" "etcd-proposals-failed-too-frequent.json"
"etcd-server-not-in-quorum.json" "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/1.14/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 da API do Anthos em bare metal indisponível (crítico) O servidor da API não está ativo ou o tempo de atividade é inferior a 99,99% por minuto apiserver-unavailable.json
Programador de clusters do Anthos em bare metal indisponível (crítico) O programador não está ativo ou o tempo de atividade é inferior a 99,99% por minuto scheduler-unavailable.json
Gerenciador do controlador do Anthos em bare metal indisponível (crítico) O gerenciador do controlador desapareceu da descoberta do alvo de métricas controller-manager-unavailable.json

Sistema Kubernetes

Nome do alerta Descrição Definição da política de alertas no Cloud Monitoring
Ciclo de falha do pod do Anthos em bare metal (crítico) O pod foi reiniciado e pode estar com um status de loop de falha pod-crash-looping.json
O uso da memória do contêiner do Anthos em bare metal 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
O uso de CPU do contêiner do Anthos em bare metal excede 80% (aviso) O uso da CPU do contêiner está 80% acima do limite container-cpu-usage-high-reaching-limit.json
O pod do Anthos em bare metal está há mais de uma hora em um estado não pronto (crítico) O pod leva mais de uma hora para ficar pronto pod-not-ready-1h.json
Uso elevado do volume permanente do Anthos em bare metal (crítico) Espera-se que o volume permanente requisitado seja preenchido persistent-volume-usage-high.json
O nó do Anthos em bare metal está há mais de uma hora em um estado não pronto (crítico) O nó leva mais de uma hora para ficar pronto node-not-ready-1h.json
O uso da CPU do nó do Anthos em bare metal excede 80% (crítico) O uso da CPU do nó é superior a 80% node-cpu-usage-high.json
O uso da memória do nó do Anthos em bare metal excede 80% (crítico) O uso da memória do nó é superior a 80% node-memory-usage-high.json
O uso do disco de nós do Anthos em bare metal excede 80% (crítico) O uso do disco de nós é superior a 80% node-disk-usage-high.json

Desempenho do Kubernetes

Nome do alerta Descrição Definição da política de alertas no Cloud Monitoring
A proporção de erros de servidor da API do Anthos em bare metal excede 10% (crítico) O servidor da API está retornando erros para mais de 10% das solicitações api-server-error-ratio-10-percent.json
A proporção de erros de servidor da API do Anthos em bare metal excede 5% (aviso) O servidor da API está retornando erros para mais de 5% das solicitações api-server-error-ratio-5-percent.json
O líder do Anthos em baremetal etcd muda com muita frequência (crítico) A variante etcd é alterada com muita frequência etcd-leader-changes-too-frequent.json
As propostas do etcd do Anthos em bare metal estão falhando com muita frequência (crítico) As propostas etcd estão falhando com muita frequência etcd-proposals-failed-too-frequent.json
O servidor do etcd do Anthos em bare metal não está no quórum (crítico) O servidor etcd não está no quórum etcd-server-not-in-quorum.json
O armazenamento etcd do Anthos em bare metal excede 90 por cento do limite (crítico) O uso do armazenamento etcd é superior a 90% do limite etcd-storage-usage-high.json

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.