spring boot(21)-actuator监控

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangb_java/article/details/78173169

actuator是spring boot中非常重要的一大功能,主要用于在项目运行时,查看运行中的各种配置及参数等

pom.xml

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

查看端点

在pom.xml中添加了以上配置之后,启动时控制台会打印如下信息,mapped后面的路径就是各个信息的查看端点

其中有一个端点/health,访问http://localhost:8080/health

如图,这是健康检查,UP表示当前服务器正在运行中。那么问题来了,如果服务器关闭,这里是不是应该显示down?你可以试一试

敏感配置

/health是非敏感端点,也就是没有什么机密信息,可以直接访问。其他大部分端点在spring boot早期版本中默认也是可以直接访问的,但现在出于安全考虑,默认大多数端点都是敏感端点,需要有权限才能访问。在properties中可以将其配置为非敏感,就是可以直接访问,以/beans 为例
#设置所有端点不敏感
endpoints.sensitive=false
#设置单个端点(/beans)不敏感
endpoints.beans.sensitive=false
以上两个配置只需要一个就可以开启查看http://localhost:8080/beans   

部分端点介绍

/autoconfig:自动配置,显示 哪些自动配置生效,哪些没生效,以及生效的条件是什么
/configprops:参数配置,显示当前环境下,spring boot可配置的properties参数有哪些
/beans:注入的Bean,显示当前spring boot中注入了哪些bean

注意:以上三个是理解和学习spring boot非常重要的端点,下面会进一步介绍这三个
/dump:活动线程
/env:环境属性
/health:健康检查
/info:定制信息
/mappings:URI路径,在这里可以看到有哪些端点
/metrics:查看内存、CPU核心等系统参数
/trace:用户请求信息
/loggers:日志
/env/{name:.*}:像这种端点,后面带有一个name,这是指获取env中名字为name的那一个参数的值,比如http://localhost:8080/env/local.server.port

Chrome插件

先说明一下,上图中我用的是Chrome浏览器,安装了JSONView插件,查看json时会自动格式化,可以看的更清楚,而且可以收起。另外我还装了tabbed postman-rest client插件,用于模拟post请求,因为有些端口安全级别高,只允许POST请求,后面会讲。怎么安装Chrome插件这里不讨论,网上找很简单,不过装Chrome插件需要翻墙。

/autoconfig

查看自动配置,在当前程序中某些自动配置生效以及不生效的原因


这个图是利用JSONView插件将json数据全部收起到最高级别

positiveMatches:是当前自动配置生效的bean

negativeMatches:是当前自动配置规则不符,没有配置的bean


展开positiveMatches有上面这一段,这就是默认tomcat连接池的自动配置原因,详细意思如果你不懂,我在这里简单几句话也讲不清楚。不过我在12篇有对这个自动配置的详细讲解,只要你看懂了第12篇,再对照着看这里,自然就会明白。只要你能看懂positiveMatches,自然就能看懂negativeMatches

/beans

查看当前注入到spring的所有bean。可以在其中找到当前的数据源bean是tomcat jdbc

bean:注入spring的bean的id名,有些名字是系统特定的,dataSource就是默认的数据源id
aliases:bean的别名,没配置过这个的可以忽视
scope:单例或多例,spring的bean默认是单例
type:bean的类型
resource:这里的Tomcat.class是这个bean的配置源类,详细意思我在第12篇讲过
dependencies:依赖的bean,在自动配置的时候必须先生成dependencies的dean,才能生成当前bean

/configprops

可以查看当前的properties参数值,或者你不知道你引入的spring boot组件有哪些properties参数可以配置,也可以在这里查找 ,如下是数据源配置
prefix:properties参数的前缀 
properties:参数值
比如图中倒数第二个参数maxIdle,在properties中的配置方式就是
spring.datasource.tomcat.maxIdle = xxx

/shutdown关闭应用

/shutdown是一个特殊端点,请求这个端点可以直接关闭运行中的应用程序。我们在eclipse中也可以启动和关闭spring boot,但那属于强杀,会将没执行完的线程直接杀死,就像按电源直接关机一样,可能会造成一些问题。而/shutdown就相当于点击左下角的关机按钮,属于优雅的关机。
要启用/shutdown端点,除了前面的敏感参数,还要单独配置开启它
endpoints.shutdown.enabled=true
此外,这个端点只能用post请求,也就是在浏览器中请求是无效的

这是我前面说的tabbed postman-rest client插件,这样就把spring boot程序优雅的关闭了

访问权限 

如果要保证这几个端点的安全,可以使用过滤器对这些端点进行权限控制。注意拦截器对这些端点无效,具体原因我在18篇19篇讲过。
展开阅读全文

没有更多推荐了,返回首页