Spring Boot集成Micrometer后无法找到文件描述符使用率指标问题
问题排查及解决方法
基础规则确认
- 文件描述符相关指标仅在Unix系系统(含Linux、macOS)下生效,Windows环境无法采集属于正常情况,无需额外排查。
- 该指标无需额外引入依赖,Spring Boot 2.x自带的
spring-boot-starter-actuator已经包含了micrometer-core核心包,默认会自动加载FileDescriptorMetrics指标采集器。 - Micrometer侧的原生指标分为两个,无直接的使用率指标:
process.files.open:进程当前已打开的文件描述符数量process.files.max:进程允许打开的最大文件描述符数量
使用率可通过process.files.open / process.files.max自行计算得到。
Docker Linux环境下无指标排查步骤
第一步:确认Micrometer侧是否正常生成指标
开启Spring Boot Actuator的metrics端点,直接访问服务的/actuator/metrics/process.files.open接口,若接口返回404说明指标未在Micrometer中注册,可按以下两个方向排查:
- 检查Docker镜像使用的JDK版本:部分精简版JRE镜像(如openjdk-jre-slim)裁剪了Unix系统文件描述符的读取接口,替换为完整的OpenJDK或Eclipse Temurin镜像即可解决。
- 手动注册指标采集器:添加如下配置类强制加载文件描述符指标:
@Configuration public class MetricsConfig { @Bean public FileDescriptorMetrics fileDescriptorMetrics() { return new FileDescriptorMetrics(); } }
第二步:确认Elastic APM Agent是否漏采指标
如果Actuator端点能正常返回指标数值,说明是Elastic APM Agent的采集过滤规则导致指标丢失,可做以下配置调整:
- 新增JVM启动参数,明确放开process.files类指标的采集规则:
-Delastic.apm.metrics.include_micrometer_metrics=process.files.* - 升级Elastic APM Agent到7.10及以上版本,低版本对Micrometer系统类指标的适配存在缺陷,会出现漏采问题。
内容的提问来源于stack exchange,提问作者Vincent F
相关产品推荐
相关产品推荐

