Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] v6.67版本部分请求没有被打上syscall_trace_id #8544

Open
2 of 3 tasks
jordgedu opened this issue Nov 25, 2024 · 3 comments
Open
2 of 3 tasks

[BUG] v6.67版本部分请求没有被打上syscall_trace_id #8544

jordgedu opened this issue Nov 25, 2024 · 3 comments
Assignees
Labels
bug Something isn't working

Comments

@jordgedu
Copy link

jordgedu commented Nov 25, 2024

Search before asking

  • I had searched in the issues and found no similar feature requirement.

DeepFlow Component

Server

What you expected to happen

deepflow基于syscall_trace_id来做上下文请求的关联,当前发现部分请求的请求和回应数据trace_id均为空
Clipboard_Screenshot_1732519415

How to reproduce

我们用如下架构搭建了一个简单的故障模拟场景,只需要简单的在其中一个rs请求一个不存在的域名服务器即可
Clipboard_Screenshot_1732519456
理想情况下,http请求应该能够关联到dns请求, 调用路径: client(发起http请求)->本机java进程(http服务)->本机java进程发起dns解析->dns服务器。
Clipboard_Screenshot_1732519547
有些时候它确实也能关联到
Clipboard_Screenshot_1732188352

DeepFlow version

deepflow server vsersion: v6.6.7

DeepFlow agent list

deepflow agent vsersion: v6.6.7

Kubernetes CNI

No response

Operation-System/Kernel version

uname -r: 5.4.241-1-tlinux4-0017.10

Anything else

No response

Are you willing to submit a PR?

  • Yes I am willing to submit a PR!

Code of Conduct

@jordgedu jordgedu added the bug Something isn't working label Nov 25, 2024
@yinjiping
Copy link
Contributor

yinjiping commented Nov 27, 2024

@jordgedu 估计是Java的跨线程处理的原因,看看线程号及一些信息?
image
image
image
image

client(发起http请求)->本机java进程(http服务)->本机java进程发起dns解析->dns服务器。

  • DNS请求TraceID:
    看上面的路径 本机java进程发起dns解析, 那么我们站在 http-nio-8080*角度上看是客户端发送DNS请求 ,他的行为是socket 发出一个(DNS)请求, 此时发出数据会通过线程号(关联)去查询是否存在一个TraceID,如果存在则请求TraceID不为0,否则为0.

  • DNS响应TraceID:
    先确认下是否一个完整的会话,如果只有请求没有响应那么DNS响应TraceID就会标记为0, 否则为非0

@jordgedu
Copy link
Author

@jordgedu 估计是Java的跨线程处理的原因,看看线程号及一些信息? image image image image

client(发起http请求)->本机java进程(http服务)->本机java进程发起dns解析->dns服务器。

  • DNS请求TraceID:
    看上面的路径 本机java进程发起dns解析, 那么我们站在 http-nio-8080*角度上看是客户端发送DNS请求 ,他的行为是socket 发出一个(DNS)请求, 此时发出数据会通过线程号(关联)去查询是否存在一个TraceID,如果存在则请求TraceID不为0,否则为0.
  • DNS响应TraceID:
    先确认下是否一个完整的会话,如果只有请求没有响应那么DNS响应TraceID就会标记为0, 否则为非0
Clipboard_Screenshot_1732698813

@yinjiping
Copy link
Contributor

@jordgedu 估计是Java的跨线程处理的原因,看看线程号及一些信息? image image image image
client(发起http请求)->本机java进程(http服务)->本机java进程发起dns解析->dns服务器。

  • DNS请求TraceID:
    看上面的路径 本机java进程发起dns解析, 那么我们站在 http-nio-8080*角度上看是客户端发送DNS请求 ,他的行为是socket 发出一个(DNS)请求, 此时发出数据会通过线程号(关联)去查询是否存在一个TraceID,如果存在则请求TraceID不为0,否则为0.
  • DNS响应TraceID:
    先确认下是否一个完整的会话,如果只有请求没有响应那么DNS响应TraceID就会标记为0, 否则为非0
Clipboard_Screenshot_1732698813

从截图的数据来看:4条数据全为DNS响应数据,没有发现请求数据有点奇怪。
image
请再显示一下上面4条数据的 flow_id,start_time,end_time,response_code 看看。

另外,尝试把端口53设置为白名单,看看是否解决问题。

设置白名单参考:
https://github.com/deepflowio/deepflow/blob/v6.6.7/server/agent_config/template.yaml#L2216

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants