actuator是spring boot的一个附加功能,可帮助你在应用程序生产环境时监视和管理应用程序。可以使用HTTP的各种请求来监管,审计,收集应用的运行情况.0特别对于微服务管理十分有意义.
如果需要使用这些功能,只需要在代码中引入actuator的start即可.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
Endpoints是actuator非常重要的部分,用来监视程序,和应用交互(如检查信息,)
ID | 描述 | 是否需要鉴权 |
---|---|---|
actuator
|
为其他端点提供“发现页面”。要求Spring HATEOAS在classpath路径上。 | 需要 |
auditevents
|
陈列当前应用程序的审计事件信息。 | 需要 |
autoconfig
|
展示自动配置信息并且显示所有自动配置候选人以及他们“被不被”应用的原因。 | 需要 |
beans
|
显示应用程序中所有Spring bean的完整列表。 | 需要 |
configprops
|
显示所有配置信息。 | 需要 |
dump
|
dump所有线程。 | 需要 |
env
|
陈列所有的环境变量。 | 需要 |
flyway
|
Shows any Flyway database migrations that have been applied. | 需要 |
health
|
显示应用程序运行状况信息 | 不需要 |
info
|
显示应用信息。 | 不需要 |
loggers
|
显示和修改应用程序中的loggers配置。 | 需要 |
liquibase
|
显示已经应用的任何Liquibase数据库迁移。 | 需要 |
metrics
|
显示当前应用程序的“指标”信息。 | 需要 |
mappings
|
显示所有 @RequestMapping
的url整理列表。 |
需要 |
shutdown
|
关闭应用(默认情况下不启用)。 | 需要 |
trace
|
显示跟踪信息(默认最后100个HTTP请求)。 | 需要 |
下面做一个简单的测试
创建一个spring boot 项目,或者clone我的项目 spring boot demo
然后运行,访问 http://localhost:8080/health
health可以替换为上述列表中的接口,然后就会有如下雷同的信息
{ status: "UP", diskSpace: { status: "UP", total: 214750457856, free: 168766361600, threshold: 10485760 } }
当然部分的功能是需要配置才能开启的比如: shutdown
在application.yml中配置
management: security: #是否启用安全 enabled: true endpoints: shutdown: #开启shutdown端点 enabled: true
然后post方式访问 http://localhost:8080/shutdown
{ "timestamp": 1511605936472, "status": 401, "error": "Unauthorized", "message": "Full authentication is required to access this resource.", "path": "/shutdown" }
由于没有权限,调用则会出现如上的错误,我们需要在application.yml的配置文件中配置免权限操作
management: security: enabled: false
然后再次访问/shutdown 出现如下结果:
{ "message": "Shutting down, bye..." }
当然这样是很不安全的哈,所以我们推荐使用spring security进行权限控制
需要我们在pom中引入
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
然后配置application.yml 如下
# 安全验证的账号密码 security: user: name: demo password: actuator
然后我们可以用配置中的账号进行登陆,然后将获取的Authorization放在请求头即可.
我们可以通过实现InfoContributor来定义我们自己的info相应体
@Component public class CustomContributor implements InfoContributor { @Override public void contribute(Info.Builder builder) { builder.withDetail("custom","this is my custom").build(); } }
然后访问 http://localhost:8080/info 则会出现我们自定义的信息.
同理我们还可以自己实现HealthIndicator 来定制不同的健康信息.
本文只是对actuator进行简单的介绍,更多的详细的信息可以参考官方文档和源代码,也可以看看spring boot admin server是如何实现的.
参考文档:
https://docs.spring.io/spring-boot/docs/1.5.9.BUILD-SNAPSHOT/reference/htmlsingle
源代码:
https://github.com/eumji025/springboot-learn
与君共勉!!!