Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Ative o rastreamento distribuído no ASM

Última atualização: Sep 12, 2026

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

Informações básicas

O rastreamento distribuído traça o perfil e monitora aplicações, especialmente aquelas baseadas em arquitetura de microsserviços. Os proxies sidecar em uma instância do ASM geram e enviam spans automaticamente. No entanto, as aplicações precisam propagar os cabeçalhos HTTP adequados para correlacionar corretamente os spans em um único trace. A aplicação deve coletar cabeçalhos específicos de cada requisição recebida e encaminhá-los a todas as requisições de saída decorrentes. O OpenTelemetry oferece suporte a diferentes propagadores, cada um com cabeçalhos distintos. A seção a seguir lista os propagadores compatíveis 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 V1.18.0.124 ou anteriores usam propagadores B3 por padrão. Versões posteriores à V1.18.0.124 utilizam propagadores W3C Trace Context como 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 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 usa 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 entrada}/productpage na barra de endereços do navegador e pressione Enter. O sistema redirecionará você à página da aplicação Bookinfo.

Visualização de aplicações

A página Applications do console do Managed Service for OpenTelemetry exibe métricas essenciais de todas as aplicações monitoradas. Isso inclui o número de requisições e erros do dia atual, além do status de integridade. Configure rótulos para as aplicações e filtre-as posteriormente.

  1. Faça login no console do Managed Service for OpenTelemetry.

  2. No painel de navegação à esquerda, clique em Applications. Selecione a região desejada na parte superior da página.

Visualização de detalhes da aplicação

A página Application Details apresenta métricas principais, topologia de chamadas e traces da aplicação em cada servidor de implantação.

  1. Faça login no console do Managed Service for OpenTelemetry.

  2. No painel de navegação à esquerda, clique em Applications. Selecione a região alvo no topo da página e clique no nome da aplicação correspondente.

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

    Na aba Overview, visualize a topologia de chamadas e as métricas de desempenho principais. Na aba Traces, confira a lista de traces da aplicação na máquina selecionada, ordenada por duração em ordem decrescente. A página lista no máximo 100 traces. Clique na aba Traces para ver os registros de rastreamento. O painel esquerdo oferece opções de ordenação por métricas como Response Time, Requests e Errors, além de filtros de instância. A lista à direita mostra informações de cada span, tais como Start Time, Span Name, Host/IP, Duration, Status e traceid. Use o campo Duration greater than e a caixa de seleção Exception para filtrar os registros. Para consultar os detalhes de log da chamada correspondente, clique em View logs.

Consulta ao gráfico cascata de um trace

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

  1. Na página Application Details, clique na aba Traces e selecione o Trace ID do trace desejado.

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

    Nota
    • O campo IP Address pode mostrar um endereço IP ou o nome da máquina, conforme a configuração de exibição definida na página Application Settings. Consulte Manage applications and tags para mais detalhes.

    • Passe o ponteiro sobre o nome de um service para visualizar informações detalhadas, incluindo duração, hora de início, tags e eventos de log. Consulte Application details para saber mais.

    O topo da página de detalhes do trace apresenta um resumo com hora de início, duração total, quantidade de aplicações, profundidade do trace e número total de spans. Abaixo desse resumo, a lista de spans usa recuos para indicar a hierarquia de chamadas entre os services. As colunas incluem Span Name, Timeline (uma barra azul que indica a porcentagem 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 coletar dados de rastreamento no Managed Service for OpenTelemetry pelo console do ASM?

  1. Verifique os logs de envio de traces.

    1. Obtenha o arquivo kubeconfig do cluster e use o kubectl para estabelecer conexão. Para mais instruções, consulte Obtain the kubeconfig file of a cluster and use kubectl to connect to the cluster.

    2. Execute o comando abaixo para verificar os logs de envio de traces dos pods associados 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 de saída do Nginx for 406, a requisição POST para /api/v2/spans retornou um 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. Analise a cota de requisições de service por dia e compare com o volume real de requisições do dia anterior.

    1. Faça login no console do Managed Service for OpenTelemetry.

    2. No painel de navegação à esquerda, clique em Cluster Configurations para conferir a cota de requisições e a contagem de ontem.

      No painel Quota configuration, o campo Configuration quota mostra o valor atual da cota em unidades de 10.000 requisições. O título do painel exibe, entre parênteses, a contagem real de requisições de ontem. Se o volume de ontem ultrapassar a cota configurada, aumente esse limite.

    Se a contagem real de requisições do dia anterior superar a cota diária estabelecida, o sistema descartará os dados reportados.

  3. Ajuste a cota diária de requisições de service.

    Se o volume diário real de requisições exceder a cota permitida, o sistema descartará os dados reportados e nenhuma informação de trace aparecerá. Para resolver isso, aumente a cota diária para um valor superior à contagem real de requisições.

    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, altere o valor de Configuration quota para um número maior que a contagem de requisições de service. Em seguida, clique em Save.

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

Por que o traceid muda depois que a requisição passa pelo gateway de entrada ou pelo sidecar?

Esse comportamento ocorre quando os propagation headers na requisição da aplicação estão incompletos, o que faz o proxy sidecar regenerá-los. Para usar um traceid personalizado, inclua pelo menos x-b3-traceid e x-b3-spanid no B3 propagation format, ou adicione no mínimo um cabeçalho traceparent no W3C Trace Context propagation format.