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.
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 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:
Para fazer o download do arquivo de configuração, clique no link na coluna da direita.
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.