【问题标题】:Openliberty enable wire debug tracesOpenliberty 启用线调试跟踪
【发布时间】:2020-01-07 08:18:12
【问题描述】:

我遇到了一个问题,需要我在两个微服务中调试 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 镜像

【问题讨论】:

    标签: jakarta-ee open-liberty microprofile openj9


    【解决方案1】:

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

    全身追踪的几个选项:

    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 sidecar

    【讨论】:

    • 嗨,我最终使用了 sidecar,我们处于使用 swarm 的早期阶段,但考虑到您关于 sidecar 模式的观点,我们将在下一次迭代中使用 istio + kubernetes,谢谢
    【解决方案2】:

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

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

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

    【讨论】:

    • 我需要看普通的http流量,这个级别还不够,我要安装代理并重新路由我的请求,谢谢你的回复
    猜你喜欢
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 2017-01-19
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多