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.
Faça o download do arquivo 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 arquivo de configuração que você acabou de receber.
Veja suas políticas de alertas:
Console
No Console do Google Cloud, acesse a página Monitoring.
À esquerda, selecione Alertas.
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:
Para fazer o download do arquivo de configuração, clique no link na coluna da direita.
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.
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.