Interroger et afficher les alertes ouvertes

Après avoir créé des règles d'alerte dans votre projet d'appliance Google Distributed Cloud (GDC) isolée, vous pouvez interroger et afficher les alertes dans les tableaux de bord à partir de l'interface utilisateur (UI) de l'instance de surveillance du système du projet ou interroger les alertes à partir de l'API HTTP d'observabilité GDC.

Interroger et afficher les alertes dans les tableaux de bord

Vous pouvez afficher les alertes sur les tableaux de bord de l'instance Grafanainstance de surveillance du système du projet platform-obs.

L'instance de surveillance du système inclut des métriques, des journaux et des alertes au niveau du projet pour effectuer des processus de surveillance tels que la surveillance du réseau et du serveur.

Avant de commencer

Avant de pouvoir interroger et afficher des alertes dans les tableaux de bord, vous devez obtenir l'accès à l'instance de surveillance du système. Pour en savoir plus, consultez Accéder aux tableaux de bord.

Pour vous connecter et visualiser les alertes, demandez à l'administrateur IAM du projet de vous accorder le rôle Lecteur Grafana du projet (project-grafana-viewer). Ce processus de contrôle des accès basé sur les rôles vous permet d'accéder aux visualisations de données en toute sécurité.

Point de terminaison de l'instance de surveillance du système

Pour l'Application Operator (AO) :

Ouvrez l'URL suivante pour accéder au point de terminaison de votre projet :

https://GDC_URL/PROJECT_NAMESPACE/grafana

Remplacez les éléments suivants :

  • GDC_URL : URL de votre organisation dans GDC.
  • PROJECT_NAMESPACE : espace de noms de votre projet.

L'UI du projet contient des tableaux de bord par défaut tels que le tableau de bord Alertes – Vue d'ensemble, qui fournit des informations sur les alertes. L'interrogation des alertes depuis l'interface utilisateur vous permet de récupérer visuellement les informations sur les alertes de votre projet et d'obtenir une vue intégrée des ressources pour identifier et résoudre rapidement les problèmes.

Pour les administrateurs de plate-forme :

Ouvrez l'URL suivante pour accéder au point de terminaison de votre projet platform-obs :

https://GDC_URL/platform-obs/grafana

Remplacez GDC_URL par l'URL de votre organisation dans GDC.

L'interface utilisateur (UI) de l'instance de surveillance du système contient des tableaux de bord par défaut, tels que le tableau de bord Alertes – Vue d'ensemble, qui fournit des informations sur les alertes concernant l'observabilité des données. L'interrogation des alertes depuis l'interface utilisateur vous permet de récupérer visuellement les informations sur les alertes de votre projet et d'obtenir une vue intégrée des ressources pour identifier et résoudre rapidement les problèmes.

Le tableau de bord "Alertes – Vue d'ensemble" affiche des informations sur le nombre d'alertes pour une source de données spécifique, ainsi qu'un graphique linéaire de l'historique des alertes, qui indique le nombre d'alertes ouvertes par heure pour la source de données.

Figure 1 : Tableau de bord Alertes – Vue d'ensemble dans l'interface utilisateur Grafana.

Alertmanager

Alertmanager vous permet de surveiller les notifications d'alerte des applications clientes. Vous pouvez inspecter et mettre sous silence les alertes à l'aide d'Alertmanager, et les filtrer ou les regrouper :

Ignorer les alertes de journaux d'audit de refus Loki dans le cluster d'administrateur racine

Figure 2. Option de menu permettant d'interroger les journaux d'audit à partir d'Alertmanager.

Règles d'alerte prédéfinies

Le tableau suivant répertorie les règles d'alerte préinstallées dans Prometheus :

Nom Description
KubeAPIDown (critique) KubeAPI a disparu de la détection de cible Prometheus pendant 15 minutes.
KubeClientErrors (avertissement) Le taux d'erreurs client sur le serveur d'API Kubernetes est supérieur à 0,01 pendant 15 minutes.
KubeClientErrors (critique) Le taux d'erreurs client sur le serveur d'API Kubernetes est supérieur à 0,1 pendant 15 minutes.
KubePodCrashLooping (avertissement) Le pod plante en boucle depuis plus de 15 minutes.
KubePodNotReady (avertissement) Le pod est en état non opérationnel depuis plus de 15 minutes.
KubePersistentVolumeFillingUp (critique) Espace libre en octets d'un objet PersistentVolume revendiqué inférieur à 0,03.
KubePersistentVolumeFillingUp (avertissement) Espace libre en octets d'un PersistentVolume revendiqué inférieur à 0,15.
KubePersistentVolumeErrors (critique) Le volume persistant demeure en phase d'échec ou d'attente pendant cinq minutes.
KubeNodeNotReady (avertissement) Le nœud n'a pas été opérationnel pendant plus de 15 minutes.
KubeNodeCPUUsageHigh (critique) L'utilisation du processeur du nœud est supérieure à 80 %.
KubeNodeMemoryUsageHigh (critique) L'utilisation de la mémoire du nœud est supérieure à 80 %.
NodeFilesystemSpaceFillingUp (avertissement) L'utilisation du système de fichiers du nœud est supérieure à 60 %.
NodeFilesystemSpaceFillingUp (critique) L'utilisation du système de fichiers du nœud est supérieure à 85 %.
CertManagerCertExpirySoon (avertissement) Un certificat arrive à expiration dans 21 jours.
CertManagerCertNotReady (critique) Un certificat n'est pas utilisable pour diffuser le trafic au bout de 10 minutes.
CertManagerHittingRateLimits (critique) Une limite de débit a été atteinte lors de la création et du renouvellement des certificats pendant cinq minutes.
DeploymentNotReady (critique) Un déploiement sur le cluster d'administrateur de l'organisation est en état non opérationnel depuis plus de 15 minutes.

Exemple d'alertemanagerConfigurationConfigmaps

La syntaxe des configurations dans les ConfigMaps listés par alertmanagerConfigurationConfigmaps doit respecter https://prometheus.io/docs/alerting/latest/configuration/.

apiVersion: observability.gdc.goog/v1alpha1
kind: ObservabilityPipeline
metadata:
  # Choose namespace that matches the project's namespace
  namespace: kube-system
  name: observability-config
# Configure Alertmanager
 alerting:
  # Storage size for alerting data within organization
  # Permission: PA
  localStorageSize: 1Gi

  # Permission: PA & AO
  # alertmanager config must be under the key "alertmanager.yml" in the configMap
  alertmanagerConfig: <configmap-for-alertmanager-config>

  # Permission: PA
  volumes:
    - <volume referenced in volumeMounts>

  # Permission: PA
  volumeMounts:
    - <volumeMount referenced in alertmanagerConfig>

Exemple de configuration de règle

# Configures either an alert or a target record for precomputation
apiVersion: monitoring.gdc.goog/v1alpha1
kind: MonitoringRule
metadata:
  # Choose namespace that contains the metrics that rules are based on
  # Note: alert/record will be produced in the same namespace
  namespace: g-fleetns-a
  name: alerting-config
spec:
  # Rule evaluation interval
  interval: <duration>

  # Configure limit for number of alerts (0: no limit)
  # Optional, Default: 0 (no limit)
  limit: <int>

  # Configure record rules
  recordRules:
    # Define which timeseries to write to (must be a valid metric name)
  - record: <string>

    # Define PromQL expression to evaluate for this rule
    expr: <string>

    # Define labels to add or overwrite
    # Optional, Map of {key, value} pairs
    labels:
      <labelname>: <labelvalue>

  # Configure alert rules
  alertRules:
    # Define alert name 
  - alert: <string>

    # Define PromQL expression to evaluate for this rule
    # https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/
    expr: <string>

    # Define when an active alert moves from pending to firing
    # Optional, Default: 0s
    for: <duration>

    # Define labels to add or overwrite
    # Required, Map of {key, value} pairs
    # Required labels: 
    #     severity: [error, critical, warning, info]
    #     code: 
    #     resource: component/service/hardware related to alert
    #     additional labels are optional
    labels:
      severity: <enum: [error, critical, warning, info]>
      code: 
      resource: <Short name of the related operable component>
      <labelname>: <tmpl_string>

    # Define annotations to add
    # Optional, Map of {key, value} pairs
    # Recommended annotations:
    #     message: value of Message field in UI
    #     expression: value of Rule field in UI
    #     runbookurl: URL for link in Actions to take field in UI
    annotations:
      <labelname>: <tmpl_string>
# Configures either an alert or a target record for precomputation
apiVersion: logging.gdc.goog/v1alpha1
kind: LoggingRule
metadata:
  # Choose namespace that contains the logs that rules are based on
  # Note: alert/record will be produced in the same namespace
  namespace: g-fleetns-a
  name: alerting-config
spec:
  # Choose which log source to base alerts on (Operational/Audit/Security Logs)
  # Optional, Default: Operational
  source: <string>

  # Rule evaluation interval
  interval: <duration>

  # Configure limit for number of alerts (0: no limit)
  # Optional, Default: 0 (no limit)
  limit: <int>

  # Configure record rules
  recordRules:
    # Define which timeseries to write to (must be a valid metric name)
  - record: <string>

    # Define LogQL expression to evaluate for this rule
    # https://grafana.com/docs/loki/latest/rules/
    expr: <string>

    # Define labels to add or overwrite
    # Optional, Map of {key, value} pairs
    labels:
      <labelname>: <labelvalue>

  # Configure alert rules
  alertRules:
    # Define alert name
  - alert: <string>

    # Define LogQL expression to evaluate for this rule
    expr: <string>

    # Define when an active alert moves from pending to firing
    # Optional, Default: 0s
    for: <duration>

    # Define labels to add or overwrite
    # Required, Map of {key, value} pairs
    # Required labels: 
    #     severity: [error, critical, warning, info]
    #     code: 
    #     resource: component/service/hardware related to alert
    #     additional labels are optional
    labels:
      severity: <enum: [error, critical, warning, info]>
      code:
      resource: <Short name of the related operable component>
      <labelname>: <tmpl_string>

    # Define annotations to add
    # Optional, Map of {key, value} pairs
    # Recommended annotations:
    #     message: value of Message field in UI
    #     expression: value of Rule field in UI
    #     runbookurl: URL for link in Actions to take field in UI
    annotations:
      <labelname>: <tmpl_string>

Interroger les alertes à partir de l'API HTTP

La plate-forme Observabilité expose un point de terminaison d'API HTTP pour interroger et lire les métriques, les alertes et d'autres données de séries temporelles de votre projet pour la surveillance du système.

Configurez des tâches automatisées, adaptez les réponses et créez des intégrations en fonction de votre cas d'utilisation à l'aide des alertes de requête directement depuis l'API HTTP Observability. Par exemple, insérez la sortie dans une autre commande, exportez les détails au format texte ou configurez une job Cron Linux. Vous pouvez appeler l'API HTTP d'observabilité à partir de l'interface de ligne de commande (CLI) ou d'un navigateur Web, et obtenir le résultat au format JSON.

Cette section explique comment appeler le point de terminaison de l'API HTTP d'observabilité à partir de la CLI à l'aide de la spécification de l'APIpour interroger les alertes.

Configurez des tâches automatisées, adaptez les réponses et créez des intégrations en fonction de votre cas d'utilisation à l'aide des alertes de requête directement depuis l'API HTTP Observability. Par exemple, insérez la sortie dans une autre commande, exportez les détails au format texte ou configurez une job Cron Linux. Vous pouvez appeler l'API HTTP d'observabilité à partir de l'interface de ligne de commande (CLI) ou d'un navigateur Web, et obtenir le résultat au format JSON.

Cette section explique comment appeler le point de terminaison de l'API HTTP d'observabilité à partir de la CLI à l'aide de la spécification de l'API Alertmanager pour interroger les métriques.

Avant de commencer

Pour obtenir les autorisations nécessaires pour accéder au point de terminaison de l'API HTTP Observability, demandez à l'administrateur IAM de votre projet de vous attribuer le rôle Lecteur Alertmanager Project Cortex (project-cortex-alertmanager-viewer) dans l'espace de noms de votre projet.

L'administrateur IAM du projet peut vous accorder l'accès en créant une liaison de rôle :

a. Administrateur racine de l'opérateur d'infrastructure (IO) : Project Cortex Alertmanager Viewer

kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding 
io-cortex-alertmanager-viewer-binding -n infra-obs 
--user=fop-infrastructure-operator@example.com 
--role=project-cortex-alertmanager-viewer

b. Administrateur de plate-forme (PA) Administrateur racine : Project Cortex Alertmanager Viewer

kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding
pa-cortex-alertmanager-viewer-binding -n platform-obs 
--user=fop-platform-admin@example.com 
--role=project-cortex-alertmanager-viewer

c. Administrateur racine de l'opérateur d'application (AO) : lecteur Alertmanager Project Cortex : Projet : $AO_PROJECT Nom d'utilisateur AO : $AO_USER

kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding 
project-cortex-alertmanager-viewer-binding -n $AO_PROJECT 
--user=$AO_USER 
--role=project-cortex-alertmanager-viewer

Une fois l'association de rôle créée, vous pouvez accéder à Alertmanager correspondant avec votre nom d'utilisateur.

Valider la liaison de rôle

kubectl --kubeconfig $HOME/org-1-admin-kubeconfig get rolebinding -n platform-obs

Pour savoir comment définir des liaisons de rôle à partir de la console GDC, consultez Accorder l'accès aux ressources.

Point de terminaison Cortex

L'URL suivante est le point de terminaison Cortex permettant d'accéder aux alertes :

https://GDC_URL/PROJECT_NAME/cortex/alertmanager/

Remplacez les éléments suivants :

  • GDC_URL : URL de votre organisation dans GDC.
  • PROJECT_NAME : le nom de votre projet

Appeler le point de terminaison de l'API

Pour accéder au point de terminaison de l'API Cortex depuis l&#CLI et interroger les alertes, procédez comme suit :

  1. Assurez-vous de remplir les conditions préalables.
  2. Ouvrez la CLI.
  3. Utilisez l'outil curl pour appeler l'URL du point de terminaison Cortex et étendre l'URL à l'aide de la norme https://prometheus.io/docs/prometheus/latest/querying/api/#alertmanagers pour interroger les alertes. Exemple :

    curl https://console.org-1.zone1.google.gdch.test/alice/cortex/alertmanager/api/v1/alertmanagers
    

Vous obtenez le résultat dans la CLI après la commande. Le format de réponse de l'API est JSON.