首页 >行情 > > 正文

环球信息:Spring Cloud Gateway监控配置示例

腾讯云 2023-04-15 10:07:17

下面是一个简单的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的官方文档。

上一篇: 下一篇:
x
推荐阅读

环球信息:Spring Cloud Gateway监控配置示例

2023-04-15

哪些是2023年乙肝治疗概念股?(4月15日)|当前焦点

2023-04-15

4月14日基金净值:国泰中证煤炭ETF最新净值2.1429,涨0.19%

2023-04-15

曼卡龙2022年营收16.1亿 净利5442.93万 董事长孙松鹤薪酬100.26万

2023-04-15

世界新动态:秦刚:中德是伙伴不是对手,要合作不要对抗

2023-04-15

精准“画像” 大数据普惠金融服务的“上海速度”

2023-04-14

微信上线重磅新功能?腾讯“惊动”工信部 内部已追责处罚 发生了什么?

2023-04-14

【热闻】央行:要精准有力实施稳健的货币政策,发挥货币政策工具总量和结构双重功能

2023-04-14

当前快播:《文字玩出花》三强摆摊找十二处奸商行为通关攻略

2023-04-14

2023-04-14 | 苹果 iOS 无内购限免应用2款推荐_实时

2023-04-14

全球快讯:心乱如麻

2023-04-14

河南兰考:加强数据共享 积极探索便民服务新渠道

2023-04-14

每日快讯!全国五一劳动奖名单公示,河南8家单位、43名个人拟获奖状奖章

2023-04-14

海通国际:给予索菲亚增持评级,目标价位24.82元|观察

2023-04-14

焦点速递!巢湖公办学校网上报名登记需要哪些材料?

2023-04-14

财政部:加强政府购买就业公共服务 探索创新经济高质量发展支持方式

2023-04-14

克而瑞:债务重组缓解房企短期流动性压力,销售回款为中长期复苏关键-当前头条

2023-04-14

中国空间站氧气资源100%再生 主要技术指标达世界领先水平

2023-04-14

消博会上看消费·跨境供需对接 交易合作活跃

2023-04-14

远景集团高级副总裁田庆军:储能“内卷”是伪命题

2023-04-14

环球热议:上海家化:4月13日融资买入3285.87万元,融资融券余额6.54亿元

2023-04-14

天天实时:贵阳市南明区玉田片区:老旧小区焕“新”生活

2023-04-14

改性沥青和普通沥青相比较有什么特点_改性沥青和普通沥青的区别

2023-04-13

新款丰田皇冠与雷克萨斯有一拼,三款车型将陆续上市 最新消息

2023-04-13

“商汤秒画”打造AI画图“模型超市” 心想画成

2023-04-13

药品调价合同范本(热门6篇) 世界播报

2023-04-13

物业丨小摩减持万物云24.2万股股份 套现约877万港元

2023-04-13

甘肃盛泰祥工贸有限责任公司二号习艺楼2楼 电力改造、蒸汽管网及压缩空气管网 改造项目中标公告

2023-04-13

协合新能源(00182.HK)4月13日收盘涨1.43%,主力资金净流入142万港元 精选

2023-04-13

精彩看点:自己也能制作盲盒玩具?快来动手试试吧!

2023-04-13

童话动作RPG《Ravenlok》将于5月4日发售|热门看点

2023-04-13

当前观察:绘画的基本功日常训练方法_绘画的基本功日常训练

2023-04-13

智力早开发_对于智力早开发简单介绍

2023-04-13

广告的各种材料都有哪几种类型-广告的各种材料都有哪几种_前沿热点

2023-04-13

三江购物2022年财报:净利增长73.95%,宁波盒马稳定盈利

2023-04-13

焦点关注:高压灭菌锅的使用方法及注意事项视频_高压灭菌锅的使用方法

2023-04-13

【世界报资讯】兰州市初中学校体艺类招生 只专业测评不进行学科类测试

2023-04-13

环球动态:教师资格证笔试成绩什么时候出_教师资格证笔试成绩多久出来

2023-04-13

量化指增“熄火” 机构认为小盘股行情未结束|视焦点讯

2023-04-13

巴菲特:可能会有更多银行倒闭 但储户安全无虞

2023-04-13

eeprom与flash的区别_eeprom

2023-04-13

全球观点:艾默生电气跌超1.5% 或以60美元/股收购美国国家仪器

2023-04-12

世界滚动:宁德时代将于上海车展发布新一代凝聚态电池 如何猜想?

2023-04-12

世界报道:北京君正今日大宗交易折价成交80万股,成交额8620万元

2023-04-12

“大咖”齐聚“中国环境谷” 赋能环境检测行业高质量发展-快看点

2023-04-12

最大赢家?今晚欧冠四队安切洛蒂均有过执教经历

2023-04-12

每日头条!“杀手”之后再当男一 魏翔新作《好像也没那么热血沸腾》杀青

2023-04-12

湖北:今年主汛期湖北区域性干旱、阶段性暴雨发生风险较大

2023-04-12

疯狂小杨哥商业版图盘点 环球速读

2023-04-12

动力更强,油耗更低!坦克300 PHEV来了 世界即时看

2023-04-12

手指发麻是什么原因引起的呢_手指发麻是什么原因引起的

2023-04-12

完美世界成立数字文化科技公司 含数字文创软件开发业务|天天视点

2023-04-12

一台双向“治愈”的手术

2023-04-12

成都二十六幼天鹅园与家委会共赴春之约 全球简讯

2023-04-12

天天通讯!高校围捕“鳄雀鳝”,能吃吗?老师现场“划重点”……

2023-04-12

全球时讯:国内首个!君实生物PD-1肺癌围手术期适应症申报上市

2023-04-12

宁波方正:截至2023年4月10日,公司股东人数为6162

2023-04-12

新股公告 | 北森控股(09669)公开发售获认购约16.57倍 每股发售价29.7港元

2023-04-12

政策不是橡皮泥——打造数字孪生是谋划县乡发展的现实契机(一百二十八)

2023-04-12

交安b证在哪报名_交安b证在哪里报名|焦点快报

2023-04-12

新乡冠军杯最新战报:女单16强产生,日本三将好日子到头了

2023-04-11

中老铁路昆明至万象票价一览

2023-04-11

世界资讯:荆州再揽3个百亿项目,绘出发展“上扬曲线”

2023-04-11

视焦点讯!《河,美好同行》广州市河长办推出“全民河长”舞台剧

2023-04-11

“你去祸害其他驾校吧”,女学员练车被扣2945分,刷新记录_世界即时看

2023-04-11

调整形式可能跟预期的有所差异

2023-04-11

环球快播:浙江水利水电学院年度审计工作联席会议召开

2023-04-11

简单的手工小礼物

2023-04-11

湖南发布2023年国民经济和社会发展计划 建成湘江永州至衡阳三级航道二期工程 当前消息

2023-04-11

每日热闻!强化产业链协作,中国汽车芯片创新联盟功率半导体分会成立

2023-04-11

出站留青率76%!一季度青岛博士后进站120人,全市累计招收博士后6941人

2023-04-11

2023年4月11日江苏省仲辛醇价格最新行情预测

2023-04-11

每日看点!开展骨干教师读书交流活动

2023-04-11

海信视像:聚焦家庭、商用、车载三大场景,重拾增长需冲出客厅

2023-04-11

空前绝后的意思解释_空前绝后的意思

2023-04-11

一篇文章教会你,如何优雅且合法地“裸辞”?

2023-04-11

北方将有大风降温及沙尘天气 新疆北部黑龙江等地有雨雪

2023-04-11

全球看热讯:央视11日直播新乡冠军赛,陈幸同首战木原美悠,马龙对林昀儒

2023-04-11

哪里的雪景最美丽_哪里的雪景最美

2023-04-11

客户管理系统192.168.0.1_路由器怎么设置密码不被别人蹭网-全球头条

2023-04-10

最资讯丨全球车身控制技术最高水平:比亚迪U9搭云辇X“跳舞”登台

2023-04-10

番禺国际创新城占地约90万㎡的城市级公园首期开放

2023-04-10

当日快讯:越媒:越南房地产市场流动性连续数月触底,行业失业率持续上升 即时

2023-04-10

沈阳周六福黄金多少钱一克(2023年4月10日)-世界视讯

2023-04-10

政策规划超预期!碳中和50ETF(159861)涨超1.8% 派能科技涨超12%

2023-04-10

文旅部:集中打击高频违法经营行为 坚决遏制“不合理低价游”苗头和市场乱象扩散势头|最新快讯

2023-04-10

世界快消息!春日添新绿 低碳向未来丨索尼碳汇林在京开展累计11年

2023-04-10

世界热点评!蛋饼的做法大全家常 蛋饼的做法

2023-04-10

2023浙江绍兴市水利水电勘测设计院有限公司第三批招聘公告

2023-04-10

环球信息:取消教工食堂!9月1日起,浙江宁波中小学实行师生同餐

2023-04-10

乘坐公交地铁遗失物品怎么办?这份指南请收好 焦点热讯

2023-04-10

实时:山东:引领海上风电“平价时代”

2023-04-10

旅游市场火爆!长三角地区“五一”民宿预订量暴涨

2023-04-10

如何将钉枪连接到空气压缩机_生日礼物送蛋糕好吗

2023-04-10

世界今亮点!香港游记作文夜景_香港游记作文

2023-04-10

孕妇晚餐吃什么比较健康营养_孕妇晚餐吃什么最好|世界新动态

2023-04-10

剧透!2023年消博会观展说明书来了!

2023-04-09

今日热搜:组图|海口进入消博时间 城市氛围感拉满

2023-04-09

朱旭航:蒋导为中国篮球的发展鞠躬尽瘁 创造了无数的高光和辉煌|全球新资讯

2023-04-09

如何网上购买火车票报销凭证(如何网上购买火车票) 天天亮点

2023-04-09