AutoTracing - WebAssembly 插件支持增强更多协议
2024-06-15WebAssembly(Wasm)插件系统通过在固定的地方调用 Wasi Export Function 实现一些用户自定义的功能,我们在这个 GitHub 仓库里提供了一些示例,通过示例你可以感受到目前 DeepFlow Wasm Plugin 能实现哪些功能:
| 类别 | 目录 | 描述 |
|---|---|---|
| 增强已知协议 | http | 解析 JSON over HTTP |
| http_status_rewrite | 解析 JSON over HTTP | |
| dubbo | 解析 JSON over Dubbo | |
| nats | 解析 Protobuf (nRPC) over NATS | |
| zmtp | 解析 Protobuf over ZMTP | |
| 当做新协议解析 | krpc | 解析 Protobuf over TCP |
| go_http2_uprobe | 解析 Protobuf over HTTP2 | |
| dns | 演示如何将 DNS 当做一种新协议解析 |
如上表所示,Wasm 插件在 v6.5 中支持了对更多协议的增强,包括 Dubbo、NATS、ZeroMQ。
关于 Wasm Plugin 的开发你也可以参考这篇博客文章:使用 DeepFlow Wasm 插件实现业务可观测性。
0x0: Dubbo
示例代码展示了如何使用 Wasm 插件解析 Dubbo 协议中的 JSON Payload,并提取感兴趣的业务字段。
0x1: NATS
NATS 是一个轻量级、高性能的消息传递系统,适用于构建微服务、物联网和云原生应用等场景。其简单易用的 API、高性能和灵活性使其在许多应用场景中成为理想的选择。
示例代码展示了如何使用 Wasm 插件解析 NATS 协议中的 Protobuf Payload。实际上 Protobuf over NATS 就是 nRPC 协议。
nRPC is an RPC framework like gRPC, but for NATS.
It can generate a Go client and server from the same .proto file that you’d use to generate gRPC clients and servers. The server is generated as a NATS MsgHandler.
0x2: ZeroMQ
ZeroMQ 又称 ØMQ、0MQ、ZMQ,号称最快的消息队列系统,专门为高吞吐量/低延迟的场景开发,在金融界的应用中经常使用,偏重于实时数据通信场景。
示例代码展示了如何使用 Wasm 插件解析 NATS 协议中的 Protobuf Payload。
0x3: 什么是 DeepFlow
DeepFlow 是云杉网络开发的一款可观测性产品,旨在为复杂的云原生及 AI 应用提供深度可观测性。DeepFlow 基于 eBPF 实现了应用性能指标、分布式追踪、持续性能剖析等观测信号的零侵扰(Zero Code)采集,并结合智能标签(SmartEncoding)技术实现了所有观测信号的全栈(Full Stack)关联和高效存取。使用 DeepFlow,可以让云原生及 AI 应用自动具有深度可观测性,从而消除开发者不断插桩的沉重负担,并为 DevOps/SRE 团队提供从代码到基础设施的监控及诊断能力。
GitHub 地址:https://github.com/deepflowio/deepflow
访问 DeepFlow Demo,体验零侵扰、全栈的可观测性。





京公网安备 11010802031005号