Tous les produits
Search
Centre de documentation

Alibaba Cloud Service Mesh:Importer les règles générées dans Prometheus pour les SLO

Dernière mise à jour :Aug 25, 2026

Lorsque vous définissez un objectif de niveau de service (SLO) au niveau de l'application dans Alibaba Cloud Service Mesh (ASM), un ensemble de règles Prometheus est généré automatiquement. Cette rubrique explique comment importer ces règles dans votre instance Prometheus afin d'appliquer vos SLO.

Prérequis

Étape 1 : Importer les règles dans Prometheus

Cette rubrique part du principe que vous avez déployé Prometheus à l'aide de l'opérateur Prometheus. Dans ce mode, les configurations Prometheus sont gérées via des ressources personnalisées. Pour configurer les règles d'enregistrement et d'alerte, créez un objet PrometheusRule avec les libellés app: ack-prometheus-operator and release: ack-prometheus-operator.

Remarque
  • La nécessité d'ajouter ces libellés dépend des paramètres ruleSelector de votre ressource personnalisée Prometheus. Si le sélecteur ruleSelector est vide, vous n'avez pas besoin d'ajouter les libellés. Adaptez la configuration à votre environnement.

  • Si vous utilisez une autre méthode pour déployer Prometheus, appliquez les règles générées en utilisant la méthode correspondante. Pour plus d'informations, consultez la documentation officielle de Prometheus.

  1. Récupérez le sélecteur ruleSelector depuis la console ACK.

    1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

    2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Workloads > Custom Resources.

    3. Sous l'onglet CRDs, cliquez sur PrometheusRule.

    4. Sous l'onglet Resource Objects, sélectionnez monitoring dans la liste déroulante Namespace. Sur la ligne correspondant à ack-prometheus-operator-prometheus, cliquez sur Edit YAML dans la colonne Actions.

    5. Récupérez le champ ruleSelector.

      L'exemple suivant illustre une configuration ruleSelector typique. Pour que l'opérateur Prometheus sélectionne votre ressource PrometheusRule, celle-ci doit comporter les libellés définis dans matchLabels.

      ruleSelector:
        matchLabels:
          app: ack-prometheus-operator
          release: ack-prometheus-operator
  2. Déployez la ressource PrometheusRule.

    1. Créez un fichier nommé prometheusrule.yaml contenant le code suivant.

      Dans le fichier YAML, le champ labels doit contenir les libellés obtenus à l'étape précédente. Le champ spec contient les règles Prometheus générées.

      apiVersion: monitoring.coreos.com/v1
      kind: PrometheusRule
      metadata:
        labels:
          app: ack-prometheus-operator
          release: ack-prometheus-operator
        name: asm-rules
        namespace: monitoring
      spec:
        # Replace this with the content of your generated rule file.
    2. Exécutez la commande suivante dans votre cluster ACK pour appliquer la ressource PrometheusRule.

      kubectl apply -f prometheusrule.yaml
  3. Vérifiez que les règles sont appliquées.

    1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

    2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Configurations > ConfigMaps.

    3. Sur la page ConfigMaps, sélectionnez monitoring dans la liste déroulante Namespace. Sur la ligne correspondant à la configuration Prometheus, cliquez sur Edit YAML dans la colonne Actions.

      Le contrôleur PrometheusRule convertit automatiquement la ressource en règles et les ajoute à une ConfigMap que Prometheus peut lire. L'exemple suivant montre le contenu de la ConfigMap, où monitoring-asm-rules-fcd9bea9-22b3-462b-8786-424f74f098ec.yaml est la clé du fichier de règles ASM :

      up{job= alertmanager main,namespace= monitoring }
                  )
                )
                >= 0.5
              for: 5m
              labels:
                severity: critical
        monitoring-asm-rules-fcd9bea9-22b3-462b-8786-424f74f098ec.yaml: |
          groups:
          - name: sloth-slo-sli-recordings-httpbin-asm-slo
            rules:

Étape 2 : Vérifier la surveillance des SLO

Consulter les métriques et les alertes dans Prometheus

  1. Connectez-vous à votre cluster ACK à l'aide de kubectl et exécutez la commande suivante pour transférer le service Prometheus vers un port local.

    kubectl --namespace monitoring port-forward svc/ack-prometheus-operator-prometheus 9090
  2. Cliquez sur https://localhost:9090 pour accéder à la console Prometheus.

  3. Dans l'interface utilisateur de Prometheus, saisissez asm_slo_info dans le navigateur d'expressions et cliquez sur Execute pour afficher votre configuration SLO.

    La requête renvoie le résultat asm_slo_info{asm_slo="asm-slo",slo_id="httpbin-asm-slo",slo_mode="cli-gen-prom",slo_objective="99.9",slo_service="httpbin",slo_spec="prometheus/v1",slo_version="dev"}, ce qui indique que vos règles d'enregistrement Prometheus sont correctement configurées.

  4. En haut de la page, cliquez sur Alerts pour afficher les règles d'alerte.

    La présence des deux règles suivantes indique que vos règles d'alerte Prometheus sont correctement configurées. Deux règles d'alerte nommées asm-alert s'affichent, toutes deux indiquant 0 active (aucune alerte active).

Scénario 1 : Simuler un trafic normal

  1. Exécutez le script suivant pour simuler un trafic avec un taux de réussite de 99,5 %.

    Remplacez {ingress-gateway-ip} par l'adresse IP réelle de votre passerelle d'entrée. Pour obtenir l'adresse IP de la passerelle d'entrée, consultez la rubrique Afficher les informations de la passerelle d'entrée.

    #!/bin/bash
    for i in `seq 200`
    do
    if (( $i == 100 ))
    then
        curl -I http://{ingress-gateway-ip}/status/500;
    else
        curl -I http://{ingress-gateway-ip}/;
    fi
    echo "OK"
    sleep 0.01;
    done;
  2. Revenez à l'interface utilisateur de Prometheus, saisissez slo:period_error_budget_remaining:ratio dans le navigateur d'expressions, puis cliquez sur Execute. Observez les variations de votre budget d'erreur restant.

    Après l'exécution de la requête, le graphique montre que le ratio du budget d'erreur restant chute brusquement d'environ 1,0 à environ 0,93, ce qui indique que le budget d'erreur est consommé rapidement.

    Le tableau suivant décrit les principales métriques SLO. Pour plus d'informations, consultez la rubrique Présentation des objectifs de niveau de service (SLO).

    Métrique

    Description

    slo:period_error_budget_remaining:ratio

    Le budget d'erreur restant pour la période SLO de 30 jours.

    slo:sli_error:ratio_rate30d

    Le taux d'erreur moyen sur la période SLO de 30 jours.

    slo:period_burn_rate:ratio

    Le taux de consommation sur la période SLO de 30 jours.

    slo:current_burn_rate:ratio

    Le taux de consommation actuel.

Scénario 2 : Simuler un trafic erroné

Déclenchez manuellement des pannes pour tester les règles d'alerte.

  1. Exécutez le script suivant pour simuler un trafic avec un taux de réussite de 50 %, ce qui correspond à un taux de consommation de 50.

    Remplacez {ingress-gateway-ip} par l'adresse IP réelle de votre passerelle d'entrée.

    #!/bin/bash
    for i in `seq 200`
    do
    curl -I http://{ingress-gateway-ip}/
    curl -I http://{ingress-gateway-ip}/status/500;
    echo "OK"
    sleep 0.01;
    done;
  2. Revenez à la page Alerts de la console Prometheus pour voir les alertes déclenchées.

    Sur la page Alerts, sous le chemin du fichier de règles monitoring-asm-rules.yaml, dans le groupe de règles sloth-slo-alerts-httpbin-asm-slo2, deux règles d'alerte asm-alert sont à l'état actif (1 active) :

    • Première règle : sloth_severity=page, sloth_window=30m, les libellés incluent alertlabel="bbb", pagelabels="ddd", sloth_id="httpbin-asm-slo2".

    • Deuxième règle : sloth_severity=ticket, sloth_window=2h, les libellés incluent ticketlabel="eee".

Afficher les alertes dans la console Alertmanager

Dans le framework Prometheus, le composant Alertmanager collecte les alertes générées par le serveur Prometheus et les achemine vers les destinataires en fonction de votre configuration.

  1. Exécutez la commande suivante pour transférer le service ack-prometheus-operator-alertmanager vers un port local.

    kubectl --namespace monitoring port-forward svc/ack-prometheus-operator-alertmanager 9093
  2. Cliquez sur https://localhost:9093 pour accéder à la console Alertmanager.

  3. Sur la page Alertmanager, cliquez sur l'icône de développement 展开 pour afficher les détails des alertes.

    La liste des alertes Alertmanager affiche deux alertes personnalisées de type asm-alert : l'une avec slo_severity=page (slo_window=30m) et l'autre avec slo_severity=ticket (slo_window=2h), ce qui indique que les règles d'alerte SLO ASM ont été déclenchées avec succès.