未指定获取目标主机

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); 的输出是什么(注释掉的行)。假设它是正确的,你能从运行这段代码的框中pinghost 吗? 是的@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 服务器/代理服务器上的任何日志,您可能会获得一些有助于引导您进行调查的更详细信息。

【讨论】:

以上是关于未指定获取目标主机的主要内容,如果未能解决你的问题,请参考以下文章

ansible-playbook未找到命令怎么解决

错误:无效参数:在 URI 文件中未指定主机:///null

无效参数:在 URI 文件中未指定主机:///null

未指定 CLion 目标 - 无目标

将 laravel 应用程序部署到共享主机并得到“未指定应用程序加密密钥”。错误

MinGW make 显示“未指定目标且未找到 makefile”错误