SpringBoot监控工具包Actuator使用

一、什么是Actuator?

  当一个SpringBoot项目运行的时候,我们可能需要对这个项目进行实时监控,actuator是一个监控工具包,用来在程序运行时监控运行数据,开发者可以使用http端点或jmx来管理和监控应用程序的健康状况、应用信息、内存使用状况等。web服务端点是指您的程序用来和其他应用程序进行通信的url地址。

  在SpringBoot中,端点(endpoints)可用于监控应用及与应用进行交互,Spring Boot包含很多内置的端点,你也可以添加自己的。例如,health端点提供了应用的基本健康信息。每个端点都可以启用或禁用。这控制着端点是否被创建,并且它的bean是否存在于应用程序上下文中。要远程访问端点,除了启用端点,还必须通过JMX或HTTP进行暴露。大部分应用选择HTTP方式暴露,端点的ID映射到一个带/actuator前缀的URL。

  SpringBoot2的端点默认根路径已经由 “/” 调整到了 “/actuator“ 下,可以在配置文件application.yml中配置根路径:management.endpoints.web.base-path=/ 。SpringBoot内置了如下一些端点:

SpringBoot监控工具包Actuator使用

 

   在web项目中还可以使用如下端点:

SpringBoot监控工具包Actuator使用

  二、Actuator的使用

   1、引入jar包:使用Actuator需要在springboot项目中引入jar包,Maven引入方式如下

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

  2、启用端点:默认情况下,除shutdown以外的所有端点均已启用。要配置单个端点的启用,请使用management.endpoint.<id>.enabled属性。配置举例如下

#启用端点
management:
endpoints:
enabled-by-default:false #全局配置,关闭所有端点 endpoint: #单一端点配置 shutdown: enabled:true #启用shutdown端点

  3、暴露端点:要远程访问端点,必须通过JMX或HTTP进行暴露,配置举例如下

#暴露监控端点
management:
   endpoints:     
web: #http方式暴露
base-path:/actuator #actuator提供的api接口根路径 exposure: include: "*" #需要开放的端点,默认只打开health、info,*表示所有
exclude: #需要排除的端点
jmx: #jmx方式暴露
exposure:
include: "*"
exclude:

    注意:禁用的端点将从应用程序上下文中完全删除。如果您只想更改端点公开(对外暴露)的技术,请改为使用includeexclude属性。由于端点可能包含敏感信息,因此应仔细考虑何时公开它们。下表显示了内置端点的默认暴露情况。

SpringBoot监控工具包Actuator使用

   4、端点访问路径:默认情况下,端点通过使用端点的ID在/actuator路径下的HTTP上公开。例如,beans端点暴露在/actuator/beans下。如果要将端点映射到其他路径,则可以使用management.endpoints.web.path-mapping属性。另外,如果您想更改基本路径,则可以使用management.endpoints.web.base-path

  5、端点跨域访问:默认情况下,CORS支持处于禁用状态,只有在设置了management.endpoints.web.cors.allowed-origins属性后才能启用。以下配置允许来自example.com域的GET和POST调用:

management:
   endpoints:     
      web:              
        cors:
           allowed-origins = http://example.com
           allowed-methods = POST,GET

  6、自定义端点:如果添加用@Endpoint注解@Bean,则任何使用@ReadOperation@WriteOperation@DeleteOperation注释的方法都会自动通过JMX公开,并且也可以通过HTTP在Web应用程序中通过HTTP公开。也可以使用Jersey,Spring MVC或Spring WebFlux通过HTTP公开端点。

  7、端点操作:

    端点上的操作通过参数接收输入,这些参数的值取自URL的查询参数和JSON请求主体。通过JMX公开时,参数将映射到MBean操作的参数。参数默认是必需的,可以通过使用@org.springframework.lang.Nullable注释使其成为可选的。

    传递给端点操作方法的参数在必要时会自动转换为所需的类型。在调用操作方法之前,使用ApplicationConversionService的实例将通过JMX或HTTP请求接收到的输入转换为所需的类型。

 

上一篇:Spring Boot Actuator监控器


下一篇:吴裕雄--天生自然--SPRING BOOT--端点的分类与测试