……

springcloud配置仪表盘时,出现proxyStreamAllowList报错导致Unable to connect to Command Metric Stream的问题

今早在学习spring cloud的仪表盘配置时,出现了以下的问题:

先说下我配置的过程:

搭建一个 Hystrix Dashboard 服务的步骤:

第一步:创建一个普通的 Spring Boot 工程

比如创建一个名为 springcloud-dashboard 的 Spring Boot 工程,建立好基本的结构和配置;

第二步:添加相关依赖

在创建好的 Spring Boot 项目的 pom.xml 文件中添加相关依赖,如下:

 1 <!-- spring-cloud-starter-netflix-hystrix-dashboard -->
 2 
 3 <dependency>
 4 
 5     <groupId>org.springframework.cloud</groupId>
 6 
 7     <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
 9 
10 </dependency>

第三步:入口类上添加注解

添加好依赖之后,在入口类上添加@EnableHystrixDashboard 注解开启仪表盘功能,如下:

 1 @SpringBootApplication
 2 
 3 @EnableHystrixDashboard
 4 
 5 public class Application {
 6 
 7   public static void main(String[] args) {
 8 
 9     SpringApplication.run(Application.class, args);
10 
11   }
12 
13 }

 

第四步:属性配置

最后,根据个人习惯配置一下 application.properties 文件,如下(端口号随意起,你喜欢就好):

1 server.port=3761

至此,我们的 Hystrix 监控环境就搭建好了;

运行该项目,在浏览器输入:http://localhost:3761/hystrix 访问,如下图所示:

 

在消费者模块中:

第一步:添加依赖

1 <!-- spring-cloud-starter-netflix-hystrix -->
2 
3 <dependency>
4 
5     <groupId>org.springframework.cloud</groupId>
6 
7     <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
8 
9 </dependency>
1 <dependency>
2 
3 <groupId>org.springframework.boot</groupId>
4 
5 <artifactId>spring-boot-starter-actuator</artifactId>
6 
7 </dependency> 

第二步:在消费者模块中配置一下暴露服务端点,如果不配置,仪表盘连接不上的:

management.endpoints.web.exposure.include=

这个是用来暴露 endpoints 的,由于 endpoints 中会包含很多敏感信息,除了 health 和 info 两个支持直接访问外,其他的默认不能直接访问,上面的配置是让所有的端口都能访问

以下的配置只允许访问指定的端口即可,如下:

management.endpoints.web.exposure.include=hystrix.stream

这里我采用的是只允许访问指定的端口

第三步:访问入口 http://localhost:8080/actuator/hystrix.stream(我这里消费者的端口号是8080)

注意:这里有一个细节需要注意,要访问/hystrix.stream 接口,首先得访问消费者工程中的任意一个其他接口,否则直接访问/hystrix.stream 接口时会输出出一连串的 ping: ping: …,先访问 consumer 中的任意一个其他接口,然后再访问/hystrix.stream 接口即可;

---------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------

配置到这里就完成了,但在测试的时候还是出现了开头的问题,仪表盘还是连接不上,并且仪表盘模块出现了以下的报错:Origin parameter: http://localhost:8080/actuator/hystrix.stream is not in the allowed list of proxy host names.  If it should be allowed add it to hystrix.dashboard.proxyStreamAllowList.

 其实呢,提示错误提示信息已经提升得很明显了,说 http://localhost:8080/actuator/hystrix.stream这个地址中的localhost不存在于proxyStreamAllowList这个数组当中,应该将localhost添加到这个数组当中去

因此,在上面的步骤之外,还需要在仪表盘模块的配置文件(properties)中添加:hystrix.dashboard.proxyStreamAllowList=localhost 才可以

yml配置文件是:

1 hystrix:
3   dashboard:
5     proxyStreamAllowList: "localhost"

需要注意的是,不同版本的配置的信息可能有所差异,我这里使用的spring cloud版本是H版的最新版是这个配置,但这个配置项不是绝对的,例如之前的版本的配置是:

1 hystrix:
2   dashboard:
3     proxy-stream-allow-list: "localhost"

所以在配置的时候,要根据报错信息的具体提示进行配置。

 

接着重启仪表盘模块,就这样,仪表盘出来了:

 参考地址:https://www.jianshu.com/p/0a682e4781b0

 

posted on 2021-02-20 13:32  钱不够用阿  阅读(1502)  评论(0编辑  收藏  举报