Quando uma requisição atravessa vários serviços, mas os traces cobrem apenas parte deles, pontos cegos dificultam a identificação da causa raiz de falhas ou lentidão. O rastreamento de ponta a ponta elimina esses pontos cegos ao vincular terminais de usuário, gateways de nuvem, aplicações de backend e serviços dependentes em um único trace contínuo.
O Application Real-Time Monitoring Service (ARMS) e o Managed Service for OpenTelemetry oferecem suporte conjunto ao rastreamento de ponta a ponta nas seguintes camadas:
Terminais de usuário: Browser, Android e iOS
Gateways de nuvem: Application Load Balancer (ALB), Microservice Engine (MSE), NGINX Ingress Controller e Service Mesh
Aplicações de backend: Java, Go, Python, .NET, entre outras
Serviços dependentes: Bancos de dados, filas de mensagens e modelos grandes

Escolha a abordagem de instrumentação adequada
Há dois caminhos de instrumentação disponíveis. Em ambientes com múltiplas linguagens, utilize ambos simultaneamente, pois o ARMS e o Managed Service for OpenTelemetry são totalmente interoperáveis.
ARMS Application Monitoring (recomendado para Java, Go e Python): Agente desenvolvido internamente com SLA garantido. Oferece instrumentação automática, políticas flexíveis de amostragem, gerenciamento de agente, automonitoramento e degradação dinâmica de recursos.
Managed Service for OpenTelemetry (demais linguagens): Cliente open source compatível com OpenTelemetry, SkyWalking, Zipkin e Jaeger. Suporta instrumentação automática ou manual para mais de 10 linguagens.
|
Linguagem |
ARMS Application Monitoring |
Managed Service for OpenTelemetry |
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 |
Sem suporte |
Instrumentação automática |
OpenTelemetry |
|
.NET |
Sem suporte |
Instrumentação automática |
OpenTelemetry |
|
PHP |
Sem suporte |
Instrumentação automática |
OpenTelemetry |
|
Erlang |
Sem suporte |
Instrumentação automática |
OpenTelemetry |
|
C++ |
Sem suporte |
Instrumentação manual |
OpenTelemetry |
|
Swift |
Sem suporte |
Instrumentação manual |
OpenTelemetry |
|
Ruby |
Sem suporte |
Instrumentação manual |
OpenTelemetry |
|
Rust |
Sem suporte |
Instrumentação manual |
SkyWalking |
Agente ARMS para Java v4.0
Lançado em 2024, o agente ARMS para Java v4.0 foi construído inteiramente sobre o framework OpenTelemetry. Além do rastreamento padrão, captura dados de monitoramento de recursos, diagnósticos de desempenho e segurança da aplicação. O agente oferece suporte a:
Políticas flexíveis de amostragem de traces
Gerenciamento de agente com automonitoramento
Degradação dinâmica de recursos para garantir estabilidade em produção
Integre o rastreamento aos serviços Alibaba Cloud
Um desafio comum na nuvem é determinar se um problema de desempenho tem origem no seu código, em um gateway de nuvem ou em um serviço gerenciado. O rastreamento de ponta a ponta resolve essa questão ao incluir spans de serviços de nuvem no mesmo trace dos spans da sua aplicação.
O Managed Service for OpenTelemetry integra-se a quase 10 serviços Alibaba Cloud. Para começar a coletar dados de trace, ative a opção de rastreamento no console de cada serviço.
Métodos de coleta de traces
Os serviços de nuvem coletam dados de trace de duas formas:
|
Método de coleta |
Funcionamento |
Exemplo |
Compromisso |
|
Relatório direto de traces (recomendado) |
O serviço instrumenta internamente e relata spans por meio de um Exporter. |
User Experience Monitoring (RUM) |
Mais detalhado e flexível |
|
Conversão de log para trace |
Sistemas de backend convertem logs de acesso em dados de trace. |
ALB |
Menos intrusivo, porém menos granular |
O relatório direto segue a instrumentação padrão. Utilize a conversão de log para trace quando o sistema tiver restrições rigorosas de desempenho ou quando a instrumentação direta for impraticável, desde que os logs contenham contexto de trace (como TraceId).
Serviços de nuvem e protocolos de rastreamento suportados
Categoria | Serviço | Guia de configuração | Protocolo de rastreamento |
Terminal de usuário | Aplicações web, aplicações HTML5 e mini programs | Ativar rastreamento de ponta a ponta para aplicação web ou mini program | W3C, B3, Jaeger, SkyWalking |
Aplicações Android e iOS | W3C, SkyWalking | ||
Gateway | MSE | W3C, B3, SkyWalking | |
NGINX Ingress Controller | W3C, B3, Jaeger | ||
ALB | B3 | ||
Service Mesh | B3 | ||
API Gateway | B3 | ||
Aplicação de backend | Java, Go, Python (agente ARMS) | W3C, B3, Jaeger, SkyWalking, EagleEye | |
.NET, Node.js e outras linguagens | W3C, B3, Jaeger, SkyWalking | ||
Serviço dependente | Mais de 100 componentes suportados. Abrange RPC, filas de mensagens, bancos de dados e agendamento de tarefas. | ||
Propague o contexto de trace entre serviços
Instrumentar serviços individualmente é apenas o primeiro passo. Os serviços upstream e downstream devem concordar com um protocolo de propagação de contexto de trace para que os spans se conectem em um único trace contínuo.
O Managed Service for OpenTelemetry fornece conectividade de trace de ponta a ponta baseada no protocolo W3C Trace Context e expande progressivamente o suporte a protocolos e serviços adicionais.

Migre entre sistemas de rastreamento com coexistência de agentes duplos
Unificar protocolos em serviços que já executam diferentes sistemas de rastreamento é um desafio comum, especialmente durante transições tecnológicas, como a migração do SkyWalking para o OpenTelemetry.
O agente ARMS suporta coexistência de agentes duplos: os sistemas de rastreamento antigo e novo funcionam lado a lado. Isso permite validar a nova configuração sem interromper o monitoramento de produção. Remova o agente antigo após concluir a migração.

Utilize o agente ARMS como mediador de protocolos
Quando os serviços upstream e downstream usam protocolos de propagação diferentes e nenhum deles pode alternar facilmente, o agente ARMS atua como mediador de protocolos. Ele reconhece o contexto de trace recebido em um formato e o encaminha em outro.
Exemplo: A Aplicação A envia traces usando o protocolo Jaeger. O agente ARMS recebe o contexto Jaeger e o encaminha nos formatos Jaeger e Zipkin B3 para a Aplicação B downstream, que espera B3. A continuidade do trace é preservada através da fronteira de protocolos sem alterações de código em nenhuma das aplicações.
Planeje sua implementação
Para grandes sistemas distribuídos, ative o rastreamento de ponta a ponta de forma incremental, em vez de fazer tudo de uma vez:
Comece pelos caminhos críticos de negócio. Identifique as requisições mais importantes para o seu negócio ou com maior probabilidade de exigir troubleshooting. Instrumente esses serviços primeiro.
Expanda para serviços adjacentes. Após os serviços principais relatarem traces, verifique a topologia de traces em busca de chamadas externas para serviços não instrumentados. Ative o rastreamento para eles em seguida.
Unifique os protocolos. Se os serviços utilizarem protocolos de rastreamento diferentes, implante o agente ARMS como mediador de protocolos ou planeje uma migração faseada com coexistência de agentes duplos.
Ative o rastreamento de serviços de nuvem. Ligue o rastreamento para gateways de nuvem e serviços dependentes a fim de fechar as lacunas restantes na topologia de traces.
Ajuste a amostragem. Depois de alcançar cobertura total, ajuste as políticas de amostragem (disponíveis no agente ARMS para Java v4.0) para equilibrar a profundidade da observabilidade com o custo de recursos.