Springboot监控端点Actuator实例
所属分类 springboot
浏览量 953
springboot2
spring-boot-starter-actuator
原生端点 用户自定义端点
应用配置类 查看应用静态信息,例如自动配置信息 加载的bean信息 配置信息 环境信息 请求映射信息
度量指标类 运行期的动态信息,堆栈 一些健康指标 metrics信息等
操作控制类 shutdown
HealthIndicators
org.springframework.boot.actuate.health.Health
DiskSpaceHealthIndicator
DataSourceHealthIndicator
ElasticsearchHealthIndicator
自定义端点
@Endpoint @ReadOperator @WriteOperation @DeleteOperation
@Endpoint
@ReadOperation
@WriteOperation
@DeleteOperation
@WebEndpoint
@JmxEndpoint
@WebEndpoint 相当于 @RestController
默认只暴露 info和health接口
management.endpoints.web.exposure.include = health,info,metrics
management.server.port=8090
management.endpoints.web.base-path=/actuator
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
management.endpoint.shutdown.enabled=true
management.endpoints.web.exposure.exclude=beans,trace
management.endpoints.jmx.exposure.exclude
management.endpoints.jmx.exposure.include *
health
info 显示配置文件中以 info 开头的配置信息
metrics
mappings
httptrace 显示HTTP跟踪信息(默认最近100个HTTP请求 响应信息)
configprops
env
beans
loggers
prometheus
jolokia 通过HTTP公开JMX bean(当Jolokia在类路径上时,不适用于WebFlux)
Using Jolokia for JMX over HTTP
自定义健康指示器和监控端点
/actuator/myendpoint
/actuator/health
curl post json 数据
curl -H "Content-type: application/json" -X POST -d '{"property":"myHealthStatus", "value":"FAIL2"}' http://127.0.0.1:8090/actuator/myendpoint
postman
post raw JSON(application/json)
{"property":"myHealthStatus", "value":"FAIL"}
@Component("myHealthIndicator")
public class MyHealthIndicator implements HealthIndicator{
@Override
public Health health() {
Object myHealthStatus = StatusUtil.get("myHealthStatus");
String myHealthStatusStr = null;
if(myHealthStatus!=null) {
myHealthStatusStr = myHealthStatus.toString();
}else {
myHealthStatusStr = "ok";
}
if("ok".equalsIgnoreCase(myHealthStatusStr )){
return Health.up().withDetail("myHealthStatus",myHealthStatusStr).build();
}
return Health.down().withDetail("myHealthStatus",myHealthStatusStr).build();
}
}
@Component
@Endpoint(id = "myendpoint")
// 一定要加@Component ,不能用 myEndpoint
public class MyEndPoint {
@ReadOperation
public Map read(){
Map status = StatusUtil.getData();
Map map = new HashMap<>(status);
map.put("now", LocalDateTime.now().toString());
return map;
}
@WriteOperation
public void update(String property, String value) {
System.out.println(property+","+value);
StatusUtil.put(property, value);
}
}
完整代码
https://gitee.com/dyyx/springboothello/tree/master/src/main/java/demo/myactuator
上一篇
下一篇
SpringMVC 数据验证
AspectJ简介及实例
Jackson JSON的三种处理方式
SpringIoC容器要点
JavaConfig与常见的Annotation
spring容器事件机制