控制台无法接入我本机springcloud gateway网关服务
pom.xml
org.springframework.boot spring-boot-starter-parent 2.2.5.RELEASE com.alibaba.csp sentinel-spring-cloud-gateway-adapter 1.7.0 com.alibaba.csp sentinel-transport-simple-http 1.7.0 com.alibaba fastjson 1.2.9
java配置
@Configuration public class GatewayConfiguration {
private final List<ViewResolver> viewResolvers;
private final ServerCodecConfigurer serverCodecConfigurer;
public GatewayConfiguration(ObjectProvider<List<ViewResolver>> viewResolversProvider,
ServerCodecConfigurer serverCodecConfigurer) {
this.viewResolvers = viewResolversProvider.getIfAvailable(Collections::emptyList);
this.serverCodecConfigurer = serverCodecConfigurer;
}
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public SentinelGatewayBlockExceptionHandler sentinelGatewayBlockExceptionHandler() {
// Register the block exception handler for Spring Cloud Gateway.
return new SentinelGatewayBlockExceptionHandler(viewResolvers, serverCodecConfigurer);
}
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public GlobalFilter sentinelGatewayFilter() {
return new SentinelGatewayFilter();
}
@PostConstruct
public void doInit() {
initCustomizedApis();
initGatewayRules();
}
private void initCustomizedApis() {
Set<ApiDefinition> definitions = new HashSet<>();
ApiDefinition api1 = new ApiDefinition("some_customized_api")
.setPredicateItems(new HashSet<ApiPredicateItem>() {{
// add(new ApiPathPredicateItem().setPattern("/ahas")); add(new ApiPathPredicateItem().setPattern("/service-decision-manage/") .setMatchStrategy(SentinelGatewayConstants.URL_MATCH_STRATEGY_PREFIX)); }}); ApiDefinition api2 = new ApiDefinition("another_customized_api") .setPredicateItems(new HashSet() {{ add(new ApiPathPredicateItem().setPattern("/") .setMatchStrategy(SentinelGatewayConstants.URL_MATCH_STRATEGY_PREFIX)); }}); definitions.add(api1); definitions.add(api2); GatewayApiDefinitionManager.loadApiDefinitions(definitions); }
private void initGatewayRules() {
Set<GatewayFlowRule> rules = new HashSet<>();
rules.add(new GatewayFlowRule("some_customized_api")
.setResourceMode(SentinelGatewayConstants.RESOURCE_MODE_CUSTOM_API_NAME)
.setCount(5)
.setIntervalSec(1)
.setParamItem(new GatewayParamFlowItem()
.setParseStrategy(SentinelGatewayConstants.PARAM_PARSE_STRATEGY_URL_PARAM)
.setFieldName("pnnnnn")
)
);
GatewayRuleManager.loadRules(rules);
}
}
启动参数
java -Dcsp.sentinel.api.port=7979 -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.7.1.jar
csp.sentinel.api.port 我感觉这个启动参数没用,因为当我启动之后,我在控制台只能看到本地7981的端口,这和你们官方文档上说的默认端口8719也是不一致的
macos catalina 10.15
原提问者GitHub用户sc2885112
因为-Dcsp.sentinel.api.port=7979命令行指定了这个参数项,表示应用端的Sentinel传输端口为7979,就不会使用默认端口8719了。 在控制台看到的是端口号是7981,估计是你指定的7979端口已被其它程序占用,如果端口被占用Sentinel会尝试端口号加1,直到找到一个可用的端口。
网关应用接入控制台,启动参数还需要增加:-Dcsp.sentinel.app.type=1,用于标识它为网关应用。
具体可以参考文档: https://github.com/alibaba/Sentinel/wiki/网关限流#网关流控控制台 https://github.com/alibaba/Sentinel/wiki/FAQ#q-sentinel-控制台没有显示我的应用或者没有监控展示如何排查
原回答者GitHub用户cdfive
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。