Tous les produits
Search
Centre de documentation

Alibaba Cloud Service Mesh:Merge Istio metrics with application metrics

Dernière mise à jour :Aug 11, 2026

Les configurations Prometheus standard utilisent des annotations prometheus.io pour extraire un point de terminaison de métriques par pod. Lorsqu'ASM (Service Mesh) injecte un proxy sidecar, ce dernier expose les métriques Istio sur un point de terminaison distinct, ce qui entre en conflit avec la cible d'extraction existante de l'application. La fusion des métriques résout ce problème en combinant ces deux ensembles de métriques en un seul point de terminaison que Prometheus extrait sans configuration supplémentaire.

Une fois la fusion des métriques activée, chaque proxy sidecar récupère les métriques de votre application (à l'aide des annotations prometheus.io d'origine), les combine avec les métriques Istio et expose le tout via :15020/stats/prometheus. ASM met à jour les annotations prometheus.io du pod pour pointer vers ce point de terminaison fusionné, permettant ainsi à Prometheus de collecter automatiquement les métriques applicatives et Istio.

Si la fusion des métriques ne convient pas à votre environnement, configurez Prometheus pour qu'il extraie séparément les points de terminaison de l'application et du sidecar.

Quand ne pas utiliser la fusion des métriques

Important

Évaluez le scénario suivant avant d'activer cette fonctionnalité. S'il s'applique à votre cas, configurez Prometheus pour qu'il extraie séparément les points de terminaison de l'application et du sidecar.

  • Métriques applicatives sensibles. Les métriques fusionnées sont exposées via le proxy sidecar. Tout utilisateur disposant des autorisations nécessaires pour afficher les métriques Istio pourra également consulter vos métriques applicatives.

Fonctionnement de la fusion des métriques

Le schéma ci-dessous illustre le flux de données une fois la fusion des métriques activée :

+---------------------------------------------------------+
|  Pod                                                    |
|                                                         |
|  +----------------+       +--------------------------+  |
|  |  Application   |       |  Sidecar proxy           |  |
|  |                |       |                          |  |
|  |  :9080         |------>|  Fetches app metrics     |  |
|  |  /metrics      |       |  from original endpoint  |  |
|  +----------------+       |                          |  |
|                           |  Merges with Istio       |  |
|                           |  proxy metrics           |  |
|                           |                          |  |
|                           |  :15020                  |  |
|                           |  /stats/prometheus       |------> Prometheus
|                           +--------------------------+  |
+---------------------------------------------------------+

Lorsqu'ASM active la fusion des métriques sur un pod :

  1. Les annotations prometheus.io d'origine (cible d'extraction, port, chemin) sont enregistrées dans la variable d'environnement ISTIO_PROMETHEUS_ANNOTATIONS du conteneur sidecar.

  2. Les annotations prometheus.io sont ajoutées à tous les pods du plan de données et remplacées pour pointer vers le point de terminaison fusionné (:15020/stats/prometheus). Si ces annotations existent déjà, elles seront écrasées.

  3. Le proxy sidecar lit les annotations enregistrées, récupère les métriques applicatives depuis le point de terminaison d'origine, les combine avec ses propres métriques Istio et sert le tout via le point de terminaison fusionné.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

Étape 1 : Vérifier les annotations Prometheus de votre application

Avant d'activer la fusion des métriques, vérifiez que les pods de votre application incluent des annotations prometheus.io. Le manifeste de déploiement suivant présente une configuration type :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: productpage-v1
  labels:
    app: productpage
    version: v1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: productpage
      version: v1
  template:
    metadata:
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "9080"
        prometheus.io/path: "/metrics"
      labels:
        app: productpage
        version: v1
    spec:
      ......

Exécutez la commande kubectl get pod <pod-name> -o yaml et vérifiez la présence des annotations suivantes :

prometheus.io/path: /metrics
prometheus.io/port: '9080'
prometheus.io/scrape: 'true'

Étape 2 : Activer la fusion des métriques

La fusion des métriques est désactivée par défaut. Activez-la au niveau de l'instance ASM (s'applique à toutes les charges de travail) ou par charge de travail.

Option A : Activation globale pour une instance ASM

  1. Connectez-vous à la console ASM. Dans le volet de navigation de gauche, sélectionnez Service Mesh > Mesh Management.

  2. Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, sélectionnez ASM Instance > Base Information.

  3. Dans la section Config Info, cliquez sur Enable en regard de Merge Istio's Metrics with Application Metrics. Dans la boîte de dialogue de confirmation, cliquez sur OK.

Option B : Activation pour une charge de travail spécifique

Ajoutez l'annotation suivante à la spécification du pod de la charge de travail cible :

prometheus.istio.io/merge-metrics: "true"

Utilisez cette approche pour activer la fusion sur des services spécifiques tout en la maintenant désactivée globalement, ou pour remplacer le paramètre au niveau de l'instance sur des charges de travail individuelles.

Étape 3 : Vérifier le point de terminaison fusionné

Après avoir activé la fusion des métriques, redémarrez les pods concernés afin que la mise à jour de la configuration du sidecar prenne effet. Inspectez ensuite le pod pour confirmer les modifications.

Exécutez la commande kubectl get pod <pod-name> -o yaml et vérifiez les points suivants :

Annotations mises à jour. Les annotations prometheus.io pointent désormais vers le point de terminaison fusionné :

prometheus.io/path: /stats/prometheus
prometheus.io/port: '15020'
prometheus.io/scrape: 'true'

Nouvelle variable d'environnement. Le conteneur sidecar inclut une variable d'environnement ISTIO_PROMETHEUS_ANNOTATIONS qui conserve la configuration d'extraction d'origine de l'application :

env:
  - name: ISTIO_PROMETHEUS_ANNOTATIONS
    value: '{"scrape":"true","path":"/metrics","port":"9080"}'

Désactiver la fusion des métriques

Pour désactiver la fusion des métriques, choisissez l'une des méthodes suivantes selon la manière dont vous l'avez activée :

  • Au niveau de l'instance : Dans la console ASM, accédez à ASM Instance > Base Information. Dans la section Config Info, cliquez sur Disable en regard de Merge Istio's Metrics with Application Metrics. Dans la boîte de dialogue de confirmation, cliquez sur OK.

  • Au niveau de la charge de travail : Ajoutez l'annotation suivante à la spécification du pod cible :

    prometheus.istio.io/merge-metrics: "false"
Remarque

L'annotation par charge de travail fonctionne également comme une substitution. Si la fusion des métriques est activée au niveau de l'instance, ajoutez cette annotation pour exclure des charges de travail spécifiques contenant des métriques sensibles.

Voir aussi