使用Graphite进行统计 - 来自无服务器基础架构

问题描述:

我从一个新的应用程序开始,该应用程序旨在以更“云”的方式运行,遵循无服务器基础架构的思想,不再需要“机器”的概念,但只是一个应用程序在某处运行。使用Graphite进行统计 - 来自无服务器基础架构

由于Graphite只知道“绝对”值,因此服务器的主机名通常会在度量路径中编码以处理并发性。 (例如applicationname.webserver_1.requestCount)。使用Graphite函数,可以在构建图形时轻松合并数据。

但是当我运行在服务器较少的环境中时,主机名不再以经典的意义存在 - 每次应用程序重新启动或部署时,都会为其生成一个新的随机主机名。我现在想知道的是 - 如何最好地处理这个问题。我不能使用主机名,因为这样我会很快得到数百个不同的主机名,并且完全无法使用石墨后端。这个用例的最佳实践是什么?

作为一个旁注 - 这不仅是衡量计数器,而且还衡量响应时间(p99函数将应用)。

我想使用dropwizard-metrics(正式名称为codahale指标)将消息发送给grahite,但这应该只是一个实现细节。

非常感谢您的帮助。

+0

IIRC in dropwizard中,您可以从度量标准名称中排除主机名。 – deniszh

+0

@deniszh问题是石墨需要它们。计数器将作为绝对值发送给石墨,而不是相对值。如果两个应用程序实例并行发送计数器到相同的度量标准名称,那么石墨将会像获取平均值一样疯狂。或者我在这种情况下是错的? –

+0

是的,如果你使用计数器 - 那是真的。在这种情况下(许多短命的指标)Graphite并不适合IMO。 您可以在石墨服务器上运行一些清洁脚本,但它看起来并不是一个好的解决方案。 – deniszh

现在的计划是不直接发送给Graphite,而是通过StatsD进行,后者能够进行必要的聚合。在这种情况下,不需要嵌入主机名。

感谢您的建议! :)