1

我面临一个问题,需要我在两个微服务中调试 HTTP 流量,我们正在使用 microprofile v3 和 openliberty 实现我们的微服务。我试图通过 server.xml 和环境变量启用 HTTP 跟踪但没有成功。

有人知道如何在 Openliberty+OpenJ9 中启用 WIRE 跟踪吗?我们使用官方 open-liberty:javaee8-java11 (Open Liberty 19.0.0.8/wlp-1.0.31.cl190820190813-1136) 作为基础 docker 镜像

4

2 回答 2

2

我通过 WAS 开发确认WAS 诊断跟踪不会打印请求/响应主体的原始数据包内容,尽管它会打印请求/响应行和标头等元数据。

全身追踪的几个选项:

  1. 在 Docker 映像之外使用代理或网络嗅探器。

  2. 如果流量是 TLS,-Djavax.net.debug=all(或不那么冗长,-Djavax.net.debug=ssl,plaintext)打印响应内容,尽管没有元数据(即没有请求/响应行,也没有标头)。

  3. 安装和使用 tcpdump(当然,如果是 TLS,如果对话使用像 DHE 这样的密码,你将需要私钥来解密等等):

    docker exec -u root -it $CONTAINER bash
      apt-get update
      apt-get install -y tcpdump
      tcpdump -nn -v -i any -B 4096 -s 0 -C 100 -W 10 -Z root -w capture_$(hostname)_$(date +"%Y%m%d_%H%M%S_%N").pcap
    

    tcpdump可以通过以下方式烘焙到 Dockerfile 中:

    USER root
    RUN apt-get update && apt-get install -y tcpdump
    USER default
    [...]
    
  4. 使用Docker 边车

于 2020-01-07T17:08:29.137 回答
1

我认为您可以通过跟踪获得最接近的是 webcontainer + 通道框架跟踪,即

“com.ibm.ws.webcontainer*=all:com.ibm.wsspi.webcontainer*=all:HTTPChannel=all:GenericBNF=all”

如果您需要更多,您可能需要在两个微服务之间插入某种代理日志记录工具。

于 2020-01-07T16:32:10.557 回答