15. 执行器 API
actuator 端点允许您监控 Spring Cloud Gateway 应用程序并与之交互。
要远程访问,必须在应用程序属性中通过 HTTP 或 JMX 启用和公开终端节点。
下面的清单显示了如何做到这一点:/gateway
management.endpoint.gateway.enabled=true # default value
management.endpoints.web.exposure.include=gateway
15.1. 详细执行器格式
Spring Cloud Gateway 中添加了一种新的、更详细的格式。
它为每个路由添加了更多详细信息,允许您查看与每个路由关联的谓词和筛选条件以及任何可用的配置。
以下示例配置:/actuator/gateway/routes
[
{
"predicate": "(Hosts: [**.addrequestheader.org] && Paths: [/headers], match trailing slash: true)",
"route_id": "add_request_header_test",
"filters": [
"[[AddResponseHeader X-Response-Default-Foo = 'Default-Bar'], order = 1]",
"[[AddRequestHeader X-Request-Foo = 'Bar'], order = 1]",
"[[PrefixPath prefix = '/httpbin'], order = 2]"
],
"uri": "lb://testservice",
"order": 0
}
]
默认情况下,此功能处于启用状态。要禁用它,请设置以下属性:
spring.cloud.gateway.actuator.verbose.enabled=false
这将在未来发行版中默认使用。true
15.2. 检索路由过滤器
本节详细介绍了如何检索路由过滤器,包括:
15.2.1. 全局过滤器
要检索应用于所有路由的全局过滤器,请向 .生成的响应类似于以下内容:GET
/actuator/gateway/globalfilters
{ "org.springframework.cloud.gateway.filter.ReactiveLoadBalancerClientFilter@77856cc5": 10100, "org.springframework.cloud.gateway.filter.RouteToRequestUrlFilter@4f6fd101": 10000, "org.springframework.cloud.gateway.filter.NettyWriteResponseFilter@32d22650": -1, "org.springframework.cloud.gateway.filter.ForwardRoutingFilter@106459d9": 2147483647, "org.springframework.cloud.gateway.filter.NettyRoutingFilter@1fbd5e0": 2147483647, "org.springframework.cloud.gateway.filter.ForwardPathFilter@33a71d23": 0, "org.springframework.cloud.gateway.filter.AdaptCachedBodyGlobalFilter@135064ea": 2147483637, "org.springframework.cloud.gateway.filter.WebsocketRoutingFilter@23c05889": 2147483646 }
响应包含已实施的全局筛选条件的详细信息。
对于每个全局过滤器,都有过滤器对象的字符串表示形式(例如,)和过滤器链中的相应顺序。org.springframework.cloud.gateway.filter.ReactiveLoadBalancerClientFilter@77856cc5
15.2.2. 路由过滤器
要检索应用于路由的 GatewayFilter
工厂,请向 .
生成的响应类似于以下内容:GET
/actuator/gateway/routefilters
{ "[AddRequestHeaderGatewayFilterFactory@570ed9c configClass = AbstractNameValueGatewayFilterFactory.NameValueConfig]": null, "[SecureHeadersGatewayFilterFactory@fceab5d configClass = Object]": null, "[SaveSessionGatewayFilterFactory@4449b273 configClass = Object]": null }
响应包含应用于任何特定路由的工厂的详细信息。
对于每个工厂,都有相应对象的字符串表示形式(例如,)。
请注意,该值是由于端点控制器的实现不完整,因为它尝试在过滤器链中设置对象的顺序,这不适用于工厂对象。GatewayFilter
[SecureHeadersGatewayFilterFactory@fceab5d configClass = Object]
null
GatewayFilter
15.3. 刷新路由缓存
要清除路由缓存,请向 .
请求返回 200 而不带响应正文。POST
/actuator/gateway/refresh
15.4. 检索网关中定义的路由
要检索网关中定义的路由,请向 .
生成的响应类似于以下内容:GET
/actuator/gateway/routes
[{ "route_id": "first_route", "route_object": { "predicate": "org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory$$Lambda$432/1736826640@1e9d7e7d", "filters": [ "OrderedGatewayFilter{delegate=org.springframework.cloud.gateway.filter.factory.PreserveHostHeaderGatewayFilterFactory$$Lambda$436/674480275@6631ef72, order=0}" ] }, "order": 0 }, { "route_id": "second_route", "route_object": { "predicate": "org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory$$Lambda$432/1736826640@cd8d298", "filters": [] }, "order": 0 }]
响应包含网关中定义的所有路由的详细信息。 下表描述了响应的每个元素(每个元素都是一个路由)的结构:
路径 | 类型 | 描述 |
---|---|---|
|
字符串 |
路线 ID。 |
|
对象 |
路由谓词。 |
|
数组 |
应用于路由的 |
|
数 |
路线顺序。 |
15.5. 检索有关特定路由的信息
要检索有关单个路由的信息,请向 (例如,) 发出请求。
生成的响应类似于以下内容:GET
/actuator/gateway/routes/{id}
/actuator/gateway/routes/first_route
{ "id": "first_route", "predicates": [{ "name": "Path", "args": {"_genkey_0":"/first"} }], "filters": [], "uri": "https://www.uri-destination.org", "order": 0 }]
下表描述了响应的结构:
路径 | 类型 | 描述 |
---|---|---|
|
字符串 |
路线 ID。 |
|
数组 |
路由谓词的集合。每个项定义给定谓词的名称和参数。 |
|
数组 |
应用于路由的筛选条件集合。 |
|
字符串 |
路由的目标 URI。 |
|
数 |
路线顺序。 |
15.6. 创建和删除特定路由
要创建路由,请使用 JSON 正文发出请求,该 JSON 正文指定路由的字段(请参阅 检索有关特定路由的信息)。POST
/gateway/routes/{id_route_to_create}
要删除路由,请向 .DELETE
/gateway/routes/{id_route_to_delete}
15.7. 回顾:所有端点的列表
下表总结了 Spring Cloud Gateway 执行器端点(请注意,每个端点都作为基本路径):/actuator/gateway
身份证 | HTTP 方法 | 描述 |
---|---|---|
|
获取 |
显示应用于路由的全局筛选器列表。 |
|
获取 |
显示应用于特定路由的工厂列表。 |
|
发布 |
清除路由缓存。 |
|
获取 |
显示在网关中定义的路由列表。 |
|
获取 |
显示有关特定路由的信息。 |
|
发布 |
向网关添加新路由。 |
|
删除 |
从网关中删除现有路由。 |