是Spring Boot 提供的对应用系统的自省和监控的集成功能
可查看应用(配置)信息、环境信息以及对应用进行操控
原生端点:
/info
/bean
/mappings
(URI路径信息)/health
threaddump
(当前线程活动快照)/shutdown
(关闭应用 POST)自定义端点:扩展属性、指标
添加依赖:
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-actuatorartifactId>
dependency>
启动项目后可看到:
通过 localhost:8080/actuator
访问到监控导航页面:
spring boot 2.x.x默认开放 health 和 info 两个端点
{
_links: {
self: {
href: "http://localhost:8080/actuator",
templated: false
},
health: {
href: "http://localhost:8080/actuator/health",
templated: false
},
health-path: {
href: "http://localhost:8080/actuator/health/{*path}",
templated: true
},
info: {
href: "http://localhost:8080/actuator/info",
templated: false
}
}
}
/health
健康检查,检查应用资源
application.yml:
management:
endpoint:
health:
show-details: always
status:
UP:正常
DOWN:遇到了问题,不正常
OUT_OF_SERVICE:资源未在使用,或不该去使用
UNKNOWN:未知
/info
描述信息
可在配置文件 application.yml 中设置相关属性,不设置返回空Json
info:
app-name: spring-boot-demo
autor: orcas
email: [email protected]
激活其他的Actuator端点:
可以使用通配符 '*'
激活所有,或者结合include/exclude指定
management:
endpoints:
web:
exposure:
include: dump,loggers,mappings,metrics,env
还可以使用可视化工具进行监控
@Endpoint(id = "datetime") // 自定义事件端点
public class DateTimeEndPoint {
private String format = "yyyy-MM-dd HH:mm:ss";
private String name = "orcas";
/**
* @ReadOperation 该注解用于显示监控指标
* @return
*/
@ReadOperation
public Map<String, Object> info() {
Map<String, Object> info = new HashMap<>();
info.put("name", name);
info.put("datetime", new SimpleDateFormat(format).format(new Date()));
return info;
}
/**
* @WriteOperation 该注解 动态更改监控指标 使用的是 POST 请求
* @param name
*/
@WriteOperation
public void setName(String name) {
this.name = name;
}
}
配置:
@Configuration
public class DateTimeEndpointConfig {
@Bean
@ConditionalOnMissingBean
@ConditionalOnAvailableEndpoint
public DateTimeEndPoint dateTimeEndPoint() {
return new DateTimeEndPoint();
}
}
访问 localhost:8080/actuator/datetime
这里 /actuator后的路径就是注解 @Endpoint
中设置的 id(不要与原有的端点 id 重复)
POST请求动态修改
{
"name": "fish"
}
同一目录下的 application 和 bootstrap:
不同位置的配置文件加载顺序(优先级):
高优先级覆盖低优先级的相同配置,多个配置文件互补
在不同环境下使用不同配置
用连字符 ---
分割
# 所有环境公用的配置属性
management:
endpoint:
health:
show-details: always
endpoints:
web:
exposure:
include: dump,loggers,mappings,metrics,env
info:
app-name: spring-boot-demo
autor: orcas
email: [email protected]
# 可设置默认启用的 profiles
spring:
profiles:
active: dev
---
# profile=x 某环境下的专用属性
# 开发环境
spring:
profiles: dev
---
# 生产环境
spring:
profiles: prod
server:
tomcat:
max-threads: 300
max-connections: 1000
也可通过active profiles来指定
也可通过文件名来划分
application.properties
application-dev.properties
application-prod.properties