121. Actuator API

/gatewayActuator 端点允许监视 Spring Cloud Gateway 应用程序并与之交互。为了可远程访问,端点必须在应用程序属性中为enabled通过 HTTP 或 JMX 公开

application.properties.

management.endpoint.gateway.enabled=true # default value
management.endpoints.web.exposure.include=gateway

121.1 检索路由filter

121.1.1 全局filter

要检索应用于所有 Route 的global filters,请向/actuator/gateway/globalfilters发出GET请求。产生的响应类似于以下内容:

{
  "or[emailprotected]77856cc5": 10100,
  "o[emailprotected]4f6fd101": 10000,
  "or[emailprotected]32d22650": -1,
  "[emailprotected]6459d9": 2147483647,
  "[emailprotected]5e0": 2147483647,
  "[emailprotected]d23": 0,
  "org.s[emailprotected]135064ea": 2147483637,
  "[emailprotected]23c05889": 2147483646
}

该响应包含适当的全局filter的详细信息。为每个全局filter提供了filter对象(例如or[email protected]77856cc5)和filter链中相应的order的字符串表示形式。

121.1.2 路由filter

要检索应用于 Route 的GatewayFilter factories,请向/actuator/gateway/routefilters发出GET请求。产生的响应类似于以下内容:

{
  "[[emailprotected] configClass = AbstractNameValueGatewayFilterFactory.NameValueConfig]": null,
  "[[emailprotected] configClass = Object]": null,
  "[[emailprotected] configClass = Object]": null
}

该响应包含应用于任何特定路由的 GatewayFilter 工厂的详细信息。为每个工厂提供了对应对象(例如[[email protected] configClass = Object])的字符串表示形式。请注意,null值是由于端点控制器的实现不完整而引起的,因为它试图设置对象在filter链中的 Sequences,而该 Sequences 不适用于 GatewayFilter 工厂对象。

121.2 刷新路由缓存

要清除 Route 缓存,请向/actuator/gateway/refresh发出POST请求。该请求返回 200,但没有响应正文。

121.3 检索网关中定义的路由

要检索网关中定义的路由,请向/actuator/gateway/routes发出GET请求。产生的响应类似于以下内容:

[{
  "route_id": "first_route",
  "route_object": {
    "predicate": "org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory$$Lambda$432/[emailprotected]",
    "filters": [
      "OrderedGatewayFilter{delegate=org.springframework.cloud.gateway.filter.factory.PreserveHostHeaderGatewayFilterFactory$$Lambda$436/[emailprotected], order=0}"
    ]
  },
  "order": 0
},
{
  "route_id": "second_route",
  "route_object": {
    "predicate": "org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory$$Lambda$432/[emailprotected]",
    "filters": []
  },
  "order": 0
}]

该响应包含网关中定义的所有路由的详细信息。下表描述了响应的每个元素(即,Route)的结构。

PathTypeDescription
route_idStringRoute 编号。
route_object.predicateObject路由谓词。
route_object.filtersArrayGatewayFilter factories应用于 Route。
orderNumberRouteSequences。

121.4 检索有关特定 Route 的信息

要检索有关一条 Route 的信息,请向/actuator/gateway/routes/{id}发出GET请求(例如/actuator/gateway/routes/first_route)。产生的响应类似于以下内容:

{
  "id": "first_route",
  "predicates": [{
    "name": "Path",
    "args": {"_genkey_0":"/first"}
  }],
  "filters": [],
  "uri": "http://www.uri-destination.org",
  "order": 0
}]

下表描述了响应的结构。

PathTypeDescription
idStringRoute 编号。
predicatesArray路由谓词的集合。每个项目都定义给定谓词的名称和自变量。
filtersArray应用于 Route 的filter集合。
uriString路由的目标 URI。
orderNumberRouteSequences。

121.5 创建和删除特定 Route

要创建路由,请使用 JSON 主体向/gateway/routes/{id_route_to_create}发出POST请求,该 JSON 主体指定了路由的字段(请参见上一小节)。

要删除 Route,请向/gateway/routes/{id_route_to_delete}发出DELETE请求。

121.6 概述:所有端点的列表

下表总结了 Spring Cloud GatewayActuator 端点。请注意,每个端点都有/actuator/gateway作为基本路径。

IDHTTP MethodDescription
globalfiltersGET显示应用于路由的全局filter列表。
routefiltersGET显示应用于特定路由的 GatewayFilter 工厂列表。
refreshPOST清除路由缓存。
routesGET显示网关中定义的路由列表。
routes/{id}GET显示有关特定 Route 的信息。
routes/{id}POST将新路由添加到网关。
routes/{id}DELETE从网关删除现有路由。