ALB oferece suporte a rastreamento. Após ativar esse recurso, o ALB injeta automaticamente cabeçalhos de rastreamento ao encaminhar requisições, permitindo obter dados completos de rastreamento — incluindo a origem da requisição, os nós percorridos e o tempo de resposta. Assim, você pode localizar e resolver rapidamente gargalos de desempenho em arquiteturas distribuídas.
Informações gerais
A análise de rastreamento fornece aos desenvolvedores de aplicações distribuídas ferramentas como reconstrução completa da cadeia de chamadas, estatísticas de volume de requisições, visualização de topologia e análise de dependências entre aplicações. Essas ferramentas ajudam a analisar e diagnosticar rapidamente gargalos de desempenho em arquiteturas de aplicações distribuídas.
Um registro de rastreamento corresponde a um call chain (Trace). Em termos gerais, uma cadeia de chamadas representa o caminho de execução de uma transação ou fluxo de trabalho em um sistema distribuído. Trata-se de um grafo acíclico dirigido (DAG) composto por múltiplos spans; cada span representa um segmento nomeado e cronometrado de execução contínua dentro da cadeia de chamadas.
Após ativar o rastreamento do ALB, o ALB injeta ou atualiza automaticamente os cabeçalhos HTTP de rastreamento ao encaminhar requisições e reporta os dados de rastreamento para o Alibaba Cloud Managed Service for OpenTelemetry. O rastreamento do ALB é compatível com os métodos OpenTelemetry e Zipkin.
Métodos de rastreamento
OpenTelemetry
Quando o rastreamento do ALB está ativado e o tipo OpenTelemetry é selecionado, o ALB adiciona ou atualiza o campo traceparent no cabeçalho HTTP antes de encaminhar uma requisição para um servidor de backend. O formato do campo traceparent é {version}-{traceid}-{parentid}-{traceflags}. A tabela a seguir descreve cada parte.
|
Campo |
Descrição |
Formato |
|
|
A versão do OpenTelemetry utilizada. |
Sempre |
|
|
O ID que identifica este rastreamento. |
Número hexadecimal de 32 dígitos. |
|
|
O ID que identifica o nó atual na cadeia de rastreamento. |
Número hexadecimal de 16 dígitos. |
|
|
Indica se esta requisição foi amostrada. |
|
Cenário 1: A requisição não contém traceparent
Quando o cabeçalho da requisição enviada pelo cliente não contém o campo traceparent, o ALB gera um campo traceparent completo e o insere no cabeçalho HTTP.
Cenário 2: A requisição já contém traceparent
Quando um serviço upstream já inclui o campo traceparent no cabeçalho da requisição, o ALB herda os valores de version, traceid e traceflags, e gera apenas um novo parentid.
A tabela a seguir compara os valores dos campos:
|
Parte |
Valor na requisição upstream |
Valor encaminhado pelo ALB |
Processamento |
|
|
|
|
Herdado |
|
|
|
|
Herdado |
|
|
|
|
Recém-gerado |
|
|
|
|
Herdado |
Zipkin
Quando o rastreamento do ALB está ativado e o tipo Zipkin é selecionado, o ALB adiciona ou atualiza os campos X-B3-* no cabeçalho HTTP antes de encaminhar uma requisição para um servidor de backend. A tabela a seguir descreve cada campo.
|
Campo |
Descrição |
Formato |
|
|
O ID que identifica este rastreamento. |
Número hexadecimal de 16 dígitos. |
|
|
O ID que identifica o nó atual na cadeia de rastreamento. |
Número hexadecimal de 16 dígitos. |
|
|
O ID que identifica o nó anterior na cadeia de rastreamento. |
Número hexadecimal de 16 dígitos. |
|
|
Indica se esta requisição foi amostrada. |
|
Cenário 1: A requisição não contém cabeçalhos de rastreamento
Quando o cabeçalho da requisição enviada pelo cliente não contém os campos X-B3-*, o ALB atua como nó de source da cadeia de rastreamento, gera os campos X-B3-TraceId, X-B3-SpanId e X-B3-Sampled e os insere no cabeçalho HTTP. Como não há nó upstream na cadeia, a requisição encaminhada não contém o campo X-B3-ParentSpanId.
Cenário 2: A requisição já contém cabeçalhos de rastreamento
Quando um serviço upstream já inclui os campos completos X-B3-* no cabeçalho da requisição, o ALB herda os valores de X-B3-TraceId e X-B3-Sampled, gera um novo X-B3-SpanId e repassa o X-B3-SpanId da requisição upstream para o servidor de backend como X-B3-ParentSpanId.
A tabela a seguir compara os valores dos campos:
|
Campo |
Valor na requisição upstream |
Valor encaminhado pelo ALB |
Processamento |
|
|
|
|
Herdado |
|
|
|
|
Recém-gerado |
|
|
|
|
Utiliza o SpanId upstream |
|
|
|
|
Herdado |
Escopo de aplicação
Apenas instâncias ALB das edições Standard e WAF Enhanced oferecem suporte a rastreamento. Instâncias ALB da edição Basic não são compatíveis com esse recurso.
É necessário ter created an ALB instance e created a server group.
É necessário ter configured a listener para a instância e associado um grupo de servidores.
-
É necessário ter created an ECS instance como servidor de backend, deployed the Nginx service na instância ECS e added the ECS instance to the server group.
Etapa 1: Ativar o rastreamento
Acesse o ALB console, selecione a região onde sua instância está localizada, localize a instância de destino e clique em seu id.
Clique na aba Listener, localize o listener de destino e clique em seu id.
Na seção Tracing da aba Listener Details, ative o botão Tracing.
-
Na caixa de diálogo Enable Tracing, preencha as configurações a seguir e clique em Save.
-
Activate Service
Activate Managed Service for OpenTelemetry: Se for a primeira vez que utiliza o service, selecione o contrato de service para confirme a ativação.
-
Create Access Log (caso ainda não tenha sido criado para a instância ALB de destino)
-
Project: Unidade de gerenciamento de recursos no Simple Log Service, utilizada para isolamento e controle de recursos.
Select Project: Selecione um projeto existente na lista suspensa.
Create Project: Insira um nome de projeto no campo.
-
Logstore: Unidade no Simple Log Service para coleta, armazenamento e consulta de dados de log.
Select Logstore: Selecione um Logstore existente na lista suspensa.
Create Logstore: Insira um nome de Logstore no campo. Caso selecione Create Project, você também deve selecionar Create Logstore.
-
-
Enable Tracing Analysis
Tracing Analysis Protocol: Selecione OpenTelemetry(W3C) ou Zipkin(B3).
Sampling Rate: Valores válidos: 1 a 100. Valor padrão: 100. Ajuste a taxa de amostragem para controlar o volume de dados de rastreamento reportados.
Notes on Creating Service-linked Role: Ao executar esta operação, o sistema cria automaticamente uma função vinculada ao service.
-
Etapa 2: Visualizar os dados de rastreamento
Acesse um terminal cliente e teste a conectividade com o servidor de backend. Para mais informações, consulte Quickly implement IPv4 load balancing with ALB.
Acesse o ALB console, selecione a região onde sua instância está localizada, localize a instância de destino e clique em seu id.
Clique na aba Listener, localize o listener de destino e clique em seu id.
-
Na seção Tracing da aba Listener Details, clique em View ao lado de Trace Analysis e acesse o console do Managed Service for OpenTelemetry para visualize os trace data.
A barra de consulta no topo da página já inclui automaticamente os filtros
attributes.app_lb_ideattributes.slb_vport. O painel de filtros rápidos à esquerda permite filtrar por status, intervalo de duração e nome da aplicação.
Mais informações
Desativar o rastreamento
O rastreamento depende dos logs de acesso. Desativar os logs de acesso torna o rastreamento indisponível, portanto, proceda com cautela. Após desativar o rastreamento, os logs de acesso permanecem ativos. Caso não sejam mais necessários, desative-os manualmente.
Quando o rastreamento é desativado em todos os listeners de uma instância ALB, o ALB interrompe o envio de dados de rastreamento para o Managed Service for OpenTelemetry.
Faturamento
Ao utilizar o rastreamento, a Alibaba Cloud ativa automaticamente o Managed Service for OpenTelemetry e o service de access log. Após a ativação, são cobradas taxas pelo reporte de dados, armazenamento de rastreamentos e serviços de log.
Regiões com suporte ao rastreamento do ALB
Regiões de nuvem pública
|
Área |
Região |
|
China |
China (Hangzhou), China (Shanghai), China (Shenzhen), China (Chengdu), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Ulanqab), China (Hong Kong), China (Guangzhou) e China (Heyuan) |
|
Ásia-Pacífico |
Singapore, Malaysia (Kuala Lumpur), Japan (Tokyo), Indonesia (Jakarta) |
|
Europa e Américas |
UK (London), Germany (Frankfurt), US (Virginia) e US (Silicon Valley) |