zoukankan      html  css  js  c++  java
  • Spring boot——JMX 监控

    前言

    Spring Boot应用的健康监控一文中,我们通过Spring Boot Actuator对外暴露应用的监控信息,除了使用HTTP获取JSON格式 的数据之外,还可以通过JMX监控应用,Spring Boot也提供了对JMX监控的支持。

    JMX监控对外暴露的信息相同,不过是使用MBeans容器将应用数据封装管理。

     

    一、启动JMX

    1、Spring Boot < 2.2.X 默认是启用JMX(Java Management Extensions)的,并且默认是公开的MBeans可以直接使用jdk自带的jconsole(shell窗口使用命令jconsole即可)客户端查看Mbeans.

    2、使用JMX那么所有的Actuator端点(除了/heapdump)会通过MBeans进行公开的。

    3、请注意 Spring Boot > 2.2.x 默认禁用 JMX 暴露,需要添加以下设置才能使其工作:
    spring.jmx.enabled=true

    在命令行中执行jconsole命令启动“Java管理和监视控制台”,然后选择org.springframework.boot节点下的Endpoint,可以看到如下信息:

    4、请注意 Spring Boot > 2.2.x 默认禁用 JMX Tomcat Bean 暴露,需要添加以下设置才能使其工作:

    server.tomcat.mbeanregistry.enabled=true

    在命令行中执行jconsole命令启动“Java管理和监视控制台”,然后选择Tomcat,可以看到如下信息:

    二、禁用JMX

    如果不希望在JMX上公开端点,您可以设置management.endpoints.jmx.exposure.exclude属性为*,如下例所示:

    management.endpoints.jmx.exposure.exclude=*

    如果 Spring Boot > 2.2.x 默认禁用 JMX 暴露。

    三、访问JMX

    除了通过JMX获取信息,也可以通过HTTP接口访问Mbeans对象的信息,具体有以下两种方式。

    • actuator的metrics

    部分指标会暴露在actuatormetrics下面,比如:tomcat thread的相关指标、jvm的相关指标、连接池(hikaricp等)的相关指标(具体暴露哪些指标,取决于配置情况)。

    1、在应用的pom文件中添加jolokia-core依赖:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    2、配置:

    在application.properties文件:

    # Actuator Web 访问端口
    management.endpoints.web.exposure.include=*
    management.endpoint.health.show-details=always
    management.server.port=10111
    management.server.ssl.enabled=false
    management.server.servlet.context-path=/
            
    spring.jmx.enabled=true
    server.tomcat.mbeanregistry.enabled=true
    management.endpoints.jmx.exposure.include=*

    3、测试验证:

    • Jolokia

    Jolokia是一个JMX-http桥梁,它提供了访问JMX bean的另一种方法,使用Jolokia,需要引入org.jolokia:jolokia-core的依赖。

    1、在应用的pom文件中添加jolokia-core依赖:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
    <!-- JMX monitor -->
    <dependency>
         <groupId>org.jolokia</groupId>
         <artifactId>jolokia-core</artifactId>
    </dependency>

    2、配置:

    添加依赖后,然后可以通过在management.endpoints.web.exposure.include属性中添加Jolokia或*来公开Jolokia端点,然后,你可以使用/actuator/jolokia在你的管理HTTP服务器上访问它。

    在application.properties文件:

    # Actuator Web 访问端口
    management.endpoints.web.exposure.include=*
    management.endpoint.health.show-details=always
    management.server.port=10111
    management.server.ssl.enabled=false
    management.server.servlet.context-path=/
            
    spring.jmx.enabled=true
    server.tomcat.mbeanregistry.enabled=true
    management.endpoints.jmx.exposure.include=*

    3、测试验证:

    我们在postman中访问 http://172.16.4.40:10111/actuator/jolokia/read/Tomcat:type=ThreadPool,name=%22http-nio-8091%22/maxThreads 也可以得到对应的信息:

    4、定制Jolokia:

    Jolokia有许多设置,你通常通过设置servlet参数来配置它们,使用Spring Boot,你可以使用你的application.properties文件,为此,在参数前面加上management.endpoint.jolokia.config.

    如下例所示:

    management.endpoint.jolokia.config.debug=true

    5、禁用Jolokia:

    如果你使用Jolokia但不希望Spring Boot配置它,设置management.endpoint.jolokia.enabled属性为false,如下所示:

    management.endpoint.jolokia.enabled=false

    四、其它

    • 自定义MBean的名字

    可以自定义在其中暴露端点的JMX域,下面的设置显示了application.properties中的一个示例:

    management.endpoints.jmx.domain=com.example.myapp
    management.endpoints.jmx.unique-names=true
     
  • 相关阅读:
    3 聊天室
    freemaker分页模板
    [三]ajax重要属性
    [二]java运行原理
    [转]freemaker格式化日期
    [二]SpringMvc实践-注解
    win7下禁用ctrl alt del +上下左右键
    [一]初识SpringMVC
    Powerdesigner设置name与code不同时变化
    Ubuntu下缓冲器溢出攻击实验(可以看看问题分析)
  • 原文地址:https://www.cnblogs.com/caoweixiong/p/15329029.html
Copyright © 2011-2022 走看看