Spring Boot Actuator监控端点小结
|
在Spring Boot的众多Starter POMs中有一个特殊的模块,它不同于其他模块那样大多用于开发业务功能或是连接一些其他外部资源。它完全是一个用于暴露自身信息的模块,所以很明显,它的主要作用是用于监控与管理,它就是:
初识Actuator 下面,我们可以通过对快速入门中实现的Spring Boot应用增加 在现有的Spring Boot应用中引入该模块非常简单,只需要在 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 通过增加该依赖之后,重新启动应用。此时,我们可以在控制台中看到如下图所示的输出: 上图显示了一批端点定义,这些端点并非我们自己在程序中创建,而是由
{
"status": "UP","diskSpace": {
"status": "UP","total": 491270434816,"free": 383870214144,"threshold": 10485760
}
}
原生端点 通过在快速入门示例中添加
下面我们来详细了解一下这三类端点都分别可以为我们提供怎么样的有用信息和强大功能,以及我们如何去扩展和配置它们。 应用配置类 由于Spring Boot为了改善传统Spring应用繁杂的配置内容,采用了包扫描和自动化配置的机制来加载原本集中于xml文件中的各项内容。虽然这样的做法,让我们的代码变得非常简洁,但是整个应用的实例创建和依赖关系等信息都被离散到了各个配置类的注解上,这使得我们分析整个应用中资源和实例的各种关系变得非常的困难。而这类端点就可以帮助我们轻松的获取一系列关于Spring 应用配置内容的详细报告,比如:自动化配置的报告、Bean创建的报告、环境属性的报告等。
{
"positiveMatches": { // 条件匹配成功的
"EndpointWebMvcAutoConfiguration": [
{
"condition": "OnClassCondition","message": "@ConditionalOnClass classes found: javax.servlet.Servlet,org.springframework.web.servlet.DispatcherServlet"
},{
"condition": "OnWebApplicationCondition","message": "found web application StandardServletEnvironment"
}
],...
},"negativeMatches": { // 条件不匹配成功的
"HealthIndicatorAutoConfiguration.DataSourcesHealthIndicatorConfiguration": [
{
"condition": "OnClassCondition","message": "required @ConditionalOnClass classes not found: org.springframework.jdbc.core.JdbcTemplate"
}
],...
}
}
从如上示例中我们可以看到,每个自动化配置候选项中都有一系列的条件,比如上面没有成功匹配的Health
[
{
"context": "hello:dev:8881","parent": null,"beans": [
{
"bean": "org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration$DispatcherServletConfiguration","scope": "singleton","type": "org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration$DispatcherServletConfiguration$$EnhancerBySpringCGLIB$$3440282b","resource": "null","dependencies": [
"serverProperties","spring.mvc.CONFIGURATION_PROPERTIES","multipartConfigElement"
]
},{
"bean": "dispatcherServlet","type": "org.springframework.web.servlet.DispatcherServlet","resource": "class path resource [org/springframework/boot/autoconfigure/web/DispatcherServletAutoConfiguration$DispatcherServletConfiguration.class]","dependencies": []
}
]
}
]
如上示例中,我们可以看到在每个bean中都包含了下面这几个信息:
/configprops:该端点用来获取应用中配置的属性信息报告。从下面该端点返回示例的片段中,我们看到返回了关于该短信的配置信息,prefix属性代表了属性的配置前缀,
{
"configurationPropertiesReportEndpoint": {
"prefix": "endpoints.configprops","properties": {
"id": "configprops","sensitive": true,"enabled": true
}
},...
}
/env:该端点与
{
"profiles": [
"dev"
],"server.ports": {
"local.server.port": 8881
},"servletContextInitParams": {
},"systemProperties": {
"idea.version": "2016.1.3","java.runtime.name": "Java(TM) SE Runtime Environment","sun.boot.library.path": "C:Program FilesJavajdk1.8.0_91jrebin","java.vm.version": "25.91-b15","java.vm.vendor": "Oracle Corporation","systemEnvironment": {
"configsetroot": "C:WINDOWSConfigSetRoot","RABBITMQ_BASE": "E:toolsrabbitmq","applicationConfig: [classpath:/application-dev.properties]": {
"server.port": "8881"
},"applicationConfig: [classpath:/application.properties]": {
"server.port": "8885","spring.profiles.active": "dev","info.app.name": "spring-boot-hello","info.app.version": "v1.0.0","spring.application.name": "hello"
}
}
/mappings:该端点用来返回所有Spring MVC的控制器映射关系报告。从下面的示例片段中,我们可以看该报告的信息与我们在启用Spring MVC的Web应用时输出的日志信息类似,其中
{
"/webjars/**": {
"bean": "resourceHandlerMapping"
},"/**": {
"bean": "resourceHandlerMapping"
},"/**/favicon.ico": {
"bean": "faviconHandlerMapping"
},"{[/hello]}": {
"bean": "requestMappingHandlerMapping","method": "public java.lang.String com.didispace.web.HelloController.index()"
},"{[/mappings || /mappings.json],methods=[GET],produces=[application/json]}": {
"bean": "endpointHandlerMapping","method": "public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()"
},...
}
(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
