Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Use o plug-in Wasm para adicionar dimensões às métricas de monitoramento do ASM

Última atualização: Jun 28, 2026

Service Mesh (ASM) oferece diversas métricas de monitoramento integradas e múltiplas dimensões para ajudar você a compreender melhor a execução em tempo real das suas aplicações. Com seu mecanismo de extensão avançado, o ASM permite definir lógicas de processamento com base no conteúdo da requisição ou da resposta e adicionar os resultados como dimensões nas métricas de monitoramento. Este tópico descreve como utilizar um plug-in Wasm para incluir dimensões personalizadas nas métricas de monitoramento existentes no ASM.

Informações básicas

O ASM fornece várias métricas de monitoramento, incluindo istio_requests_total e istio_request_duration_milliseconds. Por padrão, essas métricas possuem algumas dimensões configuradas, como source_workload, destination_workload e response_code. Configure as métricas geradas pelo proxy do mesh com base nessas dimensões. Para mais informações, consulte Configurar definições de observabilidade. Assim, é possível criar diversos painéis e regras de alerta.

Pré-requisitos

Etapa 1: Escrever um plug-in Wasm e aplicá-lo à aplicação HTTPBin

Esta seção explica como desenvolver um plug-in Wasm em Rust, decodificar o user-name presente no cabeçalho da requisição usando Base64 e adicioná-lo como dimensão na métrica istio_requests_total.

A API para outras linguagens é semelhante à dos plug-ins em Rust. Caso escreva plug-ins Wasm em outra linguagem, consulte a documentação do SDK correspondente.
  1. Obtenha o código-fonte do plug-in.

  2. Compile e implante o plug-in Wasm. Para mais detalhes, consulte Escrever um plug-in Wasm em Rust para um proxy Envoy no ASM.

    Este plug-in chama a função SetProperty para definir o resultado da análise como um filter_state. O arquivo YAML de exemplo para o WasmPlugin é apresentado abaixo.

    apiVersion: extensions.istio.io/v1alpha1
    kind: WasmPlugin
    metadata:
      name: add-metrics-log
      namespace: default
    spec:
      imagePullPolicy: IfNotPresent
      selector:
        matchLabels:
          app: httpbin
      url: oci://registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/asm-wasm-rust-add-metrics-tag:v1.22.6.7-g1926b20-aliyun
      phase: AUTHN
    A imagem deste exemplo está armazenada em um repositório público, portanto não é necessário configurar wasm-secrets . Se o ACR utilizado for um repositório privado, faça os ajustes necessários conforme o arquivo YAML de exemplo em Escrever um plug-in Wasm em Rust para um proxy Envoy no ASM .

Etapa 2: Modificar as configurações de observabilidade para adicionar dimensões personalizadas

  1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  2. Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha Observability Management Center > Observability Settings.

  3. Na aba Metric Settings, ative Client-side Metrics e Server-side Metrics para REQUEST_COUNT. Em seguida, adicione uma dimensão personalizada chamada user_name com o valor filter_state["wasm.user-name"] em cada métrica.

  4. Clique em Submit para adicionar o filter_state do plug-in Wasm como uma dimensão da métrica.

Etapa 3: Acessar um serviço HTTPBin

  1. Execute o comando abaixo para acessar o serviço HTTPBin.

    curl ${IP address of ASM gateway}:80/status/418 --header "user-name:YXNtLXRlc3QtdXNlcgo="
    YXNtLXRlc3QtdXNlcgo= corresponde ao resultado de asm-test-user codificado em Base64.

    Saída esperada:

        -=[ teapot ]=-
    
           _...._
         .'  _ _ `.
        | ."` ^ `". _,
        \_;`"---"`|//
          |       ;/
          \_     _/
            `"""`
  2. Utilize o arquivo kubeconfig do cluster ASM no plano de dados para executar o seguinte comando e visualizar as métricas do Prometheus referentes ao pod do HTTPBin.

    kubectl exec deploy/httpbin -it -c istio-proxy -- curl localhost:15000/stats/prometheus | grep istio_requests_total

    Saída esperada:

    # TYPE istio_requests_total counter
    istio_requests_total{reporter="destination",source_workload="istio-ingressgateway",...,user_name="asm-test-user"} 3

    Assim, você pode especificar informações estatísticas para usuários específicos no Prometheus com base nessa dimensão.