我最近开始使用Spring Boot Actuator来提供预先存在的服务。我当前正在使用版本[<2.0.1.RELEASE。我设法启动并运行了Spring Actuator,并且可以看到/actuator/metrics
页面并与度量一起运行。我可以在其各自的URL上使用诸如jvm.memory.used指标之类的指标,并使用各种标签进行深入研究。访问URL http://localhost:8080/actuator/metrics/jvm.memory.used
时,得到以下输出:
{"name":"jvm.memory.used","measurements":[{"statistic":"VALUE","value":7.71444944E8}],"availableTags":[{"tag":"area","values":["heap","nonheap"]},{"tag":"id","values":["Compressed Class Space","PS Survivor Space","PS Old Gen","Metaspace","PS Eden Space","Code Cache"]}]}
因此,我可以看到我使用的JVM内存是“”(或更简单地说,只是“ 771444944”)。但是,我很好奇,度量单位是什么,因为值本身是没有意义的。只是字节吗?可能是MB还是GB?我假设答案只是字节。这是有道理的,但到目前为止,我找不到任何支持这一点的根本原因。我曾尝试使用谷歌搜索,但无济于事。我咨询了似乎是canonical Spring Actuator doc的内容,但也没有找到任何答案。我也找到了a similar SO Q&A on the http.server.requests "TOTAL TIME" metric。该问题的可接受答案表明,它取决于我服务中的7.71444944E8
MeterRegistry
实现。注意,我没有这样的实现。我现在只是在玩Web API。此外,该答案似乎是针对我未处理的时间单位的。任何帮助将不胜感激。微米是Spring Boot 2指标库。
即使您不使用任何存储来管理指标(例如Prometheus,DataDog等),您仍然拥有一些默认注册表。
现在,千分尺监视JVM并提供一些“开箱即用”的指标。 Here您可以找到有关它的信息。
它使用一个称为“粘合剂”的概念,您对JvmMemoryMetrics
感兴趣。让我们看一下该活页夹的source-code。
注意以下代码:
Gauge.builder("jvm.memory.used", memoryPoolBean, (mem) -> getUsageValue(mem, MemoryUsage::getUsed))
.tags(tagsWithId)
.description("The amount of used memory")
.baseUnit(BaseUnits.BYTES)
.register(registry);
它基本上从JVM内存的JMX中获取每个Java进程可用的信息,并建立一个以字节为单位显示信息的计量器。因此,您的情况及其在执行器中显示。