Em um sistema distribuído, uma única requisição pode passar por dezenas de serviços antes de ser concluída. Quando uma mensagem fica presa, um consumidor atinge o tempo limite ou a latência aumenta abruptamente, identificar a causa raiz na cadeia produtor-broker-consumidor exige visibilidade completa do fluxo de mensagens.
O ApsaraMQ for RocketMQ gera dados de rastreamento que seguem as convenções semânticas do OpenTelemetry para mensageria. Exporte esses dados para o Simple Log Service ou para o Application Real-Time Monitoring Service (ARMS) para acompanhar a entrega de mensagens, medir a latência de ponta a ponta e diagnosticar falhas.
Limitações
Antes de configurar o rastreamento, verifique as seguintes restrições:
Apenas Java SDK: Somente clientes que utilizam o SDK for Java podem reportar dados de rastreamento. Para detalhes sobre versões, consulte Notas de versão.
Mensagens transacionais: Apenas os dados relacionados à produção são rastreados em mensagens transacionais.
Apenas consumidores push: Somente mensagens consumidas por consumidores push geram dados de rastreamento. Consulte Tipos de consumidor.
Exportar dados de rastreamento
O ApsaraMQ for RocketMQ exporta dados de rastreamento compatíveis com OpenTelemetry para um servidor de análise de rastreamento. Utilize um serviço gerenciado da Alibaba Cloud ou construa seu próprio backend.
Simple Log Service
O Simple Log Service oferece painéis para monitorar o atraso no envio de mensagens, taxa de sucesso de envio, taxa de sucesso de consumo e latência de ponta a ponta. Analise requisições individuais em detalhes filtrando por ID da mensagem ou ID de rastreamento.
Configuração: Importar dados de rastreamento de aplicações Java para o Simple Log Service usando o OpenTelemetry SDK for Java
-
Painéis de demonstração:
Painel de métricas de rastreamento -- Visualize o atraso no envio de mensagens, taxas de sucesso e latência de ponta a ponta.
Painel de análise -- Investigue requisições específicas por ID da mensagem ou ID de rastreamento.
Para mais informações sobre o Simple Log Service, consulte Notas de uso.
ARMS
O Application Real-Time Monitoring Service (ARMS) fornece rastreamento distribuído por meio do componente Tracing Analysis.
Configuração: Conectar o OpenTelemetry ao Tracing Analysis
Para mais informações sobre o ARMS Tracing Analysis, consulte O que é o Tracing Analysis?
Como funciona o rastreamento
O ApsaraMQ for RocketMQ registra cada etapa do ciclo de vida de uma mensagem como um span. Cada span captura dados de tempo, metadados da mensagem e o tipo de operação.
Tipos de span
Três tipos de span cobrem todo o ciclo de vida da mensagem:
|
Tipo de span |
O que captura |
Ciclo de vida |
|
send |
Uma mensagem saindo do produtor. |
Inicia quando o produtor começa o envio e termina quando o envio é bem-sucedido, falha ou lança uma exceção. Se houver retentativas, cada tentativa gera um span separado. |
|
receive |
Uma requisição de long polling do consumidor. |
Corresponde ao ciclo de vida da operação de long polling. Desativado por padrão. |
|
process |
Um consumidor push processando uma mensagem. |
Inicia quando o callback |
Ative spans de recebimento
Os spans de recebimento vêm desativados por padrão. Para ativá-los, adicione o seguinte parâmetro JVM:
-Dotel.instrumentation.messaging.experimental.receive-telemetry.enabled=true
Relacionamentos entre spans
A relação entre os spans depende se os spans de recebimento estão ativados:
Spans de recebimento desativados (padrão): O span de processo é filho direto do span de envio.
Spans de recebimento ativados: O span de processo é filho do span de recebimento e possui um vínculo com o span de envio.

Atributos de mensageria
Cada span inclui atributos definidos pelas convenções semânticas do OpenTelemetry para spans de mensageria.
Atributos padrão
messaging.message.id: Identificador exclusivo da mensagem.
messaging.destination: Tópico ou fila de destino da mensagem.
messaging.operation: Tipo de operação: send, receive ou acknowledge.
Atributos específicos do RocketMQ
O ApsaraMQ for RocketMQ adiciona os seguintes atributos. Para a lista completa, consulte Atributos do Apache RocketMQ.
|
Atributo |
Tipo |
Descrição |
|
messaging.rocketmq.client_group |
string |
Grupo de consumidores usado para balanceamento de carga. |
|
messaging.rocketmq.client_id |
string |
Identificador exclusivo da instância do cliente. |
|
messaging.rocketmq.message.delivery_timestamp |
int |
Horário de entrega agendada para mensagens agendadas e atrasadas. |
|
messaging.rocketmq.message.group |
string |
Grupo de mensagens para mensagens ordenadas. |
|
messaging.rocketmq.message.type |
string |
Tipo de mensagem: |
|
messaging.rocketmq.message.tag |
string |
Tag usada para filtrar mensagens no lado do consumidor. |
|
messaging.rocketmq.message.keys |
string[] |
Chaves de negócio para localizar mensagens específicas. |