HealthMetricsFetcherController(健康指标抓取)¶
为管理控制台监控页提供上游 actuator 健康指标代理:按指定 fetchUrl 抓取健康总览或单个 metric 详情,并返回 Spring Cloud DiscoveryClient 注册的微服务实例清单(lite 模式下回退一条占位实例)。
- 类级基址:
${myapps.context-path.manager:}/api/monitor(完整路径:{manager-context}/api/monitor<相对路径>) - Tag:控制器未声明
@Tag(源码无@Tag注解) - 控制器源码:
obpm-manager/src/main/java/cn/myapps/manager/authtime/controller/monitor/HealthMetricsFetcherController.java - 公共说明:
- 控制器**不**继承
BaseAuthTimeController(直接返回new Resource(0, "success", <data>))。统一Resource字段errcode/errmsg/data/errors,结构见 ../index.md「统一响应结构」。 - 三端点**无 try/catch**,异常时由 Spring 默认异常处理(HTTP 500,无统一
Resource体)。 - 成功返回的
Resource由控制器直接构造:new Resource(0, "success", <data>),故errmsg字段固定为"success"(不同于多数控制器使用的"ok")。 - 鉴权说明见 index.md「鉴权说明」(adminToken JWT,
/api/monitor/*不在白名单)。
1. 抓取健康指标¶
按调用方传入的 fetchUrl(通常是上游 actuator /actuator/health 完整 URL)抓取并返回健康总览(healthMetricsFetcher.fetchHealthMetrics,返回值经 JSON.parse 归一化)。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/healtMetrics(完整:{manager-context}/api/monitor/healtMetrics) - 鉴权:是(需管理员 adminToken,详见 index.md「鉴权说明」)
- Tag:(控制器未声明
@Tag)
注:路径
healtMetrics是源码拼写(缺一个h,源码@GetMapping("/healtMetrics")),按源码如实记录。
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| fetchUrl | query | string | 是 | 上游 actuator 健康端点完整 URL(由调用方提供) |
请求示例¶
响应¶
结构:统一 Resource。
data:Object(JSON.parse(上游响应),结构与上游 actuator 返回一致,通常为 { "status": "UP", "components": { ... } })。
成功示例:
{
"errcode": 0,
"errmsg": "success",
"data": {
"status": "UP",
"components": { "db": { "status": "UP", "details": { ... } } }
},
"errors": null
}
try/catch,异常时由 Spring 默认异常处理(HTTP 500,无统一 Resource 体)。
2. 获取 metric 详情¶
按上游 fetchUrl(通常是 actuator 根)+ metric 名抓取单个 metric 详情(healthMetricsFetcher.fetchHealthMetricDetail)。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/metricDetail/{metric}(完整:{manager-context}/api/monitor/metricDetail/{metric}) - 鉴权:是
- Tag:(控制器未声明
@Tag)
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| metric | path | string | 是 | metric 名(如 system.cpu.usage) |
| fetchUrl | query | string | 是 | 上游 actuator 基址 URL |
请求示例¶
响应¶
结构:统一 Resource。
data:Object(JSON.parse(上游响应),结构与上游 actuator metric 详情一致,如 { "name": "system.cpu.usage", "measurements": [ ... ] })。
成功示例:
{
"errcode": 0,
"errmsg": "success",
"data": {
"name": "system.cpu.usage",
"measurements": [ { "statistic": "VALUE", "value": 0.123 } ]
},
"errors": null
}
try/catch,异常时由 Spring 默认异常处理(HTTP 500,无统一 Resource 体)。
3. 获取已注册服务列表¶
返回 Spring Cloud DiscoveryClient 注册的微服务实例清单(Map<serviceId, List<ServiceInstance>>)。若注册中心无任何服务(lite 统一部署下),构造一条 obpm-lite 占位实例返回。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/services(完整:{manager-context}/api/monitor/services) - 鉴权:是
- Tag:(控制器未声明
@Tag)
请求参数¶
无。
请求示例¶
响应¶
结构:统一 Resource。
data:Map<String, List<ServiceInstance>>,键为服务 id(obpm-runtime / obpm-usercenter / lite 模式下 obpm-lite),值为实例数组。ServiceInstance 序列化字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| serviceId | string | 服务 id |
| instanceId | string | 实例 id |
| host | string | 主机 |
| port | int | 端口 |
| uri | string | 服务 URI(scheme://host:port) |
| scheme | string | 协议(如 http) |
| secure | boolean | 是否 HTTPS |
| metadata | object | 元数据(如 contextPath),lite 模式回退项固定为 { "contextPath": "/manager" } |
成功示例(微服务部署):
{
"errcode": 0,
"errmsg": "success",
"data": {
"obpm-runtime": [
{
"serviceId": "obpm-runtime",
"instanceId": "192.168.1.10:8083",
"host": "192.168.1.10",
"port": 8083,
"uri": "http://192.168.1.10:8083",
"scheme": "http",
"secure": false,
"metadata": { "contextPath": "/" }
}
]
},
"errors": null
}
{
"errcode": 0,
"errmsg": "success",
"data": {
"obpm-lite": [
{
"serviceId": "obpm-lite",
"instanceId": "obpm-lite-instance-id",
"host": "manager.example.com",
"port": 8087,
"uri": "http://manager.example.com:8087",
"scheme": "http",
"secure": false,
"metadata": { "contextPath": "/manager" }
}
]
},
"errors": null
}
try/catch,异常时由 Spring 默认异常处理(HTTP 500,无统一 Resource 体)。