Creazione di criteri di avviso

Questa pagina mostra come creare criteri di avviso per i cluster Anthos sui cluster Bare Metal.

Prima di iniziare

Devi disporre delle seguenti autorizzazioni per creare criteri di avviso:

  • monitoring.alertPolicies.create
  • monitoring.alertPolicies.delete
  • monitoring.alertPolicies.update

Disponi delle seguenti autorizzazioni se disponi di uno dei seguenti ruoli:

  • monitoring.alertPolicyEditor
  • monitoring.editor
  • Editor progetto
  • Proprietario progetto

Per controllare i ruoli, vai alla pagina IAM nella console Google Cloud.

Creazione di un criterio: Anthos sul server API del cluster baremetal non disponibile

In questo esercizio creerai un criterio di avviso per i server API Kubernetes dei cluster. Una volta impostato questo criterio, puoi pianificare la notifica quando il server API di un cluster non è disponibile.

  1. Scarica il file di configurazione del criterio: apiserver-unavailable.json

  2. Crea il criterio:

    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. In Google Cloud Console, vai alla pagina Monitoring.

      Vai a Monitoring

    2. A sinistra, seleziona Avvisi.

    3. Nella sezione 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 nuovo criterio. Nella sezione Condizioni, puoi vedere 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 un criterio, segui gli stessi passaggi utilizzati nell'allenamento 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.12/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
Il server Anthos sull'API del cluster baremetal non è disponibile (Critica) Il server API non è attivo o il tempo di attività è inferiore al 99,99% al minuto apiserver-unavailable.json
Pianificazione del cluster Anthos su Baremetal non disponibile (critical) Lo scheduler non è attivo o il tempo di attività è inferiore al 99,99% al minuto scheduler-unavailable.json
Anthos su gestore di baremetal non disponibile (importante) Il gestore del controller è scomparso dal rilevamento delle metriche target controller-manager-unavailable.json

Sistema Kubernetes

Nome avviso Descrizione Definizione dei criteri di avviso in Cloud Monitoring
Anthos su loop di arresti anomali di pod baremetal (critical) Il pod è stato riavviato e potrebbe essere in stato di arresto anomalo pod-crash-looping.json
L'utilizzo della memoria di Anthos su Baremetal Container 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 di container baremetal di Anthos supera l'80% (avviso) L'utilizzo della CPU del container supera l'80% del limite container-cpu-usage-high-reaching-limit.json
Anthos su pod baremetal non pronto per più di un'ora (criterio) Il pod è in uno stato non pronto per più di un'ora pod-non-ready-1h.json
Anthos su volume permanente di alta frequenza di utilizzo permanente (crittografico) Il volume permanente rivendicato dovrebbe essere riempito persistente-volume-uso-alto.json
Il nodo Anthos su Baremetal non è pronto per più di un'ora (criterio) Il nodo è in uno stato non pronto per più di un'ora nodo-non-pronta-1h.json
L'utilizzo della CPU di Anthos su nodo baremetal supera l'80% (crittografico) Utilizzo CPU nodo superiore all'80% node-cpu-usage-high.json
L'utilizzo della memoria del nodo baremetal da parte di Anthos supera l'80% (valore critico) Utilizzo memoria nodo superiore all'80% node-memory-usage-high.json
L'utilizzo di Anthos sul disco del nodo baremetal supera l'80% (crittografico) 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 del numero di errori del server dell'API Anthos su Baremetal supera il 10% (Critico) Il server API restituisce errori per oltre il 10% delle richieste api-server-error-ratio-10-percent.json
Il rapporto del numero di errori del server dell'API Anthos su Baremetal supera il 5% (avviso) Il server API restituisce errori per oltre il 5% delle richieste api-server-error-ratio-5-percent.json
Anthos su leader baremetal eccd cambia troppo spesso (frequente) Il leader etcd cambia troppo spesso etcd-leader-change-too-frequent.json
Anthos su proposte bardet e così via non riuscite (frequente) Le proposte di etcd non vanno a buon fine ecc.-proposta-non-corretta-.json
Il server Anthos su baremetal etcd non è in quorum (crittografico) Il server etcd non è in quorum etcd-server-not-in-quorum.json
Anthos su spazio di archiviazione baremetal eccd supera il limite del 90% (crittografico) L'utilizzo dello spazio di archiviazione di 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 diversi tipi di canali di notifica. Ad esempio, puoi ricevere una notifica via email, su un canale Slack o su un'app per dispositivi mobili. Puoi scegliere i canali più adatti alle tue esigenze.

Per istruzioni su come configurare i canali di notifica, consulta la pagina Gestire i canali di notifica.