当前位置: 首页>资讯 >

Spring Cloud Gateway监控配置示例_环球快资讯

来源: 腾讯云 | 时间: 2023-04-12 04:58:29 |

下面是一个简单的Spring Cloud Gateway应用,包括路由配置、过滤器、监控等功能。该应用将请求转发到http://httpbin.org目标地址,并添加了Hystrix和RateLimiter过滤器,使用Prometheus和Grafana进行监控。


(相关资料图)

@SpringBootApplicationpublic class GatewayApplication {    public static void main(String[] args) {        SpringApplication.run(GatewayApplication.class, args);    }    @Bean    public RouteLocator routeLocator(RouteLocatorBuilder builder) {        return builder.routes()                .route(r -> r.path("/get")                        .filters(f -> f.hystrix(config -> config.setName("hystrixFilter")))                        .uri("http://httpbin.org"))                .route(r -> r.path("/delay/**")                        .filters(f -> f.requestRateLimiter(config -> config.setKeyResolver(new RemoteAddrKeyResolver()))                                .hystrix(config -> config.setName("hystrixFilter")))                        .uri("http://httpbin.org"))                .build();    }}

在上面的代码中,使用@Bean注解定义了一个RouteLocator类型的bean,用于配置路由信息。使用RouteLocatorBuilder的routes()方法来定义路由规则,使用path()方法定义匹配规则,使用filters()方法添加过滤器,使用uri()方法定义目标地址。

在上面的代码中,第一个路由规则将请求路径为/get的请求转发到http://httpbin.org目标地址,并添加了名为"hystrixFilter"的Hystrix过滤器。第二个路由规则将请求路径为/delay/**的请求转发到http://httpbin.org目标地址,并添加了名为"hystrixFilter"和"rateLimiterFilter"的Hystrix和RateLimiter过滤器,其中RateLimiter过滤器使用RemoteAddrKeyResolver作为KeyResolver,用于限制相同IP地址的请求频率。

下面是Hystrix和RateLimiter过滤器的配置:

@Configurationpublic class FilterConfig {    @Bean    public HystrixGatewayFilterFactory hystrixGatewayFilterFactory() {        return new HystrixGatewayFilterFactory();    }    @Bean    public RequestRateLimiterGatewayFilterFactory rateLimiterGatewayFilterFactory() {        return new RequestRateLimiterGatewayFilterFactory();    }}

在上面的代码中,使用@Configuration注解定义了一个配置类,用于配置Hystrix和RateLimiter过滤器。使用@Bean注解定义了hystrixGatewayFilterFactory()和rateLimiterGatewayFilterFactory()方法,分别返回HystrixGatewayFilterFactory和RequestRateLimiterGatewayFilterFactory类型的bean,用于创建Hystrix和RateLimiter过滤器。

下面是Prometheus和Grafana的监控配置:

@Configurationpublic class MonitoringConfig {    @Bean    MeterRegistryCustomizer commonTags() {        return registry -> registry.config()                .commonTags("application", "gateway");    }    @Bean    PrometheusMeterRegistry prometheusMeterRegistry() {        return new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);    }    @Bean    public MeterFilter renameStatusCodeTag() {        return MeterFilter.renameTag("status", "http_status");    }    @Bean    public MeterFilter renameUriTag() {        return MeterFilter.renameTag("uri", "request_uri");    }    @Bean    public GatewayMetrics gatewayMetrics(RouteLocator routeLocator,                                         PrometheusMeterRegistry meterRegistry) {        return new GatewayMetrics(routeLocator, meterRegistry, Arrays.asList(                new DefaultRouteIdProvider(),                new StaticRouteIdProvider("get_route", "/get"),                new StaticRouteIdProvider("delay_route", "/delay/**")        ));    }}

在上面的代码中,使用@Configuration注解定义了一个配置类,用于配置Prometheus和Grafana的监控。使用@Bean注解定义了commonTags()方法,用于设置公共标签,application为gateway。使用@Bean注解定义了prometheusMeterRegistry()方法,返回PrometheusMeterRegistry类型的bean,用于创建PrometheusMeterRegistry实例。使用@Bean注解定义了renameStatusCodeTag()和renameUriTag()方法,分别返回MeterFilter类型的bean,用于重命名标签。使用@Bean注解定义了gatewayMetrics()方法,返回GatewayMetrics类型的bean,用于创建GatewayMetrics实例,并设置路由规则和MeterRegistry。

下面是GatewayMetrics的代码:

public class GatewayMetrics extends RouteMatchingMeterFilter {    public GatewayMetrics(RouteLocator routeLocator, MeterRegistry meterRegistry,                          List routeIdProviders) {        super(routeLocator, "gateway.requests", meterRegistry, routeIdProviders);    }    @Override    protected Iterable tags(Route route, URI uri) {        return Tags.of(super.tags(route, uri),                Tag.of("method", "unknown"),                Tag.of("status", "unknown"),                Tag.of("request_uri", uri.getPath()));    }    @Override    protected Iterable extraTags(HttpServletRequest request) {        return Tags.of("method", request.getMethod());    }    @Override    protected String tagValue(HttpServletRequest request, String key) {        if (key.equals("status")) {            Object status = request.getAttribute(ServerWebExchangeUtils.STATUS_CODE_ATTRIBUTE);            if (status != null) {                return status.toString();            }        }        return super.tagValue(request, key);    }}

在上面的代码中,使用GatewayMetrics继承了RouteMatchingMeterFilter类,用于创建路由规则和MeterRegistry之间的映射关系。在tags()方法中,添加了method、status和request_uri标签。在extraTags()方法中,添加了method标签。在tagValue()方法中,根据ServerWebExchangeUtils.STATUS_CODE_ATTRIBUTE获取status标签的值。

最后,使用Prometheus和Grafana进行监控时,需要添加以下依赖:

    io.micrometer    micrometer-core    io.micrometer    micrometer-registry-prometheus

在使用Prometheus和Grafana进行监控之前,需要启动Prometheus服务器,并将Spring Cloud Gateway的监控数据暴露给Prometheus服务器。可以在application.yml文件中添加以下配置:

management:  endpoints:    web:      exposure:        include: prometheus  endpoint:    prometheus:      enabled: true

这里,使用management.endpoints.web.exposure.include属性设置将/prometheus端点暴露给外部访问,使用management.endpoint.prometheus.enabled属性设置Prometheus监控启用。当应用程序启动时,Prometheus服务器将开始收集和显示应用程序的监控数据。可以使用Grafana可视化监控数据,例如显示请求响应时间、请求数量等。具体的操作可以参考Grafana的官方文档。

关键词:

 

热文推荐

Spring Cloud Gateway监控配置示例_环球快资讯

下面是一个简单的SpringCloudGateway应用,包括路由配置、过滤器、监控等功能。该应用将请求转发到http: httpbin org目标地址,

2023-04-12

西北地区交流最高电压等级设备投运跨入“分秒”时代-全球实时

西北地区交流最高电压等级设备投运跨入“分秒”时代---4月6日20时18分,甘肃电网新增750千伏熙州变电站750千伏熙东Ⅰ线、熙官Ⅰ线两条超高压线

2023-04-11

手机海贼王卡牌放置手游推荐 卡牌战斗一触即发

手机海贼王卡牌放置手游是很多的玩家很喜欢的游戏的类型之一,在手机海贼王卡牌放置手游中玩家可以体会到不同的乐趣,下面小编就来介绍几款好

2023-04-11

房屋征收是按建筑面积还是使用面积

一、房屋征收是按建筑面积还是使用面积1、拆迁补偿是按建筑面积计算的。房屋建成以后相关部门会进行验收的,通过验收才能办理房屋产权证书。而

2023-04-11

泛海控股:证监会已接收民生证券变更主要股东或实际控制人材料

经查询中国证券监督管理委员会官方网站获悉,中国证监会已于2023年4月10日接收关于民生证券的《证券公司变更主要股东或者公司的实际控制人核准

2023-04-11

【天天聚看点】中老铁路老挝段第一张国际旅客列车车票诞生

4月11日,在老挝万象站售票厅,中老铁路老挝段第一张国际旅客列车车票诞生了,是由一位不愿透露姓名女士所购买,她表示,很幸

2023-04-11

新疆社会工作者考试报名时间2023

(一)报名时间。报考人员统一在全国专业技术人员资格考试报名服务平台(zg cpta com cn以下简称报名平台)报名,报名时间为2023年4月12日10:30

2023-04-11

环球关注:「中国有约」穿越时空,跨越海峡:海口,在21世纪海上丝绸之路上继续绽放

中国日报网海口4月11日电(记者曹静)在海南海口骑楼老街的中山路上,有一座天后宫,为纪念海上保护神“妈祖”而建,距今已有

2023-04-11

时政微视频丨瞰广东

9万亿元 连续34年居全国首位 改革开放是广东最鲜明特征 高质量发展是广东最光明前途 统筹推进 粤港澳大湾区深圳先行示范区 横琴前海南沙三大平

2023-04-11

加强法治建设 市场监管总局部署2023年度重点立法任务

加强法治建设市场监管总局部署2023年度重点立法任务---人民网北京4月11日电(记者杨曦)据市场监管总局消息,为大力推进基础制度的创新供给,

2023-04-11

欧莱雅京东自营旗舰店和欧莱雅官方旗舰店_欧莱雅官方旗舰店|每日热讯

1、是的。2、欧莱雅的不同系列适合不同年龄阶段,例如18-25适合清润系列,25-30适合雪颜美白系列,35-45岁适合

2023-04-11

语人("不以语人"中语的意思是什么?)

本文目录一览:1、语人曰的语是什么意思,人语之曰语是什么意思2、 "不以语人 "中 "语的 "意思 3、 "不

2023-04-11

全球速讯:市场监管总局:2022年抽查469批次家具 不合格率为20%

中新网4月11日电据国家市场监督管理总局网站消息,国家市场监管总局10日发布2022年家具产品质量国家监督抽查情况通报。2022年,市场监管总局组

2023-04-11

环球热文:泗阳县气象台发布霾黄色预警【Ⅲ级/较重】

据国家突发事件预警信息发布网:泗阳县气象台2023年04月11日09时56分发布霾黄色预警信号:受北方沙尘传输影响,预计未来24小时我县所有乡镇(

2023-04-11

【世界独家】2025年深圳全城 实现自来水可直饮

南方日报讯(记者 黄思华)4月10日,记者从深圳市水务局获悉,预计2023年,深圳市将全面完成居民小区优质饮用水入户工程、社区供水管网改造工程

2023-04-11

数码视讯4月11日快速上涨

以下是数码视讯在北京时间4月11日09:50分盘口异动快照:4月11日,数码视讯盘中快速上涨,5分钟内涨幅超过2%,截至9点50分,报6 76元,成交7995

2023-04-11

时讯:“无人店铺”凸显商业文明进步

“无人店铺”凸显商业文明进步---最近,“无人店铺”在四川成都街头的“出镜率”越来越高。有的店铺日销售额破千元,有的商家一人经营多家店铺

2023-04-11

兰剑智能(688557)4月10日主力资金净卖出275.15万元 当前热点

截至2023年4月10日收盘,兰剑智能(688557)报收于35 99元,上涨2 8%,换手率2 72%,成交量1 2万手,成交额4350 31万元。

2023-04-11

智通全球财经日志|4月11日

全球财经日志|2023年4月11日

2023-04-11

ASA绑定的支付宝账号如何解绑?App支持在MAC端投放ASA吗?

大家最近在投放ASA过程中都遇到了哪些问题呢?AppSA整理了一些近期大家在AppleAds投放过程中经常遇到的问题并附上了答案,希望能帮助各位小伙

2023-04-11

资讯

Spring Cloud Gateway监控配置示例_环球快资讯

下面是一个简单的SpringCloudGateway应用,包括路由配置、过滤器、监控等功能。该应用将请求转发到http: httpbin org目标地址,

2023-04-12     
西北地区交流最高电压等级设备投运跨入“分秒”时代-全球实时

西北地区交流最高电压等级设备投运跨入“分秒”时代---4月6日20时18分,甘肃电网新增750千伏熙州变电站750千伏熙东Ⅰ线、熙官Ⅰ线两条超高压线

2023-04-11     
手机海贼王卡牌放置手游推荐 卡牌战斗一触即发

手机海贼王卡牌放置手游是很多的玩家很喜欢的游戏的类型之一,在手机海贼王卡牌放置手游中玩家可以体会到不同的乐趣,下面小编就来介绍几款好

2023-04-11     
房屋征收是按建筑面积还是使用面积

一、房屋征收是按建筑面积还是使用面积1、拆迁补偿是按建筑面积计算的。房屋建成以后相关部门会进行验收的,通过验收才能办理房屋产权证书。而

2023-04-11     
泛海控股:证监会已接收民生证券变更主要股东或实际控制人材料

经查询中国证券监督管理委员会官方网站获悉,中国证监会已于2023年4月10日接收关于民生证券的《证券公司变更主要股东或者公司的实际控制人核准

2023-04-11     
【天天聚看点】中老铁路老挝段第一张国际旅客列车车票诞生

4月11日,在老挝万象站售票厅,中老铁路老挝段第一张国际旅客列车车票诞生了,是由一位不愿透露姓名女士所购买,她表示,很幸

2023-04-11