gpt4 book ai didi

java - 在 AWS Fargate 中监控 JVM

转载 作者:行者123 更新时间:2023-12-02 18:07:08 30 4
gpt4 key购买 nike

我目前一直在尝试将 VisualVM(一个监控 JVM、堆和内存使用等的程序)连接到在 Docker 容器中的 AWS Fargate 上运行的 Spring Boot 应用程序(Java 应用程序)。

我已经相应地公开了 JMX 端口,并且在本地运行 Docker 容器时能够通过 JMX 端口进行连接。但是,在 Fargate 上运行 Java App 时,我还没有找到通过 JMX 连接到 Container 的方法。我试过设置 VM 参数
-Djava.rmi.server.hostname 到容器的 IP 地址,但是当我尝试通过 JMX 连接时,它仍然无法连接。有没有人有这方面的经验?

JMX 命令供引用:

-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.local.only=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=172.17.0.2 \
-Dcom.sun.management.jmxremote.port=9090\
-Dcom.sun.management.jmxremote.rmi.port=9090\
-jar java-api.jar server```

最佳答案

在将 Visual VM 连接到部署在 AWS Fargate(私有(private) VPC)中的 Spring Boot 应用程序方面,以下更改对我有用

  • jvm参数
  • -Dcom.sun.management.jmxremote \
    -Dcom.sun.management.jmxremote.port=1099 \
    -Dcom.sun.management.jmxremote.rmi.port=1099 \
    -Dcom.sun.management.jmxremote.ssl=false \
    -Dcom.sun.management.jmxremote.authenticate=false \
    -Dcom.sun.management.jmxremote.local.only=false \
    -Djava.rmi.server.hostname=127.0.0.1
  • 导出端口 1099(在 dockerfile 和 cloudformation 模板中 - PortMappings->ContainerPort)
  • 容器安全组接受来自 vpc(跳转服务器)中现有 EC2 之一的 1099(tcp 和 udp)上的传入流量
  • 通过使用 EC2(跳转服务器)将 ssh 端口转发到在 fargate 中运行的任务(使用在 fargate 中运行的任务的私有(private) ip)

  • 在本地运行以下命令
    ssh -l <user> -L 127.0.0.1:1099:<task-private-ip-in-fargate>:1099 <ec2-ip(jump server)>
  • 在 127.0.0.1:1099
  • 上使用 JMX 连接连接 VisualVM

    关于java - 在 AWS Fargate 中监控 JVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60299557/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com