【问题标题】:Spring boot 2 actuator metricsSpring Boot 2 执行器指标
【发布时间】:2018-11-29 22:07:52
【问题描述】:

有没有spring boot 2 metrics的参考详细文档。

我是说

{
  "names": [
    "jvm.memory.max",
    "http.server.requests",
    "process.files.max",
    "jvm.gc.memory.promoted",
    "tomcat.cache.hit",
    "rabbitmq.channels",
    "system.load.average.1m",
    "tomcat.cache.access",
    "jvm.memory.used",
    "jvm.gc.max.data.size",
    "jdbc.connections.max",
    "jdbc.connections.min",
    "jvm.gc.pause",
    "jvm.memory.committed",
    "system.cpu.count",
    "logback.events",
    "rabbitmq.connections",
    "tomcat.global.sent",
    "jvm.buffer.memory.used",
    "tomcat.sessions.created",
    "jvm.threads.daemon",
    "system.cpu.usage",
    "jvm.gc.memory.allocated",
    "tomcat.global.request.max",
    "hikaricp.connections.idle",
    "hikaricp.connections.pending",
    "tomcat.global.request",
    "rabbitmq.rejected",
    "tomcat.sessions.expired",
    "hikaricp.connections",
    "jvm.threads.live",
    "jvm.threads.peak",
    "tomcat.global.received",
    "hikaricp.connections.active",
    "hikaricp.connections.creation",
    "process.uptime",
    "tomcat.sessions.rejected",
    "process.cpu.usage",
    "tomcat.threads.config.max",
    "jvm.classes.loaded",
    "hikaricp.connections.max",
    "hikaricp.connections.min",
    "rabbitmq.consumed",
    "jvm.classes.unloaded",
    "tomcat.global.error",
    "tomcat.sessions.active.current",
    "tomcat.sessions.alive.max",
    "jvm.gc.live.data.size",
    "tomcat.servlet.request.max",
    "hikaricp.connections.usage",
    "tomcat.threads.current",
    "tomcat.servlet.request",
    "hikaricp.connections.timeout",
    "process.files.open",
    "jvm.buffer.count",
    "jvm.buffer.total.capacity",
    "tomcat.sessions.active.max",
    "hikaricp.connections.acquire",
    "tomcat.threads.busy",
    "rabbitmq.published",
    "process.start.time",
    "tomcat.servlet.error",
    "rabbitmq.acknowledged"
  ]
}
  • 我应该使用哪些指标来衡量内存/gc/cpu 使用率。还有这些值代表什么。

  • 同样在 spring boot 1.5.x 中,我可以简单地获取 used heap、committed heap、gc count 等。我如何获取这些值?

还有一种方法可以让我一次调用所有指标。我的意思是在启动 2 中获取我需要调用许多点击仪式的所有指标。

【问题讨论】:

    标签: java spring-boot-actuator micrometer


    【解决方案1】:

    我自己还在学习如何使用 Spring 的新维度实现,但我想我可以帮助你解决一些问题。如您所见,Spring Boot 2 中的指标比 Spring Boot 1.5 丰富得多。

    Spring 网站上有一篇很好的博文,详细介绍了新的度量引擎为您提供了什么以及为什么需要进行更改:Micrometer: Spring Boot 2's new application metrics collector

    A.我应该将哪些指标用于内存/gc/cpu 使用情况。还有这些值代表什么。

    当您导航到应用程序的 actuator/metric 端点时,您可以查看适合的指标。

    内存

    • jvm.memory.max
    • jvm.memory.used
    • jvm.gc.memory.promoted
    • jvm.memory.committed
    • jvm.buffer.memory.used
    • jvm.gc.memory.allocated

    GC

    • jvm.gc.memory.allocated
    • jvm.gc.memory.promoted

    CPU

    • system.cpu.usage
    • system.cpu.count
    • process.cpu.usage

    B.同样在 spring boot 1.5.x 中,我可以简单地获取 used heap、committed heap、gc count 等。我怎样才能获得这些值?

    正如您所提到的,您必须按维度查看指标。

    例如,在 Spring Boot heap.committed:120000,您只需在 /actuator/metrics 上发出 GET 请求。

    在 Spring Boot 2 中,要返回 TOTAL 已提交内存(堆和非堆)的指标,您将在 /actuator/metrics/jvm.memory.committed 上发出 GET 请求。

    您将收到类似于以下内容的响应:

    {
        "name": "jvm.memory.committed",
        "measurements": [
            {
                "statistic": "VALUE",
                "value": 240000
            }
        ],
        "availableTags": [
            {
                "tag": "area",
                "values": [
                    "heap",
                    "nonheap"
                ]
            },
            {
                "tag": "id",
                "values": [
                    "Compressed Class Space",
                    "PS Survivor Space",
                    "PS Old Gen",
                    "Metaspace",
                    "PS Eden Space",
                    "Code Cache"
                ]
            }
        ]
    }
    

    要仅查看已提交的堆值,请使用堆标记发出 GET 请求:/acutator/metrics/jvm.memory.committted?tag=area:heap。您应该会看到类似以下内容:

    {
        "name": "jvm.memory.committed",
        "measurements": [
            {
                "statistic": "VALUE",
                "value": 120000
            }
        ],
        "availableTags": [
            {
                "tag": "id",
                "values": [
                    "PS Eden Space",
                    "PS Survivor Space",
                    "PS Old Gen"
                ]
            }
        ]
    }
    

    Spring Boot 的 Metrics Reference Docs 是一个很好的资源,以及我如何了解标签语法(这是最后一节)。

    请参阅this question:如果您想确保这些指标正确映射到应用程序的先前指标,请查看以前的版本如何映射到 Spring Boot 的 SystemPublicMetrics.java 类中的旧指标。

    还有一种方法可以让我一次调用所有指标。我的意思是在启动 2 中获取我需要调用许多点击仪式的所有指标。

    我认为目前没有开箱即用的指标端点。您可能感兴趣的是 Micrometer 的 HierarchicalNameMapper.java 类。每,Micrometer's Docs

    维度。系统是否支持使用标签键/值对丰富指标名称。如果一个系统不是维度的,它是分层的,这意味着它只支持一个扁平的度量名称。在将指标发布到分层系统时,Micrometer 会展平标签/键值对的集合并将它们添加到名称中。

    因此,如果您将数据发布到分层系统(例如 JMX),您的指标将被展平。如果您要导出到另一个系统,您还可以实现自己的扁平化映射器。

    【讨论】:

    • 多么漂亮的答案!
    猜你喜欢
    • 2015-07-04
    • 2018-07-08
    • 2018-08-29
    • 1970-01-01
    • 2018-11-16
    • 2021-11-12
    • 2019-11-22
    • 1970-01-01
    • 2020-10-26
    相关资源
    最近更新 更多