Creazione di criteri di avviso

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.

  1. Scarica il file di configurazione dei criteri: apiserver-unavailable.json

  2. 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.

  3. Visualizza i criteri di avviso:

    Console

    1. Nella console Google Cloud, vai alla pagina Monitoring.

      Vai a Monitoring

    2. A sinistra, seleziona Avvisi.

    3. 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:

  1. Per scaricare il file di configurazione, fai clic sul link nella colonna a destra.

  2. 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.