1

是否每个 Web 服务器都有一个正在运行的 statsd 实例,然后您将它们推送到诸如 collectrd 之类的东西?

我知道指标调用是 udp,所以它们很轻,但这意味着您可能每页对 statsd 进行 3-5 次调用,我想知道这是否会在某些时候引起问题?

或者 udp 速度如此之快,以至于您每秒可以进行数千次调用,这不会成为问题,因为它是一种即发即忘的请求类型。

4

3 回答 3

2

为了稳健起见,我实际上建议每个节点有 1 个 statsd 实例。它足够轻量级,当它只获得一个实例的指标时并不重要。

如果您集中 statsd 并且该进程/框死了,那么您将完全失明,直到您站起来另一个进程/框。不是最好的情况。

于 2013-10-24T00:31:23.997 回答
1

一般来说,我建议从单个实例开始,因为管理和设置的开销更少。如果您在每个网络服务器上运行 StatsD 实例,则必须确保将主机名与您的指标一起发送,以免覆盖 Graphite 端的任何内容。而且你还必须在 Graphite/Dashboard 方面做更多的工作来理解你的指标。在并非所有主机都发送到单个 StatsD 实例的设置中,您必须对所有主机求和以获取所有登录计数器,页面加载时间由主机决定,您需要做更多工作才能获得整体情况。这一切并没有使开始变得不可能,而是变得更加复杂。这就是为什么我认为从单个实例开始会更容易,如果你不确定你很快就会超过单个盒子可以为你带来的性能。

于 2013-10-24T22:02:17.557 回答
0

是否每个 Web 服务器都有一个正在运行的 statsd 实例,然后您将它们推送到诸如 collectrd 之类的东西?

Statsd 是 Collectd 的替代品。您可以在 LAN 上拥有一个 statsd 实例,并让所有“页面”向其发送指标。下一个合乎逻辑的步骤是可视化这些指标。您可能会在这里想到Graphite

我知道指标调用是 udp,所以它们很轻,但这意味着您可能每页对 statsd 进行 3-5 次调用,我想知道这是否会在某些时候引起问题?

我每分钟对单个 statsd 进行 10K 调用。问题可能很多——您的服务器可能会受到 CPU、内存、网络或 IO 的限制。是的,UDP 比 TCP 轻得多。不用担心规模。就目前而言,那里有很多适合你的跑道。

有多个 statsd 实例:

除非从可扩展性的角度来看,否则拥有多个 statsd 客户端将是一个非常糟糕的主意。以后,更改配置会变得很头疼。调试 n statsd 中的哪一个配置不正确也很困难。因此,“轻量级”开销是对不可维护架构的邀请。就健壮性而言,有些人所做的远远超出您当前的需求,而不会面临 statsd 的任何失败。正如我所说,我每分钟做 10K 个指标。

于 2013-10-23T07:10:26.357 回答