Questa pagina mostra come creare criteri di avviso per i cluster GKE su Bare Metal.
Prima di iniziare
Devi disporre delle autorizzazioni seguenti per creare criteri di avviso:
monitoring.alertPolicies.create
monitoring.alertPolicies.delete
monitoring.alertPolicies.update
Disponi di queste autorizzazioni se disponi di uno dei seguenti ruoli:
monitoring.alertPolicyEditor
monitoring.editor
- Editor progetto
- Proprietario progetto
Per verificare i tuoi ruoli, vai alla pagina IAM nella console Google Cloud.
Creazione di un criterio: il server API Anthos on baretal cluster non è disponibile
In questo esercizio creerai un criterio di avviso per i server API Kubernetes dei cluster. Con questo criterio, puoi scegliere di ricevere una notifica ogni volta che il server API di un cluster non è disponibile.
Scarica il file di configurazione dei criteri: apiserver-unavailable.json
Crea la norma:
gcloud alpha monitoring policies create --policy-from-file=POLICY_CONFIG
Sostituisci POLICY_CONFIG con il percorso del file di configurazione appena scaricato.
Visualizza i criteri di avviso:
Console
Nella console Google Cloud, vai alla pagina Monitoring.
A sinistra, seleziona Avvisi.
In Criteri puoi visualizzare un elenco dei tuoi criteri di avviso.
Nell'elenco, seleziona Anthos on baremetal cluster API server unavailable (critical) per visualizzare i dettagli del tuo nuovo criterio. In Condizioni, puoi visualizzare una descrizione del criterio. Ad esempio:
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
L'output mostra informazioni dettagliate sul criterio. Ad esempio:
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
Creazione di criteri di avviso aggiuntivi
Questa sezione fornisce descrizioni e file di configurazione per un insieme di criteri di avviso consigliati.
Per creare una norma, segui la stessa procedura utilizzata nell'esercizio precedente:
Per scaricare il file di configurazione, fai clic sul link nella colonna a destra.
Per creare il criterio, esegui
gcloud alpha monitoring policies create
.
Puoi scaricare e installare tutti gli esempi di criteri di avviso descritti in questo documento con il seguente 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
Disponibilità dei componenti del piano di controllo
Nome avviso | Descrizione | Definizione dei criteri di avviso in Cloud Monitoring |
---|---|---|
Server API Anthos on baretal non disponibile (critico) | Il server API non è attivo o l'uptime è inferiore al 99,99% al minuto | apiserver-unavailable.json |
Scheduler di cluster Anthos on baretal non disponibile (critico) | Lo scheduler non è attivo o l'uptime è inferiore al 99,99% al minuto | scheduler-unavailable.json |
Gestore controller Anthos on baretal non disponibile (critico) | Il gestore del controller è scomparso dal rilevamento della destinazione delle metriche | controller-manager-unavailable.json |
sistema Kubernetes
Nome avviso | Descrizione | Definizione dei criteri di avviso in Cloud Monitoring |
---|---|---|
Loop degli arresti anomali dei pod Anthos on baretal (critico) | Pod è stato riavviato e potrebbe essere in uno stato di loop di arresto anomalo | pod-crash-looping.json |
L'utilizzo della memoria del container Anthos on baretal supera l'85% (avviso) | L'utilizzo della memoria del container supera l'85% del limite | container-memory-usage-high-reaching-limit.json |
L'utilizzo della CPU del container Anthos on baretal supera l'80% (avviso) | L'utilizzo della CPU del container supera l'80% del limite | container-cpu-usage-high-reaching-limit.json |
Anthos on baretal pod non pronto per più di un'ora (critico) | Il pod è in stato non pronto per più di un'ora | pod-not-ready-1h.json |
Utilizzo elevato di volumi permanenti Anthos on baretal (critico) | Si prevede che il volume permanente richiesto verrà esaurito | persistent-volume-usage-high.json |
Anthos on baretal nodo non pronto per più di un'ora (critico) | Il nodo è in uno stato non pronto da più di un'ora | node-not-ready-1h.json |
L'utilizzo della CPU del nodo Anthos on baretal supera l'80% (valore critico) | L'utilizzo della CPU dei nodi è superiore all'80% | node-cpu-usage-high.json |
L'utilizzo della memoria dei nodi Anthos on baretal supera l'80% (valore critico) | L'utilizzo della memoria dei nodi è superiore all'80% | node-memory-usage-high.json |
L'utilizzo del disco sui nodi Anthos on baretal supera l'80% (valore critico) | L'utilizzo del disco del nodo è superiore all'80% | node-disk-usage-high.json |
Prestazioni di Kubernetes
Nome avviso | Descrizione | Definizione dei criteri di avviso in Cloud Monitoring |
---|---|---|
Il rapporto di conteggio degli errori del server dell'API Anthos on baretal supera il 10% (valore critico) | Il server API restituisce errori per oltre il 10% delle richieste | api-server-error-ratio-10-percent.json |
Il rapporto di conteggio degli errori del server API Anthos on baretal supera il 5% (avviso) | Il server API restituisce errori per oltre il 5% delle richieste | api-server-error-ratio-5-percent.json |
La variante leader Anthos on baretal etcd cambia troppo spesso (critica) | La variante leader etcd cambia troppo spesso |
etcd-leader-changes-too-frequent.json |
Le proposte Anthos on baretal etcd hanno avuto esito negativo troppo spesso (critici) | Le proposte etcd presentano errori troppo frequenti |
etcd-proposals-failed-too-frequent.json |
Il server Anthos on baretal etcd non è in quorum (critico) | Il server etcd non è in quorum |
etcd-server-not-in-quorum.json |
Lo spazio di archiviazione di Anthos on baretal supera il 90% (valore critico) | Lo spazio di archiviazione utilizzato da etcd supera il 90% del limite |
etcd-storage-usage-high.json |
Ricevere notifiche
Dopo aver creato un criterio di avviso, puoi definire uno o più canali di notifica per il criterio. Esistono vari tipi di canali di notifica. Ad esempio, puoi ricevere notifiche via email, tramite un canale Slack o un'app mobile. Puoi scegliere i canali più adatti alle tue esigenze.
Per istruzioni su come configurare i canali di notifica, vedi Gestione dei canali di notifica.