基于 SpringBoot 2.0+ Actuator Metrics 的监控分析引言Spring Boot 2 在 spring-boot-actuator 中引入了 Micrometer，对 1.x 版本的 Metrics 进行了重构。此外，它支持对接的监控系统也更加丰富，包括 Atlas、Datadog、Ganglia、Graphite、Influx、JMX、NewRelic、Prometheus、SignalFx、StatsD、Wavefront 等。本文将以 Prometheus 为例，阐述 Spring Boot 2.0 的监控体系。参考文档：PrometheusPrometheus 中文文档Maven 依赖在项目中引入以下依赖以启用 Actuator 及 Prometheus 支持： org.springframework.boot spring-boot-starter-actuator io.micrometer micrometer-registry-prometheus 配置示例在 application.properties 中配置暴露所有端点（生产环境建议按需配置）：management.endpoints.web.exposure.include=*Spring Boot 2.0 Actuator 监控指标分析下表列出了常见的监控指标及其说明、监控状态与重要程度。序号参数参数说明是否监控监控手段重要度---JVM------1jvm.memory.maxJVM 最大内存---2jvm.memory.committedJVM 可用内存是展示并监控堆内存和 Metaspace重要3jvm.memory.usedJVM 已用内存是展示并监控堆内存和 Metaspace重要4jvm.buffer.memory.usedJVM 缓冲区已用内存---5jvm.buffer.count当前缓冲区数---6jvm.threads.daemonJVM 守护线程数是显示在监控页面-7jvm.threads.liveJVM 当前活跃线程数是显示在监控页面；监控达到阈值时报警重要8jvm.threads.peakJVM 峰值线程数是显示在监控页面-9jvm.classes.loaded加载 classes 数---10jvm.classes.unloaded未加载的 classes 数---11jvm.gc.memory.allocatedGC 时，年轻代分配的内存空间---12jvm.gc.memory.promotedGC 时，老年代分配的内存空间---13jvm.gc.max.data.sizeGC 时，老年代的最大内存空间---14jvm.gc.live.data.sizeFullGC 时，老年代的内存空间---15jvm.gc.pauseGC 耗时是显示在监控页面----TOMCAT------16tomcat.sessions.createdTomcat 已创建 session 数---17tomcat.sessions.expiredTomcat 已过期 session 数---18tomcat.sessions.active.currentTomcat 活跃 session 数---19tomcat.sessions.active.maxTomcat 最多活跃 session 数是显示在监控页面，超过阈值可报警或者进行动态扩容重要20tomcat.sessions.alive.max.secondTomcat 最多活跃 session 数持续时间---21tomcat.sessions.rejected超过 session 最大配置后，拒绝的 session 个数是显示在监控页面，方便分析问题-22tomcat.global.error错误总数是显示在监控页面，方便分析问题-23tomcat.global.sent发送的字节数---24tomcat.global.request.maxRequest 最长时间---25tomcat.global.request全局 Request 次数和时间---26tomcat.global.received全局 Received 次数和时间---27tomcat.servlet.requestServlet 的请求次数和时间---28tomcat.servlet.errorServlet 发生错误总数---29tomcat.servlet.request.maxServlet 请求最长时间---30tomcat.threads.busyTomcat 繁忙线程是显示在监控页面，据此检查是否有线程夯住-31tomcat.threads.currentTomcat 当前线程数（包括守护线程）是显示在监控页面重要32tomcat.threads.config.maxTomcat 配置的线程最大数是显示在监控页面重要33tomcat.cache.accessTomcat 读取缓存次数---34tomcat.cache.hitTomcat 缓存命中次数------CPU...------35system.cpu.countCPU 数量---36system.load.average.1mLoad Average是超过阈值报警重要37system.cpu.usage系统 CPU 使用率---38process.cpu.usage当前进程 CPU 使用率是超过阈值报警-39http.server.requestsHTTP 请求调用情况是显示 10 个请求量最大，耗时最长的 URL；统计非 200 的请求量重要40process.uptime应用已运行时间是显示在监控页面-41process.files.max允许最大句柄数是配合当前打开句柄数使用-42process.start.time应用启动时间点是显示在监控页面-43process.files.open当前打开句柄数是监控文件句柄使用率，超过阈值后报警重要监控 Dashboard 可使用 Grafana 进行可视化展示。说明：本文内容基于 Spring Boot 2.0 及 Oracle JDK 9 环境编写。随着版本迭代，部分指标名称或配置方式可能有所调整，请以官方最新文档为准。