springboot管理及监控之端点

返回首页

目录

 

前言

端点的开启

端点的暴露规则


 

前言

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程序运行中的一些端点状态。

它默认能够获取哪些端点状态呢?如下:

端点 说明 是否开启

auditevents

公开当前应用程序的审核事件信息。

beans

显示应用程序中所有Spring bean的完整列表。

caches

暴露可用的缓存。

conditions

显示在配置和自动配置类上评估的条件以及它们匹配或不匹配的原因。

configprops

显示所有的整理列表@ConfigurationProperties

env

露出Spring的属性ConfigurableEnvironment

flyway

显示已应用的任何Flyway数据库迁移。

health

显示应用健康信息。

httptrace

显示HTTP跟踪信息(默认情况下,最后100个HTTP请求 - 响应交换)。

info

显示任意应用信息。

integrationgraph

显示Spring Integration图。

loggers

显示和修改应用程序中记录器的配置。

liquibase

显示已应用的任何Liquibase数据库迁移。

metrics

显示当前应用程序的“指标”信息。

mappings

显示所有@RequestMapping路径的整理列表。

scheduledtasks

显示应用程序中的计划任务。

sessions

允许从Spring Session支持的会话存储中检索和删除用户会话。使用Spring Session对响应式Web应用程序的支持时不可用。

shutdown

允许应用程序正常关闭。

没有

threaddump

执行线程转储。

在web程序里还添加了以下端点:

heapdump

返回hprof堆转储文件。

jolokia

通过HTTP公开JMX bean(当Jolokia在类路径上时,不适用于WebFlux)。

logfile

返回日志文件的内容(如果已设置logging.filelogging.path属性)。支持使用HTTP Range标头检索部分日志文件的内容。

prometheus

以可以由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

auditevents

Yes

No

beans

Yes

No

caches

Yes

No

conditions

Yes

No

configprops

Yes

No

env

Yes

No

flyway

Yes

No

health

Yes

Yes

heapdump

N/A

No

httptrace

Yes

No

info

Yes

Yes

integrationgraph

Yes

No

jolokia

N/A

No

logfile

N/A

No

loggers

Yes

No

liquibase

Yes

No

metrics

Yes

No

mappings

Yes

No

prometheus

N/A

No

scheduledtasks

Yes

No

sessions

Yes

No

shutdown

Yes

No

threaddump

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查询端点,你就可以简单的获知服务器的一些情况。

上一篇:ChengDu University Mental Health Website


下一篇:控制台打怪升级游戏。。。