当前位置: 首页 > 知识库问答 >
问题:

Spring开机微表datadog插座连接错误

濮阳旭东
2023-03-14

我正在为我的spring boot 2 rest api创建一些自定义指标。我已经添加了所需的微米和数据狗依赖项。我的办公室机器在代理后面工作。我必须通过spring boot插件设置代理。

-Dhttp.proxyHost=xxxx.proxy.com
-Dhttp.proxyPort=xxxx

以下是我的申请。属性文件。management.metrics.export.datadog.apiKey=mykey

management.metrics.export.datadog.uri=https://app.datadoghq.com

management.metrics.export.datadog.enabled=true

management.metrics.export.datadog.step=10s

但是我得到了套接字连接超时。

   [datadog-metrics-publisher] 10 Apr 2020 16:51:39,552 WARN  DatadogMeterRegistry [{}]: java.net.SocketTimeoutException: connect timed out
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:606)
    at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:666)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
    at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264)
    at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1340)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1315)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:264)
    at io.micrometer.core.ipc.http.HttpUrlConnectionSender.send(HttpUrlConnectionSender.java:96)
    at io.micrometer.core.ipc.http.HttpSender$Request$Builder.send(HttpSender.java:284)
    at io.micrometer.datadog.DatadogMeterRegistry.publish(DatadogMeterRegistry.java:141)
    at io.micrometer.core.instrument.push.PushMeterRegistry.publishSafely(PushMeterRegistry.java:48)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)

就我调试io.micrometer.core.ipc.http.HttpUrlConnectionSender.send方法失败,我不知道微米数据狗如何获取代理详细信息。

千分尺医生说

management.metrics.export.datadog.uri=https://app.datadoghq.com # URI to ship metrics to. If you need to publish metrics to an internal proxy en-route to Datadog, you can define the location of the proxy with this.

但我不明白这是什么意思?我应该用我的代理URL替换这个URL,还是代理有任何特定的uri模式?我使用的是Spring启动 2.2.4.版本

共有1个答案

别俊誉
2023-03-14

如果您尝试连接到数据狗的 HTTPS 网址(在您的示例中 https://app.datadoghq.com),则需要设置 https.proxyHost 系统属性才能使其生效 - http.proxyHost 适用于 HTTP 网址[1]。这些是系统范围的设置,如果未将代理传递给其构造函数则默认服务器(代理)将使用这些设置。

千分尺医生说

management.metrics.export.datadog.uri=https://app.datadoghq.com # URI to ship metrics to. If you need to publish metrics to an internal proxy en-route to Datadog, you can define the location of the proxy with this.

但我不明白这是什么意思?我应该用我的代理url替换这个url,还是代理有任何特定的uri模式

这是指一种不同类型的代理,您将配置该代理以在内部网络上接收 Datadog 流量,并将其转发到网络外部的 Datadog。如果您使用的是 HTTP 代理,则应使用系统属性或配置了 HTTP 代理的 Http 服务器(例如,一个 HttpUrl 连接信号转换器并将代理传递给其构造函数)。

您可以使用< code >生成器配置带有< code > datadogmertregistry 的自定义< code>HttpSender。如果您将它作为< code>@Configuration类中的< code>Bean公开,Spring Boot将在其自动配置中使用它。例如:

@Bean
public DatadogMeterRegistry datadogMeterRegistry(DatadogConfig config, Clock clock) {
    HttpSender httpSender = new HttpUrlConnectionSender(config.connectTimeout(), config.readTimeout(), new Proxy(Proxy.Type.HTTP, new InetSocketAddress("myproxy", 8080)));
    return DatadogMeterRegistry.builder(config).clock(clock).httpClient(httpSender).build();
}

[1] https://docs.oracle.com/javase/8/docs/technotes/guides/net/proxies.html

 类似资料:
  • 问题内容: Java 类有两种方法,分别检查套接字是关闭还是连接。我想知道仅开放的TCP套接字与开放和连接的TCP套接字有什么区别,这与UDP有何不同。 问题答案: 为了把事情简单地说,这是 开放的 是要么等待连接或已与另一个成功连接的插座。当一个套接字被 关闭 ,这意味着这个套接字没有连接不再可用,而且它的资源已被释放。一个已连接的好,这意味着该套接字已连接到另一个。 这样可以 同时打开并连接。

  • 我试图创建群聊android应用程序和使用Websocket服务器编写的PHP。这个服务器在Web浏览器上工作得很好,但当我试图在android应用程序中使用它时,应用程序一连接就断开了。 这里是Android代码:

  • 背景我正试图为我的java服务器创建一个android客户端应用程序,并让它们使用TCP套接字进行通信。 当我在android设备模拟器上运行我的应用程序时,它的工作原理是什么 当我在手机上运行该应用程序时,我无法正常工作,我在创建套接字时遇到连接超时。 异常 java.net.Connect异常: 无法连接到 /10.0.2.2 (端口 9111): 连接失败: ETIMEDOUT (连接超时)

  • 我目前正在编写一个简单的TCP聊天客户端服务器应用程序,它与套接字一起工作。客户端连接到服务器,一旦被接受,就会创建一个新的工作线程来侦听客户端输入。连接到服务器(端口8818处的localhost)工作正常,但只要工作线程在登录java.net之后开始监听更多客户端输入。SocketException:引发连接重置(请参阅下面的堆栈跟踪)。我知道,此异常的一个可能来源可能是服务器或客户端未正确或

  • 问题内容: 我正在使用Java套接字客户端。如果服务器仍连接到我的客户端,但是它不发送对我的消息的响应,则最终会出现读取超时异常。 在那种情况下,我想测试一下是否应该重新连接我的插座,或者只是保持插座可重复使用。 我使用这种情况: 但我似乎总是重新连接。当我记录布尔属性的值时,我看到以下内容: 已连接:true已关闭:true绑定:true 如何连接和关闭? TIA 问题答案: 该主题对此主题进行

  • 我在我的电脑上开发了一个带有python的HIDServer(蓝牙键盘)。有2个服务器套接字(psm 0x11和0x13)正在侦听连接。当我尝试将IPhone连接到计算机时,我收到了一个传入连接(如hcidump中所示),但不知何故,连接被远程主机终止。我的套接字永远无法接受客户端连接。你能帮帮我吗? hciDumps: 启动我的程序后: HCI事件:命令完成(0x0e)plen 4写入扩展查询响