返回首页
目录
前言
springboot的管理监控需要添加以下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
这时候如果你启动了Springboot之后,访问:http://localhost:8080/actuator是有响应的如下:
{ "_links": { "self": { "href": "http://localhost:8080/actuator", "templated": false }, "health": { "href": "http://localhost:8080/actuator/health", "templated": false }, "health-component": { "href": "http://localhost:8080/actuator/health/{component}", "templated": true }, "health-component-instance": { "href": "http://localhost:8080/actuator/health/{component}/{instance}", "templated": true }, "info": { "href": "http://localhost:8080/actuator/info", "templated": false } } }
看到这,相信大家一顿懵逼,不要着急, 接下来跟着教程走,将带你理解这到底是什么?是怎么一回事?能够做什么?
端点的开启
actuator是springboot为了生产就绪准备的监控功能。它默认能够开启和获取到spring程序运行中的一些端点状态。
它默认能够获取哪些端点状态呢?如下:
端点 | 说明 | 是否开启 |
|
公开当前应用程序的审核事件信息。 |
是 |
|
显示应用程序中所有Spring bean的完整列表。 |
是 |
|
暴露可用的缓存。 |
是 |
|
显示在配置和自动配置类上评估的条件以及它们匹配或不匹配的原因。 |
是 |
|
显示所有的整理列表 |
是 |
|
露出Spring的属性 |
是 |
|
显示已应用的任何Flyway数据库迁移。 |
是 |
|
显示应用健康信息。 |
是 |
|
显示HTTP跟踪信息(默认情况下,最后100个HTTP请求 - 响应交换)。 |
是 |
|
显示任意应用信息。 |
是 |
|
显示Spring Integration图。 |
是 |
|
显示和修改应用程序中记录器的配置。 |
是 |
|
显示已应用的任何Liquibase数据库迁移。 |
是 |
|
显示当前应用程序的“指标”信息。 |
是 |
|
显示所有 |
是 |
|
显示应用程序中的计划任务。 |
是 |
|
允许从Spring Session支持的会话存储中检索和删除用户会话。使用Spring Session对响应式Web应用程序的支持时不可用。 |
是 |
|
允许应用程序正常关闭。 |
没有 |
|
执行线程转储。 |
是 |
在web程序里还添加了以下端点:
|
返回 |
是 |
|
通过HTTP公开JMX bean(当Jolokia在类路径上时,不适用于WebFlux)。 |
是 |
|
返回日志文件的内容(如果已设置 |
是 |
|
以可以由Prometheus服务器抓取的格式公开指标。 |
是 |
这里的端点除了shutdown外都默认开启了。那么你可以通过url来访问获取端点信息。
比如里面的health端点,你可以访问http://localhost:8080/actuator/health就能获知整个程序是否健康。
比如里面的mappings
端点,你可以访问http://localhost:8080/actuator/mappingsmappings
就能获知整个web程序的RequestMapping。(但这是不可能的,你绝对看到的是404,接着往下看)
这些端点在web访问时的url就直接在/actuator/后面加上端点名字即可。而直接访问http://localhost:8080/actuator则是查看有哪些端点在web里可用。
我们仔细查看发现我们上面的例子http://localhost:8080/actuator里,就那个红色标注的端点,貌似只有health端点和info端点能用。是的,的确如此,所以你访问mappings时404,那这是为什么呢?
因为这些端点虽然开启了,但是它们内部着实包含着敏感信息,所以默认却没有在web里暴露。
端点的暴露规则
端点暴露方向有两个,一个是JMX(MBean方向,这个不讲),另一个是通过web。规则如下:
端点 | JMX | WEB |
|
Yes |
No |
|
Yes |
No |
|
Yes |
No |
|
Yes |
No |
|
Yes |
No |
|
Yes |
No |
|
Yes |
No |
|
Yes |
Yes |
|
N/A |
No |
|
Yes |
No |
|
Yes |
Yes |
|
Yes |
No |
|
N/A |
No |
|
N/A |
No |
|
Yes |
No |
|
Yes |
No |
|
Yes |
No |
|
Yes |
No |
|
N/A |
No |
|
Yes |
No |
|
Yes |
No |
|
Yes |
No |
|
Yes |
No |
我们可以看到在web里就只有health和info这俩没有用的给公开暴露了.真是气死个人了。
不过还好,我们可以在application.properties设置暴露规则:
management.endpoints.web.exposure.include=health,mappings
如上:我们把health和mappings公开了,但没有info.
所以我们再次在浏览器查看的时候,发现http://localhost:8080/actuator/mappings是可以查看的,health也可以查看,但是info不能查看了。
你也可以这样设置:
management.endpoints.web.exposure.include = *
management.endpoints.web.exposure.exclude = env,beans
把所有的都公开,但env和beans不公开。
这样通过web查询端点,你就可以简单的获知服务器的一些情况。