1.概述


1.1作用


Spring Boot的Actuator。它提供了很多生产级的特性,监控和度量Spring Boot应用程序。


1.2展现方式


Actuator的这些特性可以通过众多REST端点、远程shell和JMX获得。


1.3提供的端点


端点可以分为三大类:配置端点、度量端点和其他端点。




springboot基于Actor模型 springboot actuator有哪些_应用程序



springboot基于Actor模型 springboot actuator有哪些_springboot基于Actor模型_02



1.4使用


A.引入


<dependency>


<groupId>org.springframework.boot</groupId>


<artifactId>spring-boot-starter-actuator</artifactId>


</dependency>


B.权限


引入security后,默认需要ACTUATOR角色。


2.配置端点


2.1获得Bean装配报告


beans:返回一个JSON文档,描述上下文里每个Bean的情况,包括其Java类型以及注入的其Bean。


( http://localhost:8080/beans )Bean条目都有五类信息:


◆bean: Spring应用程序上下文中的Bean名称或ID。


◆resource: .class文件的物理位置,通常是一个URL,指向构建出的JAR文件。


◆dependencies:当前Bean注入的Bean ID列表。


◆scope: Bean的作用域(通常是单例,这也是默认作用域)。


◆type: Bean的Java类型。


2.2. 自动配置信息


autoconfig:告诉你为什么会有这个Bean,或者为什么没有这个Bean。提供了报告,列出了计算过的所有条件,根据条件是否通过进行分组。


2.3. 查看配置属性


env:生成应用程序可用的所有环境属性的列表。这其中包括环境变量、 JVM属性、命令行参数,以及applicaition.properties或application.yml文件提供的属性。env端点还能用来获取单个属性的值,只需要在请求时在/env后加上属性名即可。


configprops:会生成一个报告,说明如何进行设置(注入或其他方式)。


2.4. 生成端点到控制器的映射


mappings:罗列出应用程序发布的全部端点。


映射的键都是一个字符串,其内容就是Spring MVC的@RequestMapping注解上设置的属性。每个映射的值都有两个属性: bean和method。 bean属性标识了SpringBean的名字,映射源自这个Bean。 method属性是映射对应方法的全限定方法签名。


3.度量端点


3.1. 查看应用程序的度量值


metrics:了解应用程序的内存情况(可用或空闲)。


/metrics端点还能用来获取单个属性的值,只需要在请求时在URL后加上对应的键名。



springboot基于Actor模型 springboot actuator有哪些_spring boot_03



HTTP的计数器和度量值: counter.status后的值是HTTP状态码,随后是所请求的路径。


示例:counter.status.200.metrics表明metrics端点返回200(OK)状态码的次数。


3.2. 追踪Web请求


trace:报告所有Web请求的详细信息,包括请求方法、路径、时间戳以及请求和响应的头信息。


/trace能显示最近100个请求的信息,包含对/trace自己的请求。它在内存里维护了一个跟踪库。


3.3. 导出线程活动


dump:生成当前线程活动的快照。


3.4. 监控应用程序健康情况


health:应用程序是否在运行。


/health对未经授权的请求只能提供简单的健康状态。对已经授权的请求则提供系统健康状态。



springboot基于Actor模型 springboot actuator有哪些_java_04



4.其它端点


4.1.关闭应用程序


shutdown:发送POST请求关闭应用程序,默认关闭。


endpoints.shutdown.enabled设置为true,开启该端点。


4.2.获取应用信息


info:展示各种你希望发布的应用信息。


通过配置带有info前缀的属性向/info端点的响应添加内容。


示例:


info.email = 275598139@qq.com,访问/info端点,就能得到如下响应:{"email":"275598139@qq.com"}


5.远程shell


以上方式是通过REST端点访问获取Actuator,另一个深入运行中应用程序内部的方式是使用远程shell。 Spring Boot集成了CRaSH,一种能嵌入任意Java应用程序的shell。


5.1.启用远程shell


在pom.xml文件里添加起步依赖即可:


<dependency> 

 

  <groupId>org.springframework.boot</groupId> 

 

  <artifactId>spring-boot-starter-remote-shell</artifactId> 

 

  </dependency>

5.2.连接远程shell


可以通过SSH工具连接shell,它监听的端口号是2000。



springboot基于Actor模型 springboot actuator有哪些_应用程序_05



6.JMX


Actuator还把它的端点以MBean的方式发布了出来,可以通过JMX来查看和管理。Actuator的端点都发布在org.springframework.boot域下。


7. 定制 Actuator


Actuator有多种定制方式,包括以下五项:


◆重命名端点。


◆启用和禁用端点。


◆自定义度量信息。


◆创建自定义仓库来存储跟踪数据。


◆插入自定义的健康指示器。


7.1.修改端点 ID


Actuator端点由一个ID用来决定端点的路径,例如:/beans端点的默认ID就是beans。可以通过修改ID来改变端点的路径。属性名是endpoints.endpoint-id.id。


endpoints.info.id = myinfo,访问 http://localhost:8000/myinfo ;


7.2. 启用和禁用端点


默认所有端点(除shutdown)都启用。禁用其他的端点,将endpoints.endpoint_id.enabled设置为false。


8. Actuator安全


Actuator权限,引入security后,默认需要ACTUATOR角色。


management.context-path:给Actuator端点访问路径加上前缀。