Créer des règles d'alerte

Cette page décrit le processus de création de règles d'alerte basées sur les journaux et les métriques des environnements Google Distributed Cloud (GDC) air gap afin de faciliter la surveillance proactive et d'accélérer la réponse aux incidents.

GDC vous permet de définir des règles d'alerte en fonction des métriques ou des journaux de votre projet. Ces règles déclenchent automatiquement des alertes lorsque des conditions spécifiques sont remplies. Voici les types de règles d'alerte que vous pouvez définir :

  • Règles basées sur des métriques : déclenchent des alertes en fonction des données numériques collectées à partir de vos applications ou de votre infrastructure. Par exemple, vous pouvez créer une règle pour déclencher une alerte si l'utilisation du processeur dépasse 80%. Créez des règles basées sur des métriques à l'aide de la console GDC ou d'une définition de ressource personnalisée MonitoringRule.
  • Règles basées sur les journaux : déclenchent des alertes en fonction de l'analyse des données de journaux. Ces alertes vous permettent d'identifier des événements ou des schémas spécifiques dans vos journaux, tels que des messages d'erreur ou une activité inhabituelle, et d'y répondre. Créez des règles basées sur les journaux à l'aide de la console GDC ou d'une définition de ressource personnalisée LoggingRule.

Les règles basées sur des métriques et celles basées sur des journaux s'appuient sur une expression de langage de requête pour définir la condition qui déclenche une alerte. Cette expression filtre et analyse les données entrantes, en évaluant si les critères définis sont remplis.

La première fois qu'une condition est remplie, l'alerte passe à l'état En attente. Si les conditions sont remplies pendant la période que vous définissez, l'alerte passe à l'état ouvert. À ce moment-là, le système envoie l'alerte.

Pour fournir plus de contexte et faciliter la gestion efficace des alertes, vous pouvez ajouter des étiquettes et des annotations à vos règles d'alerte :

  • Étiquettes : paires clé/valeur qui catégorisent et identifient les alertes. Utilisez des étiquettes pour des informations telles que les suivantes :

    • Niveau de gravité (erreur, critique, avertissement)
    • Code d'alerte
    • Nom de la ressource
  • Annotations : fournissez des informations supplémentaires ne permettant pas d'identifier l'utilisateur pour enrichir l'alerte. Les annotations peuvent inclure les informations suivantes :

    • Messages d'erreur détaillés
    • Expressions pertinentes
    • Liens vers des runbooks ou des guides de dépannage

Avant de commencer

Pour gérer les règles basées sur des métriques ou basées sur des journaux, vous devez disposer des autorisations nécessaires.

### Demander des rôles IAM d'organisation pour les règles basées sur des métriques

Contactez l'administrateur de l'organisation IAM pour demander les rôles suivants :

  • Créateur de PA MonitoringRule (monitoringrule-pa-creator) : crée des ressources personnalisées MonitoringRule.
  • Éditeur de PA MonitoringRule (monitoringrule-pa-editor) : permet de modifier les ressources personnalisées MonitoringRule.
  • Lecteur de PA MonitoringRule (monitoringrule-pa-viewer) : permet d'afficher les ressources personnalisées MonitoringRule.

    Demander des rôles IAM au niveau du projet pour les règles basées sur des métriques

Contactez l'administrateur de projet IAM pour demander les rôles suivants :

  • Éditeur MonitoringRule (monitoringrule-editor) : permet de modifier les ressources personnalisées MonitoringRule dans l'espace de noms du projet.
  • Lecteur MonitoringRule (monitoringrule-viewer) : permet d'afficher les ressources personnalisées MonitoringRule dans l'espace de noms du projet.

Demander des rôles IAM d'organisation pour les règles basées sur les journaux

Contactez l'administrateur de l'organisation IAM pour demander les rôles suivants :

  • Créateur de PA LoggingRule (loggingrule-pa-creator) : crée des ressources personnalisées LoggingRule.
  • Éditeur de LoggingRule PA (loggingrule-pa-editor) : permet de modifier les ressources personnalisées LoggingRule.
  • Lecteur de LoggingRule PA (loggingrule-pa-viewer) : permet d'afficher les ressources personnalisées LoggingRule.

Demander des rôles IAM de projet pour les règles basées sur les journaux

Contactez l'administrateur de projet IAM pour demander les rôles suivants :

  • Éditeur LoggingRule (loggingrule-editor) : permet de modifier les ressources personnalisées LoggingRule dans l'espace de noms du projet.
  • Lecteur LoggingRule (loggingrule-viewer) : affichez les ressources personnalisées LoggingRule dans l'espace de noms du projet.

Définir des règles d'alerte

Vous pouvez définir des règles d'alerte dans l'espace de noms de votre projet à l'aide de la console GDC (recommandé) ou des API de surveillance et de journalisation pour appliquer des ressources personnalisées.

Sélectionnez l'une des méthodes suivantes pour définir des règles d'alerte basées sur des métriques ou des journaux :

Console

Créez des règles d'alerte dans des groupes de règles à partir de la console GDC :

  1. Dans la console GDC, sélectionnez un projet.
  2. Dans le menu de navigation, sélectionnez Opérations > Alertes.
  3. Cliquez sur l'onglet Règle d'alerte.
  4. Cliquez sur Créer un groupe de règles.
  5. Choisissez le type de règle d'alerte :

    • Sélectionnez Métriques pour les règles d'alerte basées sur des métriques.
    • Sélectionnez Journaux pour les règles d'alerte basées sur les journaux.
  6. Configurez le groupe de règles d'alerte :

    • Dans le champ Nom du groupe de règles d'alerte, saisissez un nom pour le groupe de règles.
    • Dans le champ Intervalle d'évaluation de la règle, saisissez le nombre de secondes pour chaque intervalle.
    • Dans le champ Limite, saisissez le nombre maximal d'alertes.

  7. Dans la section Règles d'alerte, cliquez sur Ajouter une règle.

  8. Dans la fenêtre Créer une règle d'alerte, saisissez les informations suivantes :

    • Nom de la règle d'alerte.
    • Expression pour la règle d'alerte (utilisez LogQL pour les règles basées sur les journaux et PromQL pour les règles basées sur les métriques).

    • Durée en secondes avant qu'une alerte ne passe de l'état en attente à l'état ouvert.

    • Le niveau de gravité, par exemple Erreur ou Avertissement.

    • Nom court permettant d'identifier la ressource associée.

    • Un code d'alerte pour identifier l'alerte.

    • Une URL de runbook ou des informations de dépannage.

    • Message ou description d'alerte.

    • Facultatif : Ajoutez des libellés et des annotations sous forme de paires clé/valeur.

  9. Cliquez sur Enregistrer pour créer la règle.

  10. Cliquez sur Créer pour créer le groupe de règles.

Le groupe de règles s'affiche dans la liste Groupe de règles d'alerte. Vous pouvez regrouper d'autres règles d'alerte dans ce groupe de règles.

API

Créez des règles d'alerte à partir des API Monitoring ou Logging :

  1. Définissez une ressource personnalisée MonitoringRule (règles basées sur des métriques) ou LoggingRule (règles basées sur les journaux) dans un fichier YAML.

    La spécification complète de la ressource présente un exemple de règles basées sur des métriques et de règles basées sur des journaux.

  2. Remplacez les valeurs suivantes dans le fichier YAML en fonction de vos besoins :

    Champ Description
    namespace Espace de noms du projet.
    name Nom de la configuration de la règle d'alerte.
    source Source de journaux pour la règle d'alerte. Les options valides sont operational et audit. S'applique uniquement aux ressources LoggingRule.
    interval Durée de l'intervalle d'évaluation de la règle, en secondes.
    limit Facultatif. Le nombre maximal d'alertes. Définissez cette valeur sur 0 pour un nombre illimité d'alertes.
    alertRules Définitions pour créer des règles d'alerte.
    alertRules.alert Nom de l'alerte.
    alertRules.expr Une expression LogQL pour les règles basées sur les journaux ou une expression PromQL pour les règles basées sur les métriques. L'expression doit renvoyer une valeur "true" ou "false" pour déterminer si l'alerte passe à l'état "En attente".
    alertRules.for Facultatif. Durée en secondes avant qu'une alerte ne passe de l'état en attente à l'état ouvert. La valeur par défaut est de 0 secondes (déclenchement immédiat).
    alertRules.labels Paires clé/valeur permettant de catégoriser et d'identifier l'alerte. Il nécessite les étiquettes suivantes : severity, code et resource.
    alertRules.annotations Facultatif. Métadonnées non identificatrices de l'alerte sous forme de paires clé/valeur.
  3. Enregistrez le fichier YAML.

  4. Appliquez la configuration de la ressource au serveur d'API Management dans le même espace de noms que vos règles d'alerte basées sur des métriques ou des journaux :

    kubectl --kubeconfig KUBECONFIG_PATH apply -f ALERT_RULE_NAME.yaml
    

    Remplacez les éléments suivants :

    • KUBECONFIG_PATH : chemin d'accès au fichier kubeconfig du serveur d'API Management.
    • ALERT_RULE_NAME : nom du fichier de définition MonitoringRule ou LoggingRule.

Spécification complète des ressources

Cette section contient les modèles YAML que vous pouvez utiliser pour créer des règles d'alerte basées sur des métriques et des journaux en appliquant des ressources personnalisées. Si vous créez des alertes à partir de la console GDC, vous pouvez ignorer cette section.

Définissez des règles d'alerte dans les ressources personnalisées suivantes :

  • MonitoringRule : règles basées sur des métriques.
  • LoggingRule : règles basées sur les journaux.

MonitoringRule

Le fichier YAML suivant montre un modèle pour la ressource personnalisée MonitoringRule. Pour en savoir plus, consultez la documentation de référence de l'API.

# Configures either an alert or a target record for precomputation.
apiVersion: monitoring.gdc.goog/v1
kind: MonitoringRule
metadata:
  # Choose a namespace that matches the project namespace.
  # The alert or record is produced in the same namespace.
  namespace: PROJECT_NAMESPACE
  name: MONITORING_RULE_NAME
spec:
  # Rule evaluation interval.
  interval: 60s

  # Configure the limit for the number of alerts.
  # A value of '0' means no limit.
  # Optional.
  # Default value: '0'
  limit: 0

  # Configure metric-based alert rules.
  alertRules:
    # Define an alert name.
  - alert: my-metric-based-alert

    # Define the PromQL expression to evaluate for this rule.
    expr: rate({service_name="bob-service"} [1m])

    # The duration in seconds before an alert transitions from pending to open.
    # Optional.
    # Default value: '0s'
    for: 0s

    # Define labels to add or overwrite.
    # Map of key-value pairs.
    # Required labels:
    #     severity: [error, critical, warning, info]
    #     code:
    #     resource: component/service/hardware related to the alert
    # Additional labels are optional.
    labels:
      severity: error
      code: 202
      resource: AIS
      another-label: another-value

    # Define annotations to add.
    # Map of key-value pairs.
    # Optional.
    # Recommended annotations:
    #     message: value of the Message field in the user interface.
    #     expression: value of the Rule field in the user interface.
    #     runbookurl: URL of the Actions to take field in the user interface.
    annotations:
      message: my-alert-message

Remplacez les éléments suivants :

  • PROJECT_NAMESPACE : l'espace de noms de votre projet.
  • MONITORING_RULE_NAME : nom du fichier de définition MonitoringRule.

LoggingRule

Le fichier YAML suivant montre un modèle pour la ressource personnalisée LoggingRule. Pour en savoir plus, consultez la documentation de référence de l'API.

# Configures either an alert or a target record for precomputation.
apiVersion: logging.gdc.goog/v1
kind: LoggingRule
metadata:
  # Choose a namespace that matches the project namespace.
  # The alert or record is produced in the same namespace.
  namespace: PROJECT_NAMESPACE
  name: LOGGING_RULE_NAME
spec:
  # Choose the log source to base alerts on (operational or audit logs).
  # Optional.
  # Valid options: 'operational' and 'audit'
  # Default value: 'operational'
  source: operational

  # Rule evaluation interval.
  interval: 60s

  # Configure the limit for the number of alerts.
  # A value of '0' means no limit.
  # Optional.
  # Default value: '0'
  limit: 0

  # Configure log-based alert rules.
  alertRules:
    # Define an alert name.
  - alert: my-log-based-alert

    # Define the LogQL expression to evaluate for this rule.
    expr: rate({service_name="bob-service"} [1m])

    # The duration in seconds before an alert transitions from pending to open.
    # Optional.
    # Default value: '0s'
    for: 0s

    # Define labels to add or overwrite.
    # Map of key-value pairs.
    # Required labels:
    #     severity: [error, critical, warning, info]
    #     code:
    #     resource: component/service/hardware related to the alert
    # Additional labels are optional.
    labels:
      severity: warning
      code: 202
      resource: AIS
      another-label: another-value

    # Define annotations to add.
    # Map of key-value pairs.
    # Optional.
    # Recommended annotations:
    #     message: value of the Message field in the user interface.
    #     expression: value of the Rule field in the user interface.
    #     runbookurl: URL of the Actions to take field in the user interface.
    annotations:
      message: my-alert-message

Remplacez les éléments suivants :

  • PROJECT_NAMESPACE : l'espace de noms de votre projet.
  • LOGGING_RULE_NAME : nom du fichier de définition LoggingRule.