【问题标题】:How to specify the statsd client port?如何指定 statsd 客户端端口?
【发布时间】:2019-06-13 05:10:30
【问题描述】:

我在 pcf 环境中部署了一个 java spring boot 应用程序。我使用 statsd 客户端库将指标发送到 statsd 服务器。所以问题是如何在 statsd 客户端中指定主机和端口,以便它可以发送指标。

        public StatsDClient statsDClient(
        @Value("${metrics.statsd.host:localhost}") String host,
        @Value("${metrics.statsd.port:8125}") int port,
        @Value("${metrics.prefix:example.app}") String prefix
) {
    return new NonBlockingStatsDClient(prefix, host, port);
}

我必须为 PCF 部署的应用程序指定主机和端口,怎么做?

【问题讨论】:

  • 我不太清楚你的意思。您应该能够在application.properties 或application.yml 中设置这些属性,具体取决于您使用的是哪一个。您需要设置metrics.statsd.host=<blah> 和metrics.statsd.port=<blah>。这就是你想要做的吗?
  • 嘿,我想在PCF(Pivotal Cloud Foundry)上做,因为PCF不提供特定的IP和端口。那我该怎么做呢?
  • 我对 statsd 一无所知,但如果它不是基于 HTTP 的并且您需要在 PCF 上运行服务器,那么您需要使用 TCP 路由或者您需要通过容器来执行容器网络。如果您需要接受与服务器的外部连接,TCP 路由将是,如果您只接受在 PCF 上运行的应用程序之间的连接,容器到容器将起作用。希望有帮助!
  • 您好,谢谢您的回复,因为 Statsd Client 使用 UDP 数据包向我的 statsd 服务器发送数据,我应该使用什么?容器到容器的方法会起作用吗?

标签: java spring-boot cloud-foundry statsd pcf


【解决方案1】:

如果我理解正确,您有两个应用程序在 PCF 中运行。

  1. 一个 Spring Boot 应用程序 - 您正在调用某个客户端应用程序。
  2. 其次是你的statsd服务器

您需要在这两者之间建立通信。

正如丹尼尔在评论中提到的,你有两种方法可以做到这一点。

  1. HTTP/TCP
  2. Internal Route

选项 1 的问题是您可能无法将它与主机和端口分开使用,因为 PCF 在内部这样做。

我建议使用第二个选项 - 内部路由,它为您提供需要在客户端应用程序中配置的清晰主机名和端口。 以下是配置容器到容器网络的步骤

  1. 为您的服务器应用添加新路由 - 即app1.apps.internal
  2. 使用客户端和服务器应用程序创建网络策略 - link
  3. 在配置服务器或代码库中定义属性,无论您用于属性外部化的任何进程 - 您的最终 URL 如下所示:app1.apps.internal:8080

【讨论】:

  • 非常感谢,这成功了。我几乎浪费了一周的时间。但终于成功了。
猜你喜欢
  • 2012-04-21
  • 2011-01-04
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-13
  • 2019-04-15
  • 1970-01-01
相关资源
最近更新 更多