uniquetruth / remote-debug-agent

a useful java agent for integration testing
Apache License 2.0
71 stars 25 forks source link

docker容器部署应用注入agent,怎么访问 #8

Closed yang-yao closed 2 years ago

yang-yao commented 2 years ago

http://ip:8098/trace/start 告知探针开始记录某个调用者的调用链。默认情况下,探针使用调用者的IP地址作为身份标识。例如从IP=10.20.30.40的机器上发送该请求后,通过该机器的浏览器访问被测应用,那么这些访问操作执行的代码将被记录下来

我们应用是docker容器部署的,启动的时候把agent注入进去,然后访问http://ip:8098/trace/start 这里的ip 是容器启动后分配的ip ,还是本机发起请求的ip

我都做了尝试, 1,进入机器 通过curl http://127.0.0.1:8098/trace/list 报错:curl: (56) Recv failure: Connection reset by peer 2,本机浏览器访问 http://10.11.28.194:8098/trace/start (10.11.28.194是容器启动后生成的ip) 无法访问

uniquetruth commented 2 years ago

IP肯定是指服务端的IP啊。你这个是纯粹的微服务集群网络问题了,我也不是此方面的专家,无法给出很明确的回答。不过我有以下分析:

  1. http://127.0.0.1:8098/trace/list肯定是不对的,容器的端口与宿主机的端口是有映射关系的,你不能用宿主机的8098端口去访问容器的8098。
  2. 可尝试在宿主机上使用http://10.11.28.194:8098/trace/start看看。
  3. 据我所知通过特殊的网络配置,应该是可以让外部ip穿透集群去访问集群内的ip的,这个可以咨询你们的网络架构师。你可以先在应用中集成swagger服务,如果可以从任意电脑使用swagger的调试页面的话,就能使用本工具的接口。
  4. 实在不行的话,可尝试进入容器内部再调用8098端口。比如我使用k8s管理容器,那么我可以在宿主机上使用kubectl exec -it podName -c containerName进入容器内部,之后再在容器内部用http://127.0.0.1:8098/trace/list调用接口。我对纯粹的docker不是很熟,不过应该也有类似的命令吧