我已经 写过有关Spring Boot中出色的监视功能的文章 。 在Spring Boot 2.0中,对/metrics
HTTP端点的设计进行了重大重写。 最重要的是,现在有一个有关度量的专用项目,称为Micrometer 。 在本文中,我将介绍如何将应用程序从Spring Boot 1.5迁移到Micrometer。
通过使用micrometer-spring-legacy依赖关系,可以在Spring Boot 1.5中使用Micrometer。 可以在专用文档中找到更多信息。
度量维度
在Spring Boot 2.0之前,指标是单个值,并且以树状方式进行组织。 最好将它们描述为分层度量 。 这是/metrics
端点输出的示例:
{ "mem" : 562688, "mem.free" : 328492, "processors" : 8, "uptime" : 26897, "instance.uptime" : 18974, "heap.committed" : 562688, "heap.init" : 131072, "heap.used" : 234195, "heap" : 1864192, "threads.peak" : 20, "threads.daemon" : 17, "threads" : 19, "classes" : 9440, "classes.loaded" : 9443, "classes.unloaded" : 3, "gc.ps_scavenge.count" : 16, "gc.ps_scavenge.time" : 104, "gc.ps_marksweep.count" : 2, "gc.ps_marksweep.time" : 152 }
请注意,每个指标都是键/值对。 度量标准名称使用点符号,并且只有一个值-它们只有一个维。 层次结构指标的好处是,在页面上显示它们非常简单。
组织指标的另一种方法是通过标签。 此外,指标可能没有一个单一值,而是不同的值,例如最小值,最大值,平均值等。因此,它们被称为维度指标 。
这是Spring Boot 2.0中新的/metrics
端点的输出示例:
{ "names": [ "http.server.requests", "jvm.buffer.memory.used", "jvm.memory.committed", "jvm.memory.used", "jdbc.connections.min", "system.cpu.count", "jvm.memory.max", "jdbc.connections.active", "process.files.max", "jvm.threads.daemon", "process.start.time", "jvm.gc.live.data.size", "process.files.open", "jvm.gc.pause", "jvm.buffer.total.capacity", "jvm.threads.live", "jvm.classes.loaded", "jvm.classes.unloaded", "jvm.gc.memory.promoted", "jvm.gc.memory.allocated", "jvm.gc.max.data.size", "jvm.buffer.count", "process.cpu.usage", "process.uptime", "system.load.average.1m", "jdbc.connections.max", "system.cpu.usage", "jvm.threads.peak" ] }
显然,显示维度度量值并不像以前那样简单,因为它们具有多个值。 实际上,这取决于目标显示系统的性质。