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
É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 :
Les annotations
prometheus.iod'origine (cible d'extraction, port, chemin) sont enregistrées dans la variable d'environnementISTIO_PROMETHEUS_ANNOTATIONSdu conteneur sidecar.Les annotations
prometheus.iosont 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.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 :
Une instance ASM exécutant la version 1.17.2.30 ou ultérieure. Pour créer ou mettre à niveau une instance, consultez les rubriques Créer une instance ASM ou Mettre à jour une instance ASM
Une application déployée avec des annotations
prometheus.iostandard. Pour obtenir des instructions de déploiement, consultez la rubrique Déployer une application dans une instance ASM
É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
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, sélectionnez Service Mesh > Mesh Management.
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.
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"
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.