Creazione di criteri di avviso

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

Prima di iniziare

Per creare criteri di avviso devi disporre delle autorizzazioni seguenti:

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

Hai queste autorizzazioni se hai uno dei seguenti ruoli:

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

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

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

In questo esercizio creerai un criterio di avviso per i server API Kubernetes dei cluster. Se questo criterio è attivo, 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 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. Nella console Google Cloud, vai alla pagina Monitoring.

      Vai a Monitoring

    2. A sinistra, seleziona Avvisi.

    3. In Criteri puoi vedere un elenco dei tuoi criteri di avviso.

      Nell'elenco, seleziona Anthos su server API cluster baremetal non disponibile (critico) per visualizzare i dettagli del nuovo criterio. In Condizioni, puoi visualizzare una descrizione delle norme. 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'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.15/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 baremetal cluster non disponibile (critico) Il server API non è attivo o il tempo di attività è inferiore al 99,99% al minuto apiserver-unavailable.json
Scheduler di Anthos on baremetal non disponibile (critico) Lo scheduler non è attivo o l'uptime è inferiore al 99,99% al minuto scheduler-unavailable.json
Gestione 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 arresto anomalo di Anthos on baretal pod (critico) Il pod è stato riavviato e potrebbe trovarsi in uno stato di loop di arresto anomalo pod-crash-looping.json
L'utilizzo della memoria di Anthos on 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 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 uno stato non pronto per più di un'ora pod-not-ready-1h.json
Utilizzo elevato di Anthos on volume permanente (critico) È previsto il riempimento del volume permanente rivendicato persistent-volume-usage-high.json
Anthos on baretal nodo non pronto per più di un'ora (critico) Il nodo è in uno stato non pronto per più di un'ora node-not-ready-1h.json
L'utilizzo della CPU del nodo Anthos on baretal supera l'80% (critico) L'utilizzo della CPU dei nodi è superiore all'80% node-cpu-usage-high.json
L'utilizzo della memoria di Anthos on baretal supera l'80% (critico) L'utilizzo della memoria dei nodi è superiore all'80% node-memory-usage-high.json
L'utilizzo del disco di Anthos on baretal supera l'80% (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 API Anthos on 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 di numero di errori del server API Anthos on baremetal supera il 5% (avviso) Il server API restituisce errori per più del 5% delle richieste api-server-error-ratio-5-percent.json
Il leader di Anthos on baremetal etcd cambia troppo spesso (critico) La variante principale etcd cambia troppo spesso etcd-leader-changes-too-frequent.json
Le proposte Anthos on baremetal 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 è al quorum (critico) Il server etcd non è al quorum etcd-server-not-in-quorum.json
Lo spazio di archiviazione di Anthos on baretal etcd supera il limite del 90% (critico) 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 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, consulta Gestione dei canali di notifica.