如何在 kubernetes 上的无分布式容器 运行 上获取 java 应用程序的线程转储?

how to take thread dump of java application on a distroless container running on kubernetes?

我的集群上有许多 java 个应用程序 运行,我想对少数微服务进行线程转储。但由于这些是 distroless 图像,我在考虑临时容器,但不确定是否可以将卷附加到此类容器。有人可以帮忙吗?

此致, 安贾尼

您是否使用 Spring Boot 来构建这些微服务?如果是,那么通过使用 Spring Boot Admin,您可以从单个 window.

获取线程转储、堆转储并监控您的服务

请检查 here 以获取更多详细信息。

检查 Spring 引导执行器端点 https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.endpoints

线程转储有一个专用端点。请注意,默认情况下它 returns 自定义 JSON 格式,但您可以请求默认文本格式。

curl 'http://localhost:8080/actuator/threaddump' -i -X GET \
-H 'Accept: text/plain'

查看更多详情https://docs.spring.io/spring-boot/docs/current/actuator-api/htmlsingle/#threaddump.retrieving-text