O valor da análise de rastreamento está na conexão. Um rastreamento forma um grafo de topologia que vincula clientes de usuário, gateways, aplicações de backend e componentes dependentes, como bancos de dados, filas de mensagens e modelos de linguagem de grande porte. Quanto maior a cobertura, mais valioso se torna o rastreamento. O rastreamento de ponta a ponta abrange todos os sistemas de TI associados para registrar os caminhos de chamada completos e os estados das solicitações do usuário nesses sistemas.
Solução de rastreamento de ponta a ponta do Alibaba Cloud
O Alibaba Cloud ARMS, incluindo o Managed Service for OpenTelemetry, oferece suporte ao rastreamento de ponta a ponta em clientes de usuário (como Web, Android e iOS), gateways de cloud (como ALB, MSE, Ingress e ASM), aplicações de backend (como Java, Go, Python e .NET) e componentes de cloud (como bancos de dados, filas de mensagens e modelos de linguagem de grande porte), conforme ilustrado na figura a seguir.

Instrumentação de rastreamento: agentes do ARMS para linguagens principais e código aberto para cobertura multilíngue
Para linguagens principais como Java, Go e Python, use os agentes proprietários do ARMS, que proporcionam maior qualidade de rastreamento, melhor desempenho, maior estabilidade e usabilidade aprimorada. Para oferecer suporte a mais linguagens, o Managed Service for OpenTelemetry é totalmente compatível com quatro grandes frameworks de rastreamento: OpenTelemetry, SkyWalking, Zipkin e Jaeger. O service também oferece suporte à instrumentação de rastreamento e ao envio de dados para mais de 10 linguagens, conforme mostrado na tabela a seguir.
Os dados são totalmente interoperáveis entre o ARMS e o Managed Service for OpenTelemetry. Use-os juntos em cenários multilíngues.
|
Linguagem de programação |
ARMS Application Monitoring (Agente proprietário, SLA garantido) |
Managed Service for OpenTelemetry (Cliente de código aberto, autogerenciado) |
Tipo de conexão recomendado |
|
Java |
Instrumentação automática |
Instrumentação automática |
ARMS |
|
Go |
Instrumentação automática |
Instrumentação automática |
ARMS |
|
Python |
Instrumentação automática |
Instrumentação automática |
ARMS |
|
Node.js |
Instrumentação automática |
Instrumentação automática |
ARMS |
|
.NET |
Não suportado |
Instrumentação automática |
OpenTelemetry |
|
PHP |
Não suportado |
Instrumentação automática |
OpenTelemetry |
|
Erlang |
Não suportado |
Instrumentação automática |
OpenTelemetry |
|
C++ |
Não suportado |
Instrumentação manual usando um SDK ou OpenTelemetry eBPF Instrumentation (OBI) |
OpenTelemetry |
|
Swift |
Não suportado |
Instrumentação manual usando um SDK ou OBI |
OpenTelemetry |
|
Ruby |
Não suportado |
Instrumentação manual usando um SDK ou OBI |
OpenTelemetry |
|
Rust |
Não suportado |
Instrumentação manual usando um SDK ou OBI |
OpenTelemetry |
O ARMS adota totalmente o ecossistema OpenTelemetry. O núcleo do agente é construído sobre o framework OpenTelemetry e fornece dados adicionais para monitoramento de recursos, diagnósticos de desempenho e segurança de aplicações. Além de dados mais ricos, o agente do ARMS oferece suporte a recursos avançados, como políticas flexíveis de amostragem de rastreamento, gerenciamento de agentes baseado em GUI, automonitoramento abrangente e degradação dinâmica de recursos, tornando-o ideal para ambientes de produção corporativos.
Coleta e processamento de rastreamento: Integração profunda com o ecossistema do Alibaba Cloud para acesso ao rastreamento com um clique
Um ponto de dor comum durante a migração para a cloud é manter a disponibilidade do service em meio a dependências complexas. O rastreamento de ponta a ponta resolve isso ao localizar rapidamente os nós que causam solicitações lentas ou incorretas, melhorando a velocidade de recuperação de falhas e reduzindo o impacto nos negócios. Então, como ingerir dados de rastreamento de products de cloud?
O Managed Service for OpenTelemetry está intimamente integrado a quase 10 products do Alibaba Cloud, permitindo a instrumentação de rastreamento interno e o envio de dados. Ative a opção de rastreamento no console de um product de cloud compatível para visualizar os dados de rastreamento correspondentes, o que simplifica muito a coleta de dados.
A seguir, veja como ativar o rastreamento em três products de cloud:
ALB: Ative a opção na área Tracing da página Listener Details.
MSE: Selecione Managed Service for OpenTelemetry ao criar uma instância.
Real User Monitoring: Selecione Tracing Configuration nas configurações do aplicativo ao criar um aplicativo.
Devido aos diferentes recursos dos products, os métodos de instrumentação de rastreamento variam. Os métodos de coleta de dados correspondentes se dividem em duas categorias principais:
Envio direto ou encaminhado de rastreamento: Por exemplo, o Real User Monitoring usa instrumentação interna e envia dados diretamente por meio de um Exporter. Isso permite uma instrumentação mais detalhada e flexível.
Conversão de log para rastreamento: Por exemplo, o ALB Gateway consome logs de acesso no backend e os converte em dados de rastreamento. Este método é menos intrusivo.
Ambos os métodos têm prós e contras. O envio direto ou encaminhado de rastreamento é geralmente recomendado como a abordagem mais padrão. No entanto, para cenários de alto desempenho ou quando a modificação de sistemas legados é difícil, a conversão de log para rastreamento é uma alternativa. Isso requer a adição de contexto de rastreamento, como um TraceId, aos logs.
A tabela a seguir lista os products de cloud, protocolos e guias de conexão que atualmente oferecem suporte ao rastreamento.
Categoria de conexão | Cliente | Guia de conexão | Protocolos suportados |
Cliente de usuário | Web/H5/Mini program | w3c, b3, jaeger, skywalking | |
Android/iOS | w3c, skywalking | ||
Gateway | MSE | w3c, b3, skywalking | |
ACK Ingress | Implement tracing for the Nginx Ingress Controller component | w3c, b3, jaeger | |
ALB | b3 | ||
ASM | b3 | ||
API Gateway | b3 | ||
Aplicação de backend | Java/Go/Python (Proprietário) | w3c, b3, jaeger, skywalking, eagle eye | |
.NET, Node.js e outras linguagens (Código aberto) | w3c, b3, jaeger, skywalking | ||
Componentes dependentes | Suporte a mais de 100 plugins, abrangendo vários tipos, como RPC, filas de mensagens, bancos de dados e agendamento de tarefas. | ||
Propagação de contexto de rastreamento: Unifique protocolos e use agentes do ARMS para conversão multiprotocolo
Para um único componente de aplicação, uma instrumentação bem-sucedida significa que é possível coletar e visualizar seus dados de rastreamento no console. No entanto, o verdadeiro rastreamento de ponta a ponta exige a conexão de rastreamentos upstream e downstream com um protocolo unificado para garantir uma cadeia ininterrupta, o que apresenta desafios técnicos e de coordenação.
O Alibaba Cloud Observability fornece rastreamento de ponta a ponta com base no protocolo W3C do OpenTelemetry e expandirá gradualmente o suporte para mais protocolos e componentes, construindo um ecossistema de rastreamento mais completo e flexível.
A cadeia de chamadas completa de ponta a ponta consiste em três fases:
Aplicação frontend: o rum-browser inicia uma solicitação
browser.request:/api/shipping.Aplicação de gateway: o ingress-nginx realiza o encaminhamento de tráfego.
Aplicação de backend: As chamadas são feitas em sequência para frontend-proxy, frontend(nodejs), ShippingService(shippingservice), quoteservice(php) e CurrencyService(currencyservice cpp).
Na página Trace Details, os Spans de cada service são exibidos em um gráfico de cascata que mostra a hierarquia de chamadas e a distribuição de duração (duração total: 24 ms). O painel direito permite visualizar os atributos de um Span selecionado, incluindo o nome da aplicação, o nome da interface, o endereço IP, o statusMessage e a lista Attributes.
Unificar a pilha de protocolos de ponta a ponta para aplicações existentes é mais desafiador do que para aplicações novas, especialmente ao trocar pilhas de tecnologia — por exemplo, migrar do SkyWalking para o OpenTelemetry. É necessário manter o sistema de O&M existente em execução enquanto valida o novo, e o maior desafio é garantir que dois sistemas de rastreamento diferentes possam coexistir sem interromper a continuidade do rastreamento.
Para resolver isso, o agente proprietário do ARMS inclui otimizações de compatibilidade que permitem a coexistência de agentes duplos, garantindo que ambos os sistemas funcionem correta e estavelmente até que a migração seja concluída. A figura a seguir ilustra esse cenário.

O agente proprietário do ARMS oferece suporte à detecção e propagação multiprotocolo. Quando os sistemas upstream e downstream são difíceis de alterar, use o agente do ARMS para conversão de protocolo. Por exemplo, se a aplicação upstream A usar o protocolo Jaeger, o agente do ARMS recebe o contexto Jaeger e propaga os contextos Jaeger e Zipkin B3 para o downstream. A aplicação downstream B pode então usar o protocolo Zipkin B3, alcançando a propagação do TraceId e conectando o rastreamento completo.