开源的 APM 产品如何与 eBPF 融合

云杉 世纪

2024年3月20日

云杉动态

Q1|如何集成 Prometheus、Telegraf、OpenTelemetry 等数据?有什么好处?
A:DeepFlow Agent 支持配置数据集成服务。打开该服务后,Agent 就可以接收 Prometheus、Telegraf、OpenTelemetry 的数据,并通过 Server 保存到 DeepFlow 的数据库中,从而可以通过 SQL 进行查询。
至于好处,那就是 DeepFlow 实现了 Tag without Limit,可以让开发者尽情的注入丰富的标签,进行 Tracing、Metric 和 Logging 数据的关联、切换和下钻,充分挖掘数据的价值。
Q2|注入大量标签后是否仍旧需要使用者明确数据内的标签列表,才能做到精准匹配自己想要的数据?
A:DeepFlow 的 SQL 支持 show tags 可以帮助您选择具体的标签,同时也支持 show tag values 帮助你进行具体标签数值的筛选和匹配。我们的标签匹配也支持字符串匹配和正则匹配,相信可以你很容易精准匹配到自己想要的数据。
Q3|这种在查询侧来补充和关联标签数据,会对 DeepFlow Server 有很大的压力吗?
A:DeepFlow Server 的查询时编解码,很好地利用了 ClickHouse 的字典能力,所以并不会给 Server 造成压力,整个查询过程是在数据库侧完成的。
Q4|除了 ClickHouse 以外的存储,DeepFlow 团队后续的三方存储插件有相关计划吗?
A:目前已经有一部分观测数据支持了阿里云的 SLS,还在继续迭代支持中。如果你有其他插件的具体使用场景和需求,也欢迎和我们一起探讨,谢谢!
Q5| 这种方式意味着原始数据里确实了部分标签(查询侧关联),那意味着对后续的告警能力有了比较大的限制,这方面有考虑过优化方案吗?
A:DeepFlow Server 对外提供了统一的 SQL 查询结果,查询侧关联的复杂度是在内部完成的,所以如果告警是用统一 SQL 能力的话,应该不会有任何限制。
DeepFlow 也正在支持 PromQL,后续也可以直接使用 PromQL 查询 DeepFlow 的观测数据。
Q6|真的有这么夸张吗?10X 性能提升。可以说下具体在哪些场景下会有这么大的提升,测试场景又是哪些?
A:我们的测试场景是:30 列的 string/id/lowcard 写入 1 亿,测试 cpu、内存、string 范围长 10,每列变化 5000,每秒写入 200k 行,通过查看 CPU、内存和磁盘的使用验证性能提升情况。
Q7|Autotagging 可以支持各种语言开发的系统,还是有什么特别要求,技术的核心关键点是什么?落地有什么注意事项吗?
A:AutoTagging 的关键是要适配多种多样的云平台/K8s 资源,抽象标准化的标签体系。目前没有具体语言的限制,如果对 AutoTagging 技术非常感兴趣的话,欢迎联系我们进行深入沟通。
Q8|DeepFlow 对接 Skywalking、Pinpoint 等 APM 平台是直接对接的 Agent 还是对接的 Server 端,通过调用链生成一些指标是通过什么实现的,开源的 APM 产品如何与 eBPF 融合?
A:DeepFlow 支持通过 Agent 集成第三方数据,Agent 通过 eBPF 技术实现了对任意开发技术栈、任意基础设施的全自动应用性能指标数据采集(AutoMetrics),一方面通过解析 TraceID、SpanID 与 App Span 关联,另一方面通过 AutoTagging 做指标和追踪数据的关联。
Q9|Autotracing 如何实现,需要集成 OpenTelemertry 吗?
A:AutoTracing 是 DeepFlow Agent 利用 eBPF 技术实现的,属于 DeepFlow 独有的能力,无需依赖 OpenTelemetry。具体配置可参考:
https://deepflow.yunshan.net/docs/zh/auto-tracing/tracing-without-instrumentation/
同时 DeepFlow 支持集成 OTel 的追踪数据,可参考:
https://deepflow.yunshan.net/docs/zh/agent-integration/tracing/tracing-without-blind-spot/
Q10|能做业务的 trace 吗?前后端、数据库、中间件等数据是怎么串接起来的?
A:DeepFlow 目前支持做业务 trace,不同模块或者服务之间通过 TraceID、SpanID 及 eBPF 进行关联。
Q11|SmartEncoding 中提到了 gpid,我看这个既不是云资源信息,也不是 K8s 资源,是否可以详细介绍一下?
A:gpid 是 global process id 的简称,它实际上就是进程信息。
我们通过将 vpc+ip+port 映射到 gpid,使得我们可以存储一个 int 标签(gpid)来替代存储进程名,而且更多的好处还在于通过 gpid 可以关联到很多 os.proc、os.app 等自定义元数据,也是为后续版本的迭代打基础。
Q12|DeepFlow 社区版支持离线部署么,有没有部署文档?
A:https://deepflow.yunshan.net/docs/zh/install/overview/

Related Posts

云杉网络 DeepFlow 联合 TDSQL 完成技术兼容互认证

近日,北京云杉世纪网络科技有限公司(以下简称:云杉网络)的云原生可观测性产品 DeepFlow&nb […]

Read More

浅谈云原生可观测性生态的优化和丰富

云杉 世纪

2024年4月5日

云杉动态

云原生可观测数据中的时序数据 Metrics,在业务高基数、持久化存储、乱序写入、多租户隔离等场景下,对后端时 […]

Read More