Como criar políticas de alerta

Nesta página, mostramos como criar políticas de alertas para clusters do Anthos em clusters 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. Por 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. 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 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.

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 está em um status de loop de falha pod-crash-looping.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
Alto uso 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

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.