Open yujianweilai opened 1 week ago
clickhouse里,traceid=2044a11911124f94882c1e30351fdd51.121.17252493541140007的数据,我导出为html了,有需要可以下载,见附件: 20240902-134026.zip
今天将deepflow部署到了预发布环境(离上产线又近了一步),预发布环境的服务器配置比之前的测试环境高,部署架构也更贴近产线环境。今天试用了一下deepflow,发现一些问题(也可能是配置问题),还请研发老师协助排查一下,非常感谢~ 具体问题如下:
如图,右侧部分,其中一个链路的start_time=2024-09-04 19:06:44.141000 , 而从elk日志平台上看,cx-im-message-processor这个微服务,traceid=1b52dd588d164d639b7e1e2663061545.116.17254480018150159 的链路调用时间是2024-09-04 19:06:41,不是19:06:44,为何有这个时间差呢?
以上问题,是基于traceid=1b52dd588d164d639b7e1e2663061545.116.17254480018150159进行的总结,该traceid的所有链路信息,已导出为csv,供研发分析使用。 1b52dd588d164d639b7e1e2663061545.116.17254480018150159.csv
helm方式部署的deepflow,部署后clickhouse启动正常,但是当手动重启clickhouse pod时,报错:
@yujianweilai
Q1: 这里的 csv 不包含空行前的 span,可以确认下。 这里断开有个空行,一般是因为空行上下的 span 没有字段关联。可以确认下这里上下两个 span 的 [span_id, parent_span_id] 是否没有任何一个关系是相等的
Q2: 可以实际抓流确认下就行。一般抓的就是 http 流的内容,因为也不可能编一个 /msg/。估计是 nginx 配的入向路径 (location) 是 /msg,可以看看
Q3:
如图,右侧部分,其中一个链路的start_time=2024-09-04 19:06:44.141000 , 而从elk日志平台上看,cx-im-message-processor这个微服务,traceid=1b52dd588d164d639b7e1e2663061545.116.17254480018150159 的链路调用时间是2024-09-04 19:06:41,不是19:06:44,为何有这个时间差呢?
这里注意下是 trace 的启动时间为 [2024-09-04 19:06:41],经过三秒发生 [2024-09-04 19:06:44.141000] 这个 span,前者是整个 trace 的启动时间,后者是单个 span 的发生时间,逻辑上没有矛盾
如果是想说左右两侧时间差异太大,可以看下这里消息队列的 span 是否异步的,即:左边接收请求,请求结束,产生左侧的 span,然后生成一个写队列任务,3s 后被调度,产生右侧的 span。如果是这种模型那图里呈现也符合逻辑
@taloric 感谢您的回复。 Q1: 因为昨天的数据清理掉了,所以traceid=1b52dd588d164d639b7e1e2663061545.116.17254480018150159的记录现在查不到了,我重新做了一个业务请求(traceid=1b52dd588d164d639b7e1e2663061545.125.17255223575910235),也有类似空行的问题。 按您提供的方式查了一下,空行上面的_id=7411062091836839336 下面的_id=7411062091836889697, 两个span信息,确实对应不上, 这是什么原因?
Q2: 是我这边的问题,ng里用了rewrite,所以有msg。该问题,不是问题,请忽略。
Q3: 我咨询了一下我们研发,如您所说,我们确认有个“历史数据保存”的异步操作。
另外,Q4-6 也请您有时间给看看,谢谢。
@taloric 感谢您的回复。 Q1: 因为昨天的数据清理掉了,所以traceid=1b52dd588d164d639b7e1e2663061545.116.17254480018150159的记录现在查不到了,我重新做了一个业务请求(traceid=1b52dd588d164d639b7e1e2663061545.125.17255223575910235),也有类似空行的问题。 按您提供的方式查了一下,空行上面的_id=7411062091836839336 下面的_id=7411062091836889697, 两个span信息,确实对应不上, 这是什么原因?
Q2: 是我这边的问题,ng里用了rewrite,所以有msg。该问题,不是问题,请忽略。
Q3: 我咨询了一下我们研发,如您所说,我们确认有个“历史数据保存”的异步操作。
另外,Q4-6 也请您有时间给看看,谢谢。
Q4:DeepFlow 默认为全量采集,不支持去除指定资源的采集,但可以去除部分数据类型,例如: 拉黑某个端口,不要对应端口的 eBPF 数据: https://github.com/deepflowio/deepflow/blob/main/server/agent_config/example.yaml#L1307
拉黑调用日志 uri,可以忽略一些健康检测的探测: https://github.com/deepflowio/deepflow/blob/main/server/agent_config/example.yaml#L1073
忽略部分协议采集 https://github.com/deepflowio/deepflow/blob/main/server/agent_config/example.yaml#L1020
关掉 l4 的部分采集点: https://github.com/deepflowio/deepflow/blob/main/server/agent_config/example.yaml#L423
关掉 l7 的部分采集点: https://github.com/deepflowio/deepflow/blob/main/server/agent_config/example.yaml#L453
或者可以单方面全部关掉 l4/7 的采集点: https://github.com/deepflowio/deepflow/blob/main/server/agent_config/example.yaml#L416 https://github.com/deepflowio/deepflow/blob/main/server/agent_config/example.yaml#L423
关闭指定端口采集 cbpf 数据: https://github.com/deepflowio/deepflow/blob/main/server/agent_config/example.yaml#L135
Q5:可在提供的 helm chart 包中 value 文件开启allInOneLocalStorage: true
功能
@yujianweilai
空行上面的_id=7411062091836839336 下面的_id=7411062091836889697, 两个span信息,确实对应不上,
确认一下,这里【空行上面】的 span 是一个什么样的 span?即它在哪个服务里采集的? 按你上面提供的信息,初步看它应该是在 ingress-nginx 内采集的客户端 span 。(如理解错误请纠正我)
如果是 nginx ,确认下插码(即 skywalking-agent 的启动位置)是从什么位置开始的,这里看 nginx 有 trace_id 却没有 span_id,是否从更前的位置发起请求产生 trace_id,但不完整遵循 sw8 协议?
@taloric
@yujianweilai
空行上面的_id=7411062091836839336 下面的_id=7411062091836889697, 两个span信息,确实对应不上,
确认一下,这里【空行上面】的 span 是一个什么样的 span?即它在哪个服务里采集的? 按你上面提供的信息,初步看它应该是在 ingress-nginx 内采集的客户端 span 。(如理解错误请纠正我)
如果是 nginx ,确认下插码(即 skywalking-agent 的启动位置)是从什么位置开始的,这里看 nginx 有 trace_id 却没有 span_id,是否从更前的位置发起请求产生 trace_id,但不完整遵循 sw8 协议?
目前我们研发,只在自研的业务容器里使用了skywalking-agent插装,没有使用sky给nginx插装(对于ng的插装,我理解运维可以通过配置实现,后期我会完善),但是ng服务器上是部署了deepflow-agent的,所以nginx上的trace_id 会不会是deepflow-agent产生的呢?
@yujianweilai
目前我们研发,只在自研的业务容器里使用了skywalking-agent插装,没有使用sky给nginx插装(对于ng的插装,我理解运维可以通过配置实现,后期我会完善),但是ng服务器上是部署了deepflow-agent的,所以nginx上的trace_id 会不会是deepflow-agent产生的呢?
deepflow-agent 不会产生 trace_id,也不会在采集过程中获取到后续链路 trace_id。总结下来如果插桩了就不会有这个空行,如果能实现这是比较直接简单的解决方案
Search before asking
DeepFlow Component
Server
What you expected to happen
我们的业务微服务,之前是使用skywalking做apm,为了体验deepflow的全链路追踪能力,以及对trace数据进行标准化,我们将apm架构改造为skywalking-agent->otel-collector-> deepflow 。现在已经参考https://www.deepflow.io/docs/zh/integration/input/tracing/skywalking/ 将skywalking-agent采集到的业务trace数据,传到了deepflow,然后我尝试做一次业务请求,业务日志如下: 使用traceid=2044a11911124f94882c1e30351fdd51.121.17252493541140007,去deepflow查询,查到了几十条链路数据 然后点击“Trace ID”,画出火焰图,但是火焰图显示上,如下图,每条链路间调用是断开的,没有办法直观的查看链路调用的整体情况 烦请研发老师,帮忙看一下,是哪里的问题,非常感谢。
How to reproduce
No response
DeepFlow version
[root@staging-cetccx-master1 ~]# kubectl exec -it -n deepflow deploy/deepflow-server -- deepflow-server -v Name: deepflow-server community edition Branch: v6.5 CommitID: https://github.com/deepflowio/deepflow/commit/9bb16a8ff644a9279300aa7220edcc2f21321d80 RevCount: 10821 Compiler: go version go1.21.13 linux/amd64 CompileTime: 2024-08-12 06:11:31 [root@staging-cetccx-master1 ~]# kubectl exec -it -n deepflow ds/deepflow-agent -- deepflow-agent -v 10805-c6a440e933afb1de0242f55c7aecaa6e6086e69a Name: deepflow-agent community edition Branch: v6.5 CommitId: https://github.com/deepflowio/deepflow/commit/c6a440e933afb1de0242f55c7aecaa6e6086e69a RevCount: 10805 Compiler: rustc 1.77.1 (7cf61ebde 2024-03-27) CompileTime: 2024-08-07 05:01:34 [root@staging-cetccx-master1 ~]#
DeepFlow agent list
No response
Kubernetes CNI
calico ipip模式
Operation-System/Kernel version
[root@staging-cetccx-master1 ~]# more /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [root@staging-cetccx-master1 ~]# uname -a Linux staging-cetccx-master1 5.16.13-1.el7.elrepo.x86_64 #1 SMP PREEMPT Tue Mar 8 08:32:26 EST 2022 x86_64 x86_64 x86_64 GNU/Linux [root@staging-cetccx-master1 ~]#
Anything else
No response
Are you willing to submit a PR?
Code of Conduct