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.serviceUsageConsumer
roles/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.
Transfira o ficheiro de configuração da política: apiserver-unavailable.json
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.
Veja as suas políticas de alerta:
Consola
Na Google Cloud consola, aceda à página Monitorização.
No lado esquerdo, selecione Alertas.
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:
Para transferir o ficheiro de configuração, clique no link na coluna da direita.
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.
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.