這幾天學習spring cloud,配置Hystrix Dashboard的時候出現(xiàn)了Unable to connect to Command Metric Stream.
問題。
說明一下環(huán)境架構羽氮。Eureka server和Eureka Server Provider若干,Server Consumer里引入了Ribbon和Hystrix用以調(diào)用Server Provider的服務端铛。那么再啟用一個Hystrix Dashboard服務练般,我這里把端口號設置為9002,它就可以用來監(jiān)控Server Consumer服爷。
假設Server Consumer的地址是http://localhost:9000/杜恰,那么Hystrix Dashboard里填入的監(jiān)控地址就應該是http://localhost:9000/actuator/hystrix.stream。
首先測試一下http://localhost:9000/actuator/hystrix.stream仍源。如果沒有出現(xiàn)一連串的ping心褐,那要么Server Consumer少引入actuator包了,要么忘加注解了笼踩。網(wǎng)上能搜到改正答案逗爹,這里不細說。
出現(xiàn)一連串的ping嚎于,加之訪問一個@HystrixCommand標注的方法掘而,會出現(xiàn)一大串data挟冠。到這一步,Server Consumer已經(jīng)沒有問題了袍睡。
接下來知染,在Hystrix Dashboard面板中填入上述地址,我出現(xiàn)了Unable to connect to Command Metric Stream.
斑胜。
看看log:
ashboardConfiguration$ProxyStreamServlet : Origin parameter: http://localhost:9000/actuator/hystrix.stream is not in the allowed list of proxy host names. If it should be allowed add it to hystrix.dashboard.proxyStreamAllowList.
上網(wǎng)搜了一圈說的都是404問題持舆,和我的情況不符。其實log說的已經(jīng)很明白了伪窖,要把監(jiān)控地址加入proxyStreamAllowList。
proxyStreamAllowList這個屬性在【HystrixDashboardProperties.java】中居兆,而在【HystrixDashboardConfiguration.java】的ProxyStreamServlet#doGet中會用到它覆山,也就是log報錯的地方。
if (!isAllowedToProxy(proxyUrlString)) {
log.warn("Origin parameter: " + origin
+ " is not in the allowed list of proxy host names. If it "
+ "should be allowed add it to hystrix.dashboard.proxyStreamAllowList.");
return;
}
關鍵就在isAllowedToProxy泥栖,發(fā)現(xiàn)它會取出proxyStreamAllowList元素和host匹配簇宽。如果我們沒有設置proxyStreamAllowList,那么proxyStreamAllowList為空吧享,就會出現(xiàn)標題上的問題魏割。
最后,我在META-INF下的設置文件里找到了答案钢颂。原來proxyStreamAllowList這個東西是個配置項钞它。
接下來就很簡單了,HystrixDashboard工程加入配置殊鞭。
hystrix:
dashboard:
proxy-stream-allow-list: "localhost"
久違的面板它出來了遭垛。