springCloud 学习三之 Eureka 健康检查,java 开发 api 接口教程
"href": "http://localhost:8088//actuator",
"templated": false
},
"archaius": {
"href": "http://localhost:8088//actuator/archaius",
"templated": false
},
"beans": {
"href": "http://localhost:8088//actuator/beans",
"templated": false
},
"caches": {
"href": "http://localhost:8088//actuator/caches",
"templated": false
},
"caches-cache": {
"href": "http://localhost:
8088//actuator/caches/{cache}",
"templated": true
},
"health-path": {
"href": "http://localhost:8088//actuator/health/{*path}",
"templated": true
},
"health": {
"href": "http://localhost:8088//actuator/health",
"templated": false
},
"info": {
"href": "http://localhost:8088//actuator/info",
"templated": false
},
"conditions": {
"href": "http://localhost:8088//actuator/conditions",
"templated": false
},
"configprops": {
"href": "http://localhost:8088//actuator/configprops",
"templated": false
},
"env-toMatch": {
"href": "http://localhost:8088//actuator/env/{toMatch}",
"templated": true
},
"env": {
"href": "http://localhost:8088//actuator/env",
"templated": false
},
"loggers-name": {
"href": "http://localhost:8088//actuator/loggers/{name}",
"templated": true
},
"loggers": {
"href": "http://localhost:8088//actuator/loggers",
"templated": false
},
"heapdump": {
"href": "http://localhost:8088//actuator/heapdump",
"templated": false
},
"threaddump": {
"href": "http://localhost:8088//actuator/threaddump",
"templated": false
},
"metrics": {
"href": "http://localhost:8088//actuator/metrics",
"templated": false
},
"metrics-requiredMetricName": {
"href": "http://localhost:8088//actuator/metrics/{requiredMetricName}",
"templated": true
},
"scheduledtasks": {
"href": "http://localhost:8088//actuator/scheduledtasks",
"templated": false
},
"mappings": {
"href": "http://localhost:8088//actuator/mappings",
"templated": false
},
"refresh": {
"href": "http://localhost:8088//actuator/refresh",
"templated": false
},
"features": {
"href": "http://localhost:8088//actuator/features",
"templated": false
},
"service-registry": {
"href": "http://localhost:8088//actuator/service-registry",
"templated": false
}
}
}
api 端点功能
Health
会显示系统状态
{"status":"UP"}
shutdown
用来关闭节点
开启远程关闭功能
management.endpoint.shutdown.enabled=true
使用 Post 方式请求端点
{
"message": "Shutting down, bye..."
}
autoconfig
获取应用的自动化配置报告 beans
获取应用上下文中创建的所有 Bean
configprops
获取应用中配置的属性信息报告
env
获取应用所有可用的环境属性报告
Mappings
获取应用所有 Spring Web 的控制器映射关系报告
info
获取应用自定义的信息
metrics
返回应用的各类重要度量指标信息
Metrics 节点并没有返回全量信息,我们可以通过不同的 key 去加载我们想要的值
metrics/jvm.memory.max
Threaddump
1.x 中为 dump
返回程序运行中的线程信息
Eureka 健康检查
===========
由于 server 和 client 通过心跳保持 服务状态,而只有状态为 UP 的服务才能被访问。看 eureka 界面中的 status。
比如心跳一直正常,服务一直 UP,但是此服务 DB 连不上了,无法正常提供服务。
此时,我们需要将微服务的健康状态也同步到 server。只需要启动 eureka 的健康检查就行。这样微服务就会将自己的健康状态同步到 eureka。配置如下即可。
开启手动控制
在 client 端配置:将自己真正的健康状态传播到 server。
eureka:
client:
healthcheck:
enabled: true
Client 端配置 Actuator
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
改变健康状态的 Service
@Service
public class HealthStatusService implements HealthIndicator{
private Boolean status = true;
public void setStatus(Boolean status) {
this.status = status;
}
@Override
public Health health() {
// TODO Auto-generated method stub
if(status)
return new Health.Builder().up().build();
return new Health.Builder().down().build();
}
public String getStatus() {
// TODO Auto-generated method stub
return this.status.toString();
}
}
测试用的 Controller
@GetMapping("/health")
public String health(@RequestParam("status") Boolean status) {
healthStatusSrv.setStatus(status);
return healthStatusSrv.getStatus();
}
演示
服务 UP:
评论