Créer des règles d'alerte

Cette page explique comment créer des règles d'alerte pour les clusters GKE sur Bare Metal.

Avant de commencer

Vous devez disposer des autorisations suivantes pour créer des règles d'alerte :

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

Vous obtenez ces autorisations si vous disposez de l'un des rôles suivants :

  • monitoring.alertPolicyEditor
  • monitoring.editor
  • Éditeur de projet
  • Propriétaire du projet

Pour vérifier vos rôles, accédez à la page IAM dans Google Cloud Console.

Créer une règle : serveur d'API du cluster Anthos on Bare Metal non disponible

Dans cet exercice, vous allez créer une règle d'alerte pour les serveurs d'API Kubernetes des clusters. Une fois cette règle en place, vous pouvez faire en sorte d'être averti dès que le serveur d'API d'un cluster n'est plus disponible.

  1. Téléchargez le fichier de configuration de la règle : apiserver-unavailable.json.

  2. Créez la règle :

    gcloud alpha monitoring policies create --policy-from-file=POLICY_CONFIG
    

    Remplacez POLICY_CONFIG par le chemin d'accès du fichier de configuration que vous venez de télécharger.

  3. Affichez vos règles d'alerte :

    Console

    1. Dans Google Cloud Console, accédez à la page Monitoring.

      Accéder à Monitoring

    2. Sur la gauche, sélectionnez Alertes.

    3. Sous Règles, vous pouvez voir la liste de vos règles d'alerte.

      Dans la liste, sélectionnez Serveur d'API Anthos on Bare Metal non disponible (critique) pour afficher les informations détaillées sur votre nouvelle règle. Sous Conditions, vous pouvez consulter une description de la règle. Exemple :

      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
    

    La sortie affiche des informations détaillées sur la règle. Exemple :

    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
    

Créer des règles d'alerte supplémentaires

Cette section fournit des descriptions et des fichiers de configuration pour un ensemble de règles d'alerte recommandées.

Pour créer une règle, suivez les étapes que vous avez utilisées dans l'exercice précédent :

  1. Pour télécharger le fichier de configuration, cliquez sur le lien dans la colonne de droite.

  2. Pour créer la règle, exécutez gcloud alpha monitoring policies create.

Vous pouvez télécharger et installer tous les exemples de règles d'alerte décrits dans ce document en exécutant le script suivant :

# 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é des composants du plan de contrôle

Nom de l'alerte Description Définition de la règle d'alerte dans Cloud Monitoring
Serveur d'API du cluster Anthos on Bare Metal non disponible (critique) Le serveur d'API n'est pas opérationnel ou le temps d'activité est inférieur à 99,99 % par minute apiserver-unavailable.json
Programmeur de clusters Anthos on Bare Metal non disponible (critique) Le programmeur n'est pas opérationnel, ou le temps d'activité est inférieur à 99,99 % par minute. scheduler-unavailable.json
Gestionnaire de contrôleur Anthos on Bare Metal non disponible (critique) Le gestionnaire de contrôleur a disparu de la découverte cible de métriques controller-manager-unavailable.json

Système Kubernetes

Nom de l'alerte Description Définition de la règle d'alerte dans Cloud Monitoring
Boucle de plantage de pod Anthos on Bare Metal (critique) Le pod a redémarré et se trouve peut-être dans une boucle de plantage pod-crash-looping.json
L'utilisation de la mémoire du conteneur Anthos sur bare metal dépasse 85 % (avertissement). L'utilisation de la mémoire du conteneur dépasse 85 % de la limite. container-memory-usage-high-reaching-limit.json
L'utilisation du processeur du conteneur Anthos sur bare metal dépasse 80 % (avertissement). L'utilisation du processeur du conteneur dépasse 80 % de la limite. container-cpu-usage-high-reaching-limit.json
Pod Anthos on Bare Metal indisponible pendant plus d'une heure (critique) Le pod est dans un état non prêt pendant plus d'une heure. pod-not-ready-1h.json
Utilisation intensive du volume persistant Anthos on Bare Metal (critique) Le volume persistant déclaré doit être plein persistent-volume-usage-high.json
Nœud Anthos on Bare Metal indisponible pendant plus d'une heure (critique) Le nœud est dans un état non prêt pendant plus d'une heure. node-not-ready-1h.json
Utilisation du processeur du nœud Anthos on Bare Metal supérieure à 80 % (critique) L'utilisation du processeur du nœud est supérieure à 80 % node-cpu-usage-high.json
Utilisation de la mémoire du nœud Anthos on Bare Metal supérieure à 80 % (critique) L'utilisation de la mémoire du nœud dépasse 80 % node-memory-usage-high.json
Utilisation du disque du nœud Anthos on Bare Metal supérieure à 80 % (critique) L'utilisation du disque du nœud dépasse 80 % node-disk-usage-high.json

Performances de Kubernetes

Nom de l'alerte Description Définition de la règle d'alerte dans Cloud Monitoring
Ratio du taux d'erreur du serveur d'API Anthos on Bare Metal supérieur à 10 % (critique) Le serveur d'API renvoie des erreurs pour plus de 10 % des requêtes api-server-error-ratio-10-percent.json
Ratio du taux d'erreur du serveur d'API Anthos on Bare Metal supérieur à 5 % (avertissement) Le serveur d'API renvoie des erreurs pour plus de 5 % des requêtes api-server-error-ratio-5-percent.json
Modification des variantes optimales etcd Anthos on Bare Metal trop fréquente (critique) La variante optimale etcd change trop souvent etcd-leader-changes-too-frequent.json
Échec des propositions etcd Anthos on Bare Metal trop fréquent (critique) Les propositions etcd échouent trop souvent etcd-proposals-failed-too-frequent.json
Serveur etcd Anthos on Bare Metal hors quorum (critique) Le serveur etcd n'est pas dans un quorum etcd-server-not-in-quorum.json
La capacité de stockage etcd Anthos on Bare metal dépasse 90 % de la limite (critique). L'utilisation de l'espace de stockage etcd dépasse 90 % de la limite. etcd-storage-usage-high.json

Recevoir des notifications

Une fois que vous avez créé une règle d'alerte, vous pouvez définir un ou plusieurs canaux de notification pour cette règle. Il existe plusieurs types de canaux de notification. Par exemple, vous pouvez être averti par e-mail, ou via un canal Slack ou une application mobile. Vous pouvez choisir les canaux qui répondent à vos besoins.

Pour obtenir des instructions sur la configuration des canaux de notification, consultez la page Gérer les canaux de notification.