AutoTracing - 消息队列++,Pulsar、NATS、ActiveMQ、RabbitMQ、ZeroMQ
2024-06-14AutoTracing 在 v6.5 中支持的消息队列协议大爆发,新增了对 Pulsar、NATS、ActiveMQ、RabbitMQ、ZeroMQ 的支持。
DeepFlow 支持采集的消息队列协议家族
0x0: Pulsar
Apache Pulsar 是 Apache 软件基金会的顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性。
deepflow-agent 默认会采集 Pulsar 协议的如下字段:
- protocol_version
- command
- proxy_to_broker_url
- topic
- request_id
- code
- status
- exception
- traceparent, sw8, …
- x_request_id
详细的字段映射关系请参考 DeepFlow 文档。
0x1: NATS
NATS 是一个轻量级、高性能的消息传递系统,适用于构建微服务、物联网和云原生应用等场景。其简单易用的 API、高性能和灵活性使其在许多应用场景中成为理想的选择。
deepflow-agent 默认会采集 NATS 协议的如下字段:
- version
- NatsMessage
- server_name
- subject
- traceparent, sw8, …
详细的字段映射关系请参考 DeepFlow 文档。
0x2: ActiveMQ
Apache ActiveMQ 是一种流行的开源消息中间件,基于 Java Message Service(JMS)规范实现,由 Apache 软件基金会开发和维护。它支持多种消息协议,如 OpenWire、Stomp、AMQP、MQTT 等,可以在分布式应用程序之间可靠地传递消息,实现解耦和异步通信。
deepflow-agent 默认会采集 ActiveMQ OpenWire 协议的如下字段:
- version
- OpenWireCommand
- broker_url
- topic
- command_id
- error_message
- traceparent, sw8, …
- correlation_id
详细的字段映射关系请参考 DeepFlow 文档。
0x3: RabbitMQ
RabbitMQ 是一个由 Erlang 开发的 AMQP(Advanced Message Queuing Protocol)的开源实现。
deepflow-agent 默认会采集 RabbitMQ AMQP 协议的如下字段:
- version
- class_id
- method_id
- vhost
- routing_key
- queue
- traceparent, sw8, …
详细的字段映射关系请参考 DeepFlow 文档。
0x4: ZeroMQ
ZeroMQ 又称 ØMQ、0MQ、ZMQ,号称最快的消息队列系统,专门为高吞吐量/低延迟的场景开发,在金融界的应用中经常使用,偏重于实时数据通信场景。
deepflow-agent 默认会采集 ZeroMQ ZMTP 协议的如下字段:
- version
- frame_type
- subscription
- error message
详细的字段映射关系请参考 DeepFlow 文档。
0x5: 什么是 DeepFlow
DeepFlow 是云杉网络开发的一款可观测性产品,旨在为复杂的云原生及 AI 应用提供深度可观测性。DeepFlow 基于 eBPF
实现了应用性能指标、分布式追踪、持续性能剖析等观测信号的零侵扰(Zero Code
)采集,并结合智能标签(SmartEncoding
)技术实现了所有观测信号的全栈(Full Stack
)关联和高效存取。使用 DeepFlow,可以让云原生及 AI 应用自动具有深度可观测性,从而消除开发者不断插桩的沉重负担,并为 DevOps/SRE 团队提供从代码到基础设施的监控及诊断能力。
GitHub 地址:https://github.com/deepflowio/deepflow
访问 DeepFlow Demo,体验零侵扰、全栈的可观测性。