Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Ativar rastreamento distribuído no ASM

Última atualização: Sep 21, 2026

Service Mesh (ASM) integra-se ao Managed Service for OpenTelemetry para ajudar você a identificar gargalos de desempenho em aplicações distribuídas. Visualize dados de rastreamento, exiba topologias de trace, analise dependências entre aplicações e contabilize requisições.

Informações gerais

O rastreamento distribuído analisa e monitora aplicações, especialmente as baseadas em arquitetura de microsserviços. Os proxies sidecar em uma instância do ASM geram e enviam spans automaticamente, mas as aplicações precisam propagar os cabeçalhos HTTP adequados para que os spans sejam correlacionados corretamente em um único trace. Especificamente, a aplicação deve coletar determinados cabeçalhos de cada requisição recebida e encaminhá-los a todas as requisições de saída disparadas por essa requisição. O OpenTelemetry suporta diferentes propagadores, cada um utilizando cabeçalhos distintos. A seção a seguir lista os propagadores suportados e seus respectivos cabeçalhos.

Propagadores B3

  • x-request-id

  • x-b3-traceid

  • x-b3-spanid

  • x-b3-parentspanid

  • x-b3-sampled

  • x-b3-flags

  • x-ot-span-context

Propagadores W3C Trace Context

  • traceparent

  • tracestate

Nota

Instâncias do ASM na versão V1.18.0.124 ou anterior utilizam propagadores B3 por padrão. Instâncias do ASM em versões posteriores à V1.18.0.124 utilizam propagadores W3C Trace Context por padrão.

Pré-requisitos

Descrição da aplicação de exemplo

Na aplicação de exemplo Bookinfo, o service productpage (implementado em Python) utiliza bibliotecas do OpenTracing para extrair os cabeçalhos necessários das requisições HTTP no formato de propagação B3.

def getForwardHeaders(request):
    headers = {}
    # x-b3-*** headers can be populated using the opentracing span
    span = get_current_span()
    carrier = {}
    tracer.inject(
        span_context=span.context,
        format=Format.HTTP_HEADERS,
        carrier=carrier)
    headers.update(carrier)
    # ...
    incoming_headers = ['x-request-id']
    # ...
    for ihdr in incoming_headers:
        val = request.headers.get(ihdr)
        if val is not None:
            headers[ihdr] = val
    return headers

O service reviews (implementado em Java) também utiliza cabeçalhos HTTP no formato de propagação B3.

@GET
@Path("/reviews/{productId}")
public Response bookReviewsById(@PathParam("productId") int productId,
                            @HeaderParam("end-user") String user,
                            @HeaderParam("x-request-id") String xreq,
                            @HeaderParam("x-b3-traceid") String xtraceid,
                            @HeaderParam("x-b3-spanid") String xspanid,
                            @HeaderParam("x-b3-parentspanid") String xparentspanid,
                            @HeaderParam("x-b3-sampled") String xsampled,
                            @HeaderParam("x-b3-flags") String xflags,
                            @HeaderParam("x-ot-span-context") String xotspan) {
  if (ratings_enabled) {
    JsonObject ratingsResponse = getRatings(Integer.toString(productId), user, xreq, xtraceid, xspanid, xparentspanid, xsampled, xflags, xotspan);

Exemplo de acesso

Insira uma URL no formato http://{endereço ip do gateway de ingresso}/productpage na barra de endereços do navegador e pressione Enter. Você será direcionado à página da aplicação Bookinfo.

Visualizar aplicações

A página Applications do console do Managed Service for OpenTelemetry exibe métricas essenciais de todas as aplicações monitoradas, incluindo o número de requisições e erros no dia atual e o status de integridade. Também é possível configure tags para as aplicações e filtrá-las por tag.

  1. Acesse o console do Managed Service for OpenTelemetry.

  2. No painel de navegação à esquerda, clique em Applications. Na parte superior da página, selecione a região de destino.

Visualizar detalhes da aplicação

A página Application Details exibe métricas essenciais, a topologia de chamadas e os traces da aplicação em cada servidor onde ela está implantada.

  1. Acesse o console do Managed Service for OpenTelemetry.

  2. No painel de navegação à esquerda, clique em Applications. Na parte superior da página, selecione a região de destino e clique no nome da aplicação desejada.

  3. No painel de navegação à esquerda, clique em Application Details. Na lista de máquinas à esquerda, clique em All ou em uma máquina identificada pelo seu endereço ip.

    Na aba Overview, visualize a topologia de chamadas e as principais métricas de desempenho. Na aba Traces, é exibida a lista de traces da aplicação na máquina selecionada, ordenados por duração em ordem decrescente. A página lista no máximo 100 traces. Clique em na aba Traces para ver a lista de registros de trace. O painel à esquerda oferece métricas de ordenação como Response Time, Requests e Errors, além de filtragem por instância. A lista à direita exibe informações de cada span, como Start Time, Span Name, Host/IP, Duration, Status e traceid. Filtre os registros usando o campo Duration greater than e a caixa de seleção Exception. Clique em View logs para ver os detalhes do log da chamada correspondente.

Visualizar o gráfico de cascata de um trace

O gráfico de cascata de um trace exibe o horário de geração do log, o status, o endereço ip ou nome do servidor, o nome do service e a linha do tempo.

  1. Na página Application Details, clique na aba Traces e, em seguida, clique no Trace ID do trace desejado.

  2. Na página Traces exibida, visualize o gráfico de cascata do trace.

    Nota
    • O campo IP Address pode exibir um endereço ip ou um nome de máquina, conforme a configuração de exibição na página Application Settings. Para obter mais informações, consulte Manage applications and tags.

    • Posicione o ponteiro sobre um nome de service para ver as informações do service, incluindo duração, horário de início, tags e eventos de log. Para obter mais informações, consulte Application details.

    A parte superior da página de detalhes do trace exibe um resumo com horário de início, duração total, número de aplicações, profundidade do trace e quantidade total de spans. Abaixo do resumo, a lista de spans usa recuo para mostrar a hierarquia de chamadas entre os services. As colunas incluem Span Name, Timeline (uma barra azul que indica o percentual de tempo consumido), Application Name, Start Time, IP Address e Status.

Perguntas frequentes

Por que não consigo visualizar as informações de trace após enviar os dados de rastreamento ao Managed Service for OpenTelemetry pelo console do ASM?

  1. Verifique os logs de envio de trace.

    1. Obtenha o arquivo kubeconfig do cluster e use kubectl para conectar-se ao cluster. Para obter mais informações, consulte Obtain the kubeconfig file of a cluster and use kubectl to connect to the cluster.

    2. Execute o seguinte comando para visualize os logs de envio de trace dos pods relacionados ao deployment tracing-on-external-zipkin no namespace istio-system:

      kubectl logs "$(kubectl get pods -n istio-system  -l app=tracing -o jsonpath='{.items[0].metadata.name}')" -n istio-system -c  nginx

      Se o valor de status no log Nginx de saída for 406, significa que a requisição POST para /api/v2/spans retornou o código de status HTTP 406.

      remote_addr:192.168.26.98 time_local:17/Aug/2021:08:15:17 +0000 method:POST uri:/api/v2/spans host:zipkin  status:406   bytes_sent:1146 referer:- useragent:- forwardedfor:192.168.26.98  request_time:0.012  upstream_response_time:0.011
      remote_addr:192.168.26.98 time_local:17/Aug/2021:08:15:17 +0000 method:POST uri:/api/v2/spans host:zipkin  status:406   bytes_sent:1146 referer:- useragent:- forwardedfor:192.168.26.98  request_time:0.012  upstream_response_time:0.013
  2. Verifique a cota de requisições de service por dia e o número real de requisições do dia anterior.

    1. Acesse o console do Managed Service for OpenTelemetry.

    2. No painel de navegação à esquerda, clique em Cluster Configurations para visualize a cota de requisições e o total de requisições do dia anterior.

      No painel Quota configuration, o campo Configuration quota exibe o valor atual da cota em unidades de 10.000 requisições. O total real de requisições do dia anterior aparece entre parênteses no título do painel. Caso o total de requisições do dia anterior ultrapasse a cota configurada, aumente a cota.

    Se o total real de requisições do dia anterior exceder a cota diária configurada, os dados reportados serão descartados.

  3. Modifique a cota de requisições de service por dia.

    Se o total diário real de requisições ultrapassar a cota diária, os dados reportados serão descartados e nenhuma informação de trace será exibida. Aumente a cota diária para um valor superior ao total diário real de requisições para resolver o problema.

    1. No painel de navegação à esquerda do console do Managed Service for OpenTelemetry, clique em Cluster Configurations.

    2. Na aba Cluster Configurations, na área Quota configuration, modifique o campo Configuration quota para um valor superior ao total de requisições do service e clique em Save.

    3. Na caixa de diálogo Prompt, clique em OK.

Por que o traceid muda após a requisição ser processada pelo gateway de ingresso ou pelo sidecar?

Esse problema ocorre quando os propagation headers nas requisições da sua aplicação estão incompletos, fazendo com que o proxy sidecar os regenere. Para usar um traceid personalizado, inclua ao menos x-b3-traceid e x-b3-spanid em B3 propagation format, ou ao menos um cabeçalho traceparent em W3C Trace Context propagation format.