开发者学堂课程【SpringBoot 快速掌握 - 高级应用:监管端点测试】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/613/detail/9323
监管端点测试
内容介绍
一、含义及功能
二、监控和管理端点
一、含义及功能
监控管理是一个重要的功能, spring-boot 通过引入 actuator 可以提供准生产环境下的应用监控和管理功能,可以实时的监控到应用的健康指标信息,配置信息以及自动审计等功能。
二、监控和管理端点
引入 actuator 模块测试 spring-boot 的应用监控和管理功能
1、创建项目
使用 spring 的初始化向导创建一个工程,Group 为 com.atguigu,Artifact 为 spring-boot-08-actuator,测试 actuator 功能。spring-boot 版本是1.5.12,选中 Devtools 工具以方便部署,加上 Web 应用。在 Ops 中选中 actuator 模块,点击 next,点击 Finish。
2、启动项目
启动后发现控制台会有很多的映射信息,比如 {[/info||/info.json],methods=[GET],表示把 info 映射到哪个方法发送 GET 请求。
这就是监控信息,通过它们可以监控到应用的一些状态,但是这是引入 actuator 模块才有的功能。如果不引入 actuator 模块,注掉以下代码:
org.springframcworh.boot
spring-boot-starter-actuator
重新启动应用,Mapped 只剩下默认的 /error 了。
3、访问监控信息
按照路径进行访问,比如 metrics 等指标。输入网址 localhost:8080/metrics,进入网址提示 There was an unexpected error (type=Unauthorized, status=401),表示没有进行授权,即要访问的这些监控信息默认是受保护的。再访问 localhost:8080/beans,也是被保护的。
//访问信息要先在 application.properties 中配置,management.security 默认是安全管理的,这里改为 false。
management.security.enabled=false
//ctrl+f9 重新启动应用,刷新网页,localhost:8080/beans 中就出现内容了。
监控和管理端点
端点名 |
描述 |
autoconfig |
所有自动配置信息 |
auditevents |
审计事件 |
beans |
所有Bean的信息 |
configprops |
所有配置属性 |
dump |
线程状态信息 |
env |
当前环境信息 |
health |
应用健康状况 |
info |
当前应用信息 |
metrics |
应用的各项指标 |
mappings |
应用@RequestMapping映射路径 |
shutdown |
关闭当前应用(默认关闭) |
trace |
追踪信息(最新的http请求) |
(1)、Beans 端点
Beans 监控容器中每个组件的信息,比如名字,类型,是否单例,有无其他依赖组件等等。
bean: "springboot.08Actaat.orkpplication",
aliases [ ].
scope: "singletan",
type:”com.at.guigu.sprirgboot08actuat.or.SpringbootO8actuatorkpplicaticn$$BhhancerBySpringOLIB$2c90d8ed”,
resource:"null".
dependencies: []
(2)、Health 端点
Health 监控应用健康状况信息
status:“UP,//up 表示当前正在上线启动
-diskSpace:{
status:”UP”,
total: 126682750976,
froe: 42881179648,
threshold 10485760
(3)、auditevents 端点
Auditevents 是审计事件相关的信息
{
events[]
}
//目前还没有审计事件
(4)、info 端点
Info 监控应用信息,info 中的内容是来自于application.properties 中以 info 开头的信息。书写代码:
Info.app.id=hello
Info.app.version=1.0.0
ctrl+f9 重启应用,在 localhost:8080/info 中就会显示出内容,如下:
-app{
id:hello
version:”1.0.0”
//如果把源码托管给 github。就要配置 github 的属性。新建git.properties 文件。
public class GitProperties-extends InfoProperties{
public GitProperties (Properties entries) { super(processEntries(entries)); }
//在文件中有 Gitproperties 配置类,这是一个属性文件,是继承infoproperties 的。只要所有属性继承 infoproperties,配置出的东西就能使用,如下属性都可以进行配置: comit.time,build.time,comit.id,branch 分支等。
git.branch=master
git.commit.id=xjkd33s
git.commit.time=2017-12-1212:12:5
6
//配置一些属性,comit.time 是提交时间,配置完成后,ctrl+F9 重启应用,如果没有启动起来可以手动启动。刷新页面,显示出了相关信息。
-git{
-comit{
Time: “2017-12-1212:12:56”,
Id:” xjkd33s”
}
Branch”master”
}
(5)、dump 端点
Dump 用来暴露程序运营中的线程信息,包括线程的名字,线程的 id,线程的状态,线程的堆栈信息等等。
threadName:”http-nio-8080-Acceptor-0" ,
threadId:95
threadState“RUNNABLE",
-stack Trace:{…}
(6)、Autoconfig 端点
Autoconfig 用来显示当前的自动配置信息。显示哪些自动配置起作用,哪些自动配置没有起作用。PositiveMatches{…}都是起作用的,NegativeMatches{…}都是没有起作用的。比如
auditAutoCanfiguration#authent icationAuditListener: {
-Matched [
//表示自动配置没有匹配。
根据 Autoconfig 就可以知道容器中的自动配置类哪些生效,哪些没有生效。
(7)、Heapdump 端点
Heapdump 是一个文件下载,下载当前的内存快照,通过分析这些内存快照定位应用的一些问题。
(8)、Trace 端点
Trace 用来返回基本的 http 请求的追踪信息。其中包含了所有发过的请求信息,比如请求方式,请求路径,请求头的信息,请求响应的信息等。
timestanp:15257725301.
info:{
method“GET",
path "heapdunp",
- headers{
-reqaest {…}.
- response:{…}
//发送一个 404 请求,http://localhost:8080/aaaa,刷新 trace。
info:{
method“GET",
path "/aaaa",
- response:{
X-Applicatiom Context: "application",
status:"404”
(9)、mappings 端点
Mappings 返回当前 web 应用每一个请求映射信息,比如 /error请求由谁处理,/error 请求生产 html 页面的由谁处理,每个 Controller 的请求映射信息也在此页面中。
(10)、Metrics 端点
Metrics 返回的是当前系统的监控指标,包含有内存大小,内存剩余用量,处理器数量以及线程相关的信息,加载类的信息等。
Mem:445337,
Mem.free:362141,
Processors:8,
Threads.peak:44,
Threads.daemon:27,
Threads.totalStarted:88,
Threads:29,
Classes:6379,
Classes.loaded:6461,
Classes.unloaded:82,
(11)、env 端点
Env 指应用当前环境信息,包括服务器的设置,系统环境变量的值,application 配置的相关信息,之前书写的配置文件内容都在此网页中。
profiles [ ],
-server.ports:{
local.server.port:8080
},
servletContextInitParans:{ },
systemProperties:{…}
systemEnvironment:{…}
-applicationConfig:[classpath:/application.properties]: {…}
Loggers 指日志信息,这里不做详细讲解。
(12)、Configprops 端点
Configprops 返回的是所有配置属性的信息报告。Prefix 指的是配置的前置,properties 是可以配置哪些。
//如果要禁用 metrics 端点,写法如下:按照属性路径配置。
endpoints.metrics.enabled=false
重新启动, metrics 就不能进行访问了。取消禁用就可以重新访问监控指标。
(13)、Shutdown 端点
Shutdown 可以远程关闭应用。
//打开端点
endpoints.shutdown.enabled=true
//关闭端点,使用 postman 给 localhost:8080/shutdown 发送 post 请求,发送 get 请求会不支持。发送后会出现{“message:”shutting down,bye…”},代表关闭应用。
以上就是各个监控和管理端点的作用。