Actuator 端点
这一章主要是Actuator的使用,都是一些纯粹的工具和配置方法,以记录要点的形式快速通过。
修改默认路径:management.endpoints.web.base-path=/ac
默认只有/health和/info端点,可以自行添加和减少内容:
management.endpoints.web.exposure.include=beans //指定某个端点开放 management.endpoints.web.exposure.include=* //全部开发 management.endpoints.web.exposure.exclude=info //指定某个端点不开放
/info
可以在配置文件内以info.xxx.xxx
的方式进行配置,这里边的信息都会被/info端点展示出来。
/health
这个/health表示的是这个应用依赖的外部应用的状态,而不是自己的状态。UP表示正常,其他的DOWN,UNKNOWN,OUT_OF_SERVICE,只要有一个依赖的外部服务异常,就会显示出对应的代码。
management.endpoint.health.show-details=always
设置了之后,就可以显示详细的外部服务依赖信息。所有的依赖都至少有一个diskspace,表示文件系统。
Spring还对很多常用的外部依赖可以具体显示情况,详情看原书402页。
/beans
显示当前Web应用的Spring容器里所有的Bean,可以详细知道每一个Bean的源文件,以及注入的依赖。
/conditions
表示Spring容器里所有根据某些条件决定组装或者不组装的Bean,以及无条件组装的Bean的清单
/env
所有配置变量,可以通过变量的具体名称来获取详情,比如http://localhost:8080/actuator/env/server.port
还可以向/env端点进行POSTJSON对象来配置属性。注意,如此POST的属性都是临时的,在服务重启之后会消失。
/mappings
所有对外提供的端点及映射,非常详细,包含可访问的方法及对应的处理类和方法。
/loggers
应用里所有类的日志级别,可以通过POST设置。
/httptrace
列出100个最近的HTTP请求的详细信息,包括请求头,响应头,uri,方法等。
/headdump
是一个堆文件的内存dump,比较高级,这里不展开了。
/threaddump
当前线程情况的快照
/metrics
列出所有可以监控的metric,可以使用具体的名称加在后边,比如常用的http://localhost:8080/actuator/metrics/http.server.requests
,可以显示出HTTP的处理时间等信息。
后边的自定义内容了解即可,一般还需要使用Spring Security来保护Actuator的端点,最好不要将其对外开放,一般可以指定给管理员角色即可。
图形化监控Actuator
Spring Admin 服务器
和之前的Eureka和配置分发服务器还有熔断监控服务器类似,我们的每个微服务都启动了Actuator之后,可以使用一个客户端来集中监控所有的Actuator信息。
这个客户端就是Spring Admin,是一个自动去消费Actuator提供的REST API的监控服务器。
套路也是一样的,先添加依赖:
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> </dependency>
之后在启动类上添加@EnableAdminServer
注解。最好把端口设置为9090,之后启动这个应用,就变成一个Spring Admin服务器了。
Spring Admin 客户端
客户端要连接到这个监控服务器,需要添加依赖:
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> </dependency>
学习云道现在,对这种模式已经不陌生了。剩下肯定还需要修改配置:
boot.admin.client.url:localhost:9090
注意,现在我们云配置了,这个也需要去写在各个程序的云配置里。
注意spring.application.name
也要写,这个是不能写在云的配置里的。重新应用之后,就可以发现应用已经注册在Admin里。
还可以将Admin注册为一个Eureka服务,如果注册了Eureka服务,则完全不需要为每个服务配置成为Admin Client,Admin会通过Eureka找到所有服务然后使用它们的端点。
如果不想Admin注册为一个服务,可以在其配置里写上 eureka.client.register-with-eureka=false
剩下的部分主要是怎么看这些内容了。还有一个特殊的地方就是如果Actuator设置了身份验证,需要配置一下用户名和密码:
spring.boot.admin.client.url=localhost:9090 spring.boot.admin.client.instance.metadata.user.name=*** spring.boot.admin.client.instance.metadata.user.password=***
JMX 监听
Java历史很悠久,这么多库都是业界共同努力创建标准,刚知道对于监控程序的内部情况,也有一个标准叫做JMX。
想让Spring Boot应用被JMX监听,JDK在bin目录下有一个自带的jconsole.exe
,启动之后就可以对actuator的端点进行监听。
启动jconsole之后,会自动列出所有当前的java虚拟机进程应用名称,其中选择和项目名称的启动类同名的进程,就可以进行监听了。
进入监听之后,选择最后一项MBean
,然后选择org.springframework.boot
中的Endpoint
,可以监听具体的内容。
比如选择了info,然后选执行命令,就可以看到结果中就是自己设定的键值对。
这里简单了解一下即可,自定义Mbean之类以后有需要再来看吧。