APM - k8s 启用 Java JMX 监控分析数据
要在 Kubernetes (k8s) 中使用 VisualVM 连接到运行在 Docker 容器中的 Java 程序,可以按照以下步骤进行操作:
启用 JMX
首先,需要在 Docker 容器中的 Java 应用中启用 JMX。可以通过在启动命令中添加以下 JVM 参数来实现:
1 | -Dcom.sun.management.jmxremote |
这些参数启用了 JMX 远程管理,并指定了端口和主机名。请注意,authenticate 和 ssl 参数被设置为 false,以便于调试。在生产环境中,建议启用认证和 SSL 加密。
修改 Kubernetes Deployment 配置
在 Kubernetes 的 Deployment 配置文件中,需要添加一个容器端口,以便将 JMX 端口暴露给集群外部。修改 Deployment.yaml 文件,添加如下内容:
1 | apiVersion: apps/v1 |
使用 kubectl 端口转发
由于 Kubernetes 集群中的 Pod IP 地址通常是动态分配的,直接从本地访问 Pod 的 JMX 端口可能会有困难。可以使用 kubectl port-forward 命令将 Pod 的 JMX 端口转发到本地主机:
1 | kubectl -n <namespace> port-forward <pod-name> 8999:8999 |
连接 VisualVM
在本地启动 VisualVM,并创建一个 JMX 连接,连接到 localhost:8999。VisualVM 将通过端口转发连接到运行在 Kubernetes 中的 Java 应用,并提供性能监控和分析功能。