【发布时间】:2021-08-13 07:04:03
【问题描述】:
在各种网站/博客文章中,宣传说通过使用带有 Micrometer 的 Spring Boot,我们可以立即获得大量监控指标,包括文件描述符的使用情况。
例如https://spring.io/blog/2018/03/16/micrometer-spring-boot-2-s-new-application-metrics-collector:
Spring Boot 2 为您自动配置了很多指标,包括: 数据源利用率,包括:
...
HikariCP 池指标
RabbitMQ 连接工厂
文件描述符使用
Logback:记录每个级别记录到Logback的事件数
...
我看到了大部分指标,但现在我对“文件描述符使用情况”感兴趣(因为我的 Spring Boot 2.5 应用程序似乎有泄漏),但我没有找到指标。
我尝试了两件事:
- 本地(在 Windows 上),使用 JMX 连接器,并使用 Jconsole 浏览指标
- 一旦部署(在 Docker 映像中,基于 Ubuntu-java),结合 Elastic APM 代理,如https://www.elastic.co/guide/en/apm/agent/java/current/metrics.html#metrics-micrometer-spring-boot 中所述
“文件描述符使用”是否有特殊名称?还是我需要添加一个特殊的依赖才能启用它?
谢谢
====== 更新
正如@checketts 正确指出的那样,从源代码看来,该指标仅在 Unix 系统上可用(请参阅https://github.com/micrometer-metrics/micrometer/blob/67c41db552cac463e44cd45545e5a7b8f3513f1b/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/system/FileDescriptorMetrics.java)。我们在那里看到该指标将记录在process.files
所以我在 Windows 上本地没有它可能是正常的。但是当它在 Docker 上运行时我应该拥有它。但这些是我在 Elastic / Kibana 中为 process 获得的唯一指标:
【问题讨论】:
-
docker容器中运行的是什么版本的java?
-
java版本为11
-
哪个发行版?采用OoenJDK?甲骨文?
-
# java --version openjdk 11.0.1 2018-10-16 OpenJDK Runtime Environment 18.9 (build 11.0.1+13) OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed模式)
-
一切似乎都井井有条。此时,我建议使用 WSL 尝试在您的工作站上调试它,或者在 docker 中本地运行它并尝试连接调试器
标签: spring-boot elasticsearch micrometer spring-micrometer elastic-apm