未指定获取目标主机
Posted
技术标签:
【中文标题】未指定获取目标主机【英文标题】:Getting Target host is not specified 【发布时间】:2020-10-14 09:59:46 【问题描述】:我正在通过 Grafana 调用 prometheus 服务器,我可以使用邮递员发出以下请求,但是当我尝试使用相同的 uri 并且 java 代码低于异常时
原因:org.apache.http.ProtocolException:未指定目标主机 在 org.apache.http.impl.conn.DefaultRoutePlanner.determineRoute(DefaultRoutePlanner.java:71) 在 org.apache.http.impl.client.InternalHttpClient.determineRoute(InternalHttpClient.java:125) 在 org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) ...省略了31个常用框架
我的代码如下。
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
String PM_UI_SERVER_URI = "http://" + PM_SERVER_HOST + ":" + getPMUiServerPort();
String uriStr= PM_UI_SERVER_URI + PM_SERVER_BASE_URI + queryString +"&start="+String.valueOf(startTime)+"&end="+String.valueOf(endTime)+"&step=150";
//logger.info("Execute Query uri string: "+uriStr);
String str="http://10.61.244.58:31000/api/datasources/proxy/1/api/v1/query_range?query=em_core_used_heap_mem_mbjob=\"eric-em-om-server\"&start=1592981880&end=1592982180&step=15";
String encodedurl = URLEncoder.encode(str,"UTF-8");
//URI uri = new URI(encodedurl);
//HttpGet httpget = new HttpGet("http://10.61.244.58:31000/api/datasources/1");
HttpGet httpget = new HttpGet(encodedurl);
httpget.addHeader("Authorization", token);
httpget.addHeader("Content-Type", "application/json");
CloseableHttpResponse response = httpClient.execute(httpget);
有人可以帮忙吗,因为我被困在这里了。
【问题讨论】:
logger.info("Execute Query uri string: "+uriStr);
的输出是什么(注释掉的行)。假设它是正确的,你能从运行这段代码的框中ping
host
吗?
是的@RobEvans,我可以ping通。
如果您可以ping 主机,则问题出在url,而不是与主机通信的问题。测试telnet 10.61.244.58 31000
是否有效?
【参考方案1】:
尝试逐步构建 URL,而不是直接构建完整的 URL。您可以使用 intelliJ IDE 中的表达式生成器在调试会话中执行此操作。
-
在
... = httpClient.execute(httpget);
行设置断点并通过测试/在调试模式下运行应用程序来执行此代码。
高亮httpClient.execute(httpget)
右键单击此选项并单击“表达式生成器”或使用Alt
+F8
现在尝试对http://10.61.244.58:31000/
执行GET (HttpGet
) 请求
确保您获得 200 响应状态或等效状态。
接下来您应该可以添加下一位,例如http://10.61.244.58:31000/api/datasources/proxy/1/api/v1/query_range
(请注意,我也尝试不使用proxy
,因为URL 可能有问题,因为您的请求正在根据此处的文档进行代理:https://grafana.com/docs/grafana/latest/http_api/data_source/#data-source-proxy-calls
我会尝试单独添加查询参数并合并。这不一定能解决您的问题...但如果您可以同时跟踪 grafana 服务器/代理服务器上的任何日志,您可能会获得一些有助于引导您进行调查的更详细信息。
【讨论】:
以上是关于未指定获取目标主机的主要内容,如果未能解决你的问题,请参考以下文章
错误:无效参数:在 URI 文件中未指定主机:///null