Tous les produits
Search
Centre de documentation

Alibaba Cloud Service Mesh:ASM observability settings

Dernière mise à jour :Aug 11, 2026

Service Mesh (ASM) propose des paramètres d'observabilité pour les journaux, les métriques et le tracing. Utilisez la console ASM pour personnaliser ces paramètres au niveau global, au niveau du namespace ou pour des workloads spécifiques. Par exemple, définissez le format de sortie des journaux, ajoutez des dimensions aux métriques, activez ou désactivez des métriques spécifiques et définissez le pourcentage d'échantillonnage du tracing. Cette rubrique explique comment utiliser les paramètres d'observabilité.

Prérequis

Une instance ASM version 1.17.2.35 ou ultérieure est requise. Pour plus d'informations, consultez les rubriques Créer une instance ASM ou Mettre à niveau une instance ASM.

Étendues

Type

Description

Global

Une configuration globale prend en charge les paramètres des journaux, des métriques et du tracing. Il n'existe qu'une seule configuration globale et elle ne peut pas être supprimée. Les paramètres de tracing sont pris en charge uniquement au niveau global.

Namespace

Permet de créer une configuration d'observabilité dédiée pour un namespace. Chaque namespace ne peut avoir qu'une seule configuration d'observabilité.

Personnalisée

Une configuration personnalisée utilise un sélecteur d'étiquettes pour définir son étendue. Chaque workload peut être ciblé par au plus une configuration personnalisée.

Procédure

Global

  1. Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez 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, choisissez Observability Management Center > Observability Settings.

  3. Sur la page Observability Settings, cliquez sur l'onglet Global. Configurez les journaux, les métriques et le tracing selon vos besoins, puis cliquez sur Submission.

    Cliquez sur les liens du tableau suivant pour afficher les descriptions détaillées des configurations.

    Section de configuration

    Description

    Paramètres des journaux

    Paramètres des métriques

    Paramètres de tracing

Namespace

  1. Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez 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, choisissez Observability Management Center > Observability Settings.

  3. Sur la page Observability Settings, cliquez sur l'onglet Namespace puis sur Create. Sélectionnez le Namespace cible, configurez les journaux et les métriques selon vos besoins, puis cliquez sur Create.

    Cliquez sur les liens du tableau suivant pour afficher les descriptions détaillées des configurations.

    Section de configuration

    Description

    Paramètres des journaux

    Paramètres des métriques

Custom

  1. Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez 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, choisissez Observability Management Center > Observability Settings.

  3. Sur la page Observability Settings, cliquez sur l'onglet Custom, sélectionnez le Namespace cible, puis cliquez sur Create. Saisissez un Name et un Label selector, configurez les journaux et les métriques selon vos besoins, puis cliquez sur Create.

    Cliquez sur les liens du tableau suivant pour afficher les descriptions détaillées des configurations.

    Section de configuration

    Description

    Paramètres des journaux

    Paramètres des métriques

Paramètres des journaux

Les paramètres des journaux incluent l'activation ou la désactivation de la sortie des journaux d'accès, la définition du format de sortie des journaux, la personnalisation du format des journaux et le filtrage des journaux.

Sortie des journaux d'accès

  1. Dans la section Log Settings, activez ou désactivez l'option Enable Log Output selon vos besoins.

    • Si vous activez cette option, les sidecars ou les passerelles du plan de données envoient les journaux d'accès vers la sortie standard (stdout) du conteneur.

    • Si vous désactivez cette option, les sidecars ou les passerelles du plan de données cessent d'envoyer les journaux vers la sortie standard du conteneur.

  2. Consultez les journaux dans la sortie standard du conteneur sidecar du plan de données.

    Les exemples suivants montrent comment afficher les journaux d'accès à l'aide de kubectl.

    1. Exécutez la commande suivante pour afficher les journaux du sidecar :

      kubectl logs httpbin-5c5944c58c-w**** -c istio-proxy --tail 1

      Exemple de sortie

      {
          "authority_for":"47.110.XX.XXX",
          "bytes_received":"0",
          "bytes_sent":"22382",
          "downstream_local_address":"192.168.0.29:80",
          "downstream_remote_address":"221.220.XXX.XXX:0",
          "duration":"80",
          "istio_policy_status":"-",
          "method":"GET",
          "path":"/static/favicon.ico",
          "protocol":"HTTP/1.1",
          "request_id":"0f2cf829-3da5-4810-a618-08d9745d****",
          "requested_server_name":"outbound_.8000_._.httpbin.default.svc.cluster.local",
          "response_code":"200",
          "response_flags":"-",
          "route_name":"default",
          "start_time":"2023-06-30T04:00:36.841Z",
          "trace_id":"-",
          "upstream_cluster":"inbound|80||",
          "upstream_host":"192.168.0.29:80",
          "upstream_local_address":"127.0.X.X:55879",
          "upstream_response_time":"79",
          "upstream_service_time":"79",
          "upstream_transport_failure_reason":"-",
          "user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.X.X Safari/537.36",
          "x_forwarded_for":"221.220.XXX.XXX"
      }
    2. Exécutez la commande suivante pour afficher les journaux de la passerelle ingress :

      kubectl -n istio-system logs istio-ingressgateway-6cff9b6b58-r**** --tail 1

      Exemple de sortie

      {
          "authority_for":"47.110.XX.XXX",
          "bytes_received":"0",
          "bytes_sent":"22382",
          "downstream_local_address":"192.168.0.63:80",
          "downstream_remote_address":"221.220.XXX.XXX:64284",
          "duration":"81",
          "istio_policy_status":"-",
          "method":"GET",
          "path":"/static/favicon.ico",
          "protocol":"HTTP/1.1",
          "request_id":"0f2cf829-3da5-4810-a618-08d9745d****",
          "requested_server_name":"-",
          "response_code":"200",
          "response_flags":"-",
          "route_name":"httpbin",
          "start_time":"2023-06-30T04:00:36.841Z",
          "trace_id":"-",
          "upstream_cluster":"outbound|8000||httpbin.default.svc.cluster.local",
          "upstream_host":"192.168.0.29:80",
          "upstream_local_address":"192.168.0.63:36140",
          "upstream_response_time":"81",
          "upstream_service_time":"81",
          "upstream_transport_failure_reason":"-",
          "user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.X.X Safari/537.36",
          "x_forwarded_for":"221.220.XXX.XXX"
      }
  3. (Facultatif) Consultez les journaux d'accès dans la console Container Service for Kubernetes.

    Si vous utilisez un cluster Alibaba Cloud Container Service for Kubernetes (ACK), vous pouvez également consulter les journaux d'accès dans 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 > Pods.

    3. Sur la page Pods, cliquez sur le nom du pod cible, puis sur l'onglet Logs en bas de la page pour afficher les journaux d'accès.

Format de sortie des journaux

Remarque

Cette fonctionnalité nécessite une instance ASM version 1.20.6.36 ou ultérieure. Pour plus d'informations sur la mise à niveau d'une instance, consultez la rubrique Mettre à niveau une instance ASM.

Dans la section Log Settings, définissez le Log Output Format sur JSON ou TEXT selon vos besoins.

  • Si vous sélectionnez JSON, les journaux d'accès sont envoyés vers la sortie standard du conteneur sous forme de chaînes JSON.

  • Si vous sélectionnez TEXT, les journaux d'accès sont envoyés vers la sortie standard du conteneur sous forme de texte brut.

Format de journal personnalisé

  1. Dans la section Log Settings, sélectionnez des champs, modifiez les informations des champs personnalisés ou cliquez sur l'icône 增加.png en bas de la liste des champs de journal pour ajouter un nouveau champ.

    Vous ne pouvez personnaliser le format des journaux que si l'option Enable Log Output est activée. Dans la section Log Format, les champs de journal sélectionnés par défaut sont obligatoires et ne peuvent pas être désélectionnés. Les valeurs des champs de journal peuvent être extraites des en-têtes de requête, des en-têtes de réponse ou des valeurs intégrées d'Envoy.

    Par exemple, pour enregistrer l'en-tête de requête accept-encoding, définissez la accessLogFormat key sur accept-encoding, le Type sur Request Properties et la accessLogFormat value sur Accept-Encoding. Le modèle de format pour un en-tête de requête est %REQ(HEADER_NAME)% (par exemple, %REQ(:AUTHORITY)%), pour un en-tête de réponse, il est %RESP(HEADER_NAME)% (par exemple, %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%) et pour un attribut Envoy intégré, il est %ATTRIBUTE_NAME% (par exemple, %REQUEST_DURATION%).

  2. Exécutez la commande suivante pour afficher les journaux des composants du plan de données dans le service mesh.

    kubectl logs httpbin-5c5944c58c-w**** -c istio-proxy --tail 1|grep accept-encoding --color=auto

    Exemple de sortie

    {
        "bytes_received":"0",
        "bytes_sent":"9593",
        "downstream_local_address":"192.168.0.29:80",
        "downstream_remote_address":"69.164.XXX.XX:0",
        "duration":"2",
        "istio_policy_status":"-",
        "method":"GET",
        "path":"/",
        "protocol":"HTTP/1.1",
        "request_id":"29939dc9-62be-4ddf-acf6-32cb098d****",
        "requested_server_name":"outbound_.8000_._.httpbin.default.svc.cluster.local",
        "response_code":"200",
        "response_flags":"-",
        "route_name":"default",
        "start_time":"2023-06-30T04:18:19.734Z",
        "trace_id":"-",
        "upstream_cluster":"inbound|80||",
        "upstream_host":"192.168.0.29:80",
        "upstream_local_address":"127.0.X.X:34723",
        "upstream_service_time":"2",
        "upstream_transport_failure_reason":"-",
        "user_agent":"Mozilla/5.0 zgrab/0.x",
        "x_forwarded_for":"69.164.XXX.XX",
        "authority_for":"47.110.XX.XXX",
        "upstream_response_time":"2",
        "accept-encoding":"gzip"
    }

    Le journal d'accès affiche désormais la valeur de l'en-tête Accept-Encoding que vous avez ajoutée à l'étape 1.

Filtrage des journaux

Sous la section Log Settings, sélectionnez l'option Enable Log Filter pour activer le filtrage des journaux, puis saisissez une expression de filtrage dans la zone de texte. Les journaux d'accès sont générés uniquement pour les requêtes qui correspondent à l'expression.

Par exemple, pour enregistrer uniquement les requêtes qui répondent à la condition Response Http Status >= 400, utilisez l'expression response.code >= 400. Pour plus d'informations, consultez les Expressions CEL et champs courants.

Expressions CEL et champs courants

Les expressions de filtrage des journaux sont des expressions Common Expression Language (CEL) standard. Le tableau suivant répertorie les champs courants pour les expressions CEL. Pour plus d'informations, consultez la documentation officielle de CEL et d'Envoy.

Attribut

Type

Description

request.path

string

Le chemin de la requête.

request.url_path

string

Le chemin de la requête sans la chaîne de requête.

request.host

string

La partie hôte de l'URL.

request.method

string

La méthode de la requête.

request.headers

map<string, string>

Tous les en-têtes de requête, indexés par leurs noms en minuscules.

request.useragent

string

La valeur de l'en-tête User-Agent.

request.time

timestamp

L'heure à laquelle le premier octet de la requête est reçu.

request.id

string

L'ID de la requête.

request.protocol

string

Le protocole de la requête. Valeurs valides : HTTP/1.0, HTTP/1.1, HTTP/2 ou HTTP/3.

request.query

string

La chaîne de requête de l'URL de la requête.

response.code

int

Le code d'état HTTP de la réponse.

response.code_details

string

Détails concernant le code de réponse.

response.grpc_status

int

Le code d'état gRPC dans la réponse.

response.headers

map<string, string>

Tous les en-têtes de réponse, indexés par leurs noms en minuscules.

response.size

int

La taille du corps de la réponse en octets.

response.total_size

int

La taille totale du message de réponse en octets, y compris le corps et les en-têtes.

Paramètres des métriques

Les paramètres des métriques incluent l'activation ou la désactivation de la génération de métriques et la configuration des dimensions des métriques.

Génération de métriques

Les métriques sont classées en métriques côté client et en métriques côté serveur.

  • Métriques côté client : Métriques générées lorsqu'un sidecar agit en tant que client pour initier des requêtes. Les métriques de passerelle sont également classées comme métriques côté client.

  • Métriques côté serveur : Métriques générées lorsqu'un sidecar agit en tant que serveur pour recevoir des requêtes.

  1. Dans la section Metric Settings, dans la colonne Client-Side Metrics ou Server-Side Metrics, cochez ou décochez la case Enabled d'une métrique selon vos besoins.

    • Si une métrique est activée, le sidecar ou la passerelle du plan de données expose cette métrique via le chemin /stats/prometheus sur le port 15020.

    • Si une métrique est désactivée, elle n'est pas exposée sur le port et le chemin spécifiés.

  2. Exécutez la commande suivante pour afficher les métriques exposées par un sidecar ou une passerelle.

    Vous pouvez utiliser kubectl pour exécuter une commande curl à l'intérieur du conteneur sidecar ou de la passerelle afin d'accéder au chemin /stats/prometheus sur le port local 15020 et afficher les métriques exportées.

    kubectl exec httpbin-5c5944c58c-w**** -c istio-proxy -- curl 127.0.0.1:15020/stats/prometheus|head -n 10

    Exemple de sortie :

    # TYPE istio_agent_cert_expiry_seconds gauge
    istio_agent_cert_expiry_seconds{resource_name="default"} 46725.287654548
    # HELP istio_agent_endpoint_no_pod Endpoints without an associated pod.
    # TYPE istio_agent_endpoint_no_pod gauge
    istio_agent_endpoint_no_pod 0
    # HELP istio_agent_go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
    # TYPE istio_agent_go_gc_duration_seconds summary
    istio_agent_go_gc_duration_seconds{quantile="0"} 5.0149e-05
    istio_agent_go_gc_duration_seconds{quantile="0.25"} 9.8807e-05
    ......

Dimensions des métriques

Les dimensions des métriques fournissent des informations contextuelles riches. Vous pouvez utiliser ces dimensions pour filtrer les métriques cibles dans Prometheus. Par exemple, vous pouvez utiliser la dimension source_app pour filtrer les métriques des requêtes provenant d'une application cliente spécifique.

Modifier les dimensions par défaut

Suivez ces étapes pour modifier les dimensions par défaut :

  1. Dans la section Metric Settings, dans la colonne Client-Side Metrics ou Server-Side Metrics, cliquez sur Edit dimension pour une métrique activée.

  2. Dans la boîte de dialogue Customize CLIENT dimension configuration ou Customize SERVER dimension configuration, cochez ou décochez les cases correspondant aux dimensions à exporter, puis cliquez sur Confirm.

Par exemple, si aucune dimension n'est désactivée, vous pouvez exécuter une commande curl à l'intérieur du conteneur sidecar ou de la passerelle pour accéder au chemin /stats/prometheus sur le port local 15020 et afficher les métriques exportées.

kubectl exec httpbin-5c5944c58c-w**** -c istio-proxy -- curl 127.0.0.1:15020/stats/prometheus

En prenant la métrique istio_request_bytes_sum (qui correspond à la métrique REQUEST_SIZE dans la console) comme exemple, vous pouvez voir qu'elle inclut toutes les dimensions par défaut.

istio_request_bytes_sum{reporter="destination",source_workload="istio-ingressgateway",source_canonical_service="unknown",source_canonical_revision="latest",source_workload_namespace="istio-system",source_principal="spiffe://cluster.local/ns/istio-system/sa/istio-ingressgateway",source_app="istio-ingressgateway",source_version="unknown",source_cluster="c479fc4abd2734bfaaa54e9e36fb26c01",destination_workload="httpbin",destination_workload_namespace="default",destination_principal="spiffe://cluster.local/ns/default/sa/httpbin",destination_app="httpbin",destination_version="v1",destination_service="httpbin.default.svc.cluster.local",destination_canonical_service="httpbin",destination_canonical_revision="v1",destination_service_name="httpbin",destination_service_namespace="default",destination_cluster="c479fc4abd2734bfaaa54e9e36fb26c01",request_protocol="http",response_code="200",grpc_response_status="",response_flags="-",connection_security_policy="mutual_tls"} 18000

Si vous modifiez la métrique par défaut REQUEST_SIZE côté serveur pour ne conserver que la dimension response_code, puis que vous accédez au chemin /stats/prometheus, vous verrez que la métrique n'inclut plus que la dimension response_code.

istio_request_bytes_sum{response_code="200"} 16550

Ajouter des dimensions personnalisées

Suivez ces étapes pour ajouter des dimensions personnalisées :

  1. Dans la section Metric Settings, dans la colonne Client-Side Metrics ou Server-Side Metrics, cliquez sur Edit dimension pour une métrique activée.

  2. Dans la boîte de dialogue Customize CLIENT dimension configuration ou Customize SERVER dimension configuration, sous l'option Custom Dimensions, modifiez le nom et la valeur de la dimension, puis cliquez sur Confirm.

Par exemple, si vous modifiez la métrique REQUEST_SIZE côté serveur et ajoutez une dimension personnalisée avec le nom request_path et la valeur request.path, la métrique exportée inclura la dimension personnalisée request_path lorsque vous accéderez au chemin /stats/prometheus.

istio_request_bytes_sum{response_code="200",request_path="/spec.json"} 5800
Important

Vous pouvez réduire la consommation de mémoire d'Envoy et de Prometheus en supprimant les dimensions par défaut inutiles. Toutefois, comme la plupart des dimensions sont généralement utiles, la section Metric Settings n'affiche que les dimensions que vous avez explicitement supprimées.

Paramètres de tracing

Les paramètres de tracing incluent le pourcentage d'échantillonnage et les balises personnalisées. Pour construire des chaînes d'appel complètes, le tracing nécessite des configurations de reporting cohérentes sur tous les services. Des points de terminaison de reporting ou des taux d'échantillonnage incohérents peuvent entraîner des traces incomplètes. Pour cette raison, les versions d'ASM antérieures à la 1.24.6.83 ne permettent pas les configurations de tracing au niveau du namespace ou du workload. À partir de la version 1.24.6.83, ASM prend en charge la modification des ressources Telemetry à l'aide de l'API Kubernetes pour activer les configurations de tracing au niveau du namespace et du workload. Pour plus d'informations sur la configuration des ressources Telemetry, consultez la rubrique CRD Telemetry.

Pourcentage d'échantillonnage

Vous pouvez personnaliser le pourcentage d'échantillonnage pour le tracing, qui détermine le pourcentage de requêtes pour lesquelles des traces sont générées. Une valeur de 0 désactive le tracing.

Balises personnalisées

Vous pouvez personnaliser les balises jointes aux spans de tracing signalées. Dans la section Tracing Analysis Settings, cliquez sur Add Custom Tags, puis configurez le Name, le Type et la Value.

Les types valides incluent Fixed Value, Request Header et Environment Variable. Le tableau suivant décrit chaque type et fournit des exemples.

Type

Description

Exemple de configuration

Fixed Value

La valeur de la balise est fixée à la chaîne que vous spécifiez.

  • Name : env

  • Type : Fixed Value

  • Value : prod

Request Header

La balise utilise la valeur d'un en-tête de requête spécifié. Si l'en-tête n'existe pas dans la requête, la valeur par défaut est utilisée.

Par exemple, vous pouvez obtenir la valeur de la balise à partir de l'en-tête User-Agent et utiliser unknown comme valeur par défaut si l'en-tête n'est pas présent.

  • Name : useragent

  • Type : Request Header

  • Value :

    • Header name : User-Agent

    • Default value : unknown

Environment Variable

La balise utilise la valeur d'une variable d'environnement spécifiée du workload. Si la variable d'environnement n'existe pas dans le workload, la valeur par défaut est utilisée.

Par exemple, vous pouvez obtenir la valeur de la balise à partir de la variable d'environnement ENV et utiliser unknown comme valeur par défaut si la variable n'existe pas.

  • Name : env

  • Type : Environment Variable

  • Value :

    • Nom de la variable d'environnement : ENV

    • Default value : unknown