使用Graphite进行统计 - 来自无服务器基础架构
问题描述:
我从一个新的应用程序开始,该应用程序旨在以更“云”的方式运行,遵循无服务器基础架构的思想,不再需要“机器”的概念,但只是一个应用程序在某处运行。使用Graphite进行统计 - 来自无服务器基础架构
由于Graphite只知道“绝对”值,因此服务器的主机名通常会在度量路径中编码以处理并发性。 (例如applicationname.webserver_1.requestCount
)。使用Graphite函数,可以在构建图形时轻松合并数据。
但是当我运行在服务器较少的环境中时,主机名不再以经典的意义存在 - 每次应用程序重新启动或部署时,都会为其生成一个新的随机主机名。我现在想知道的是 - 如何最好地处理这个问题。我不能使用主机名,因为这样我会很快得到数百个不同的主机名,并且完全无法使用石墨后端。这个用例的最佳实践是什么?
作为一个旁注 - 这不仅是衡量计数器,而且还衡量响应时间(p99函数将应用)。
我想使用dropwizard-metrics(正式名称为codahale指标)将消息发送给grahite,但这应该只是一个实现细节。
非常感谢您的帮助。
答
现在的计划是不直接发送给Graphite,而是通过StatsD进行,后者能够进行必要的聚合。在这种情况下,不需要嵌入主机名。
感谢您的建议! :)
IIRC in dropwizard中,您可以从度量标准名称中排除主机名。 – deniszh
@deniszh问题是石墨需要它们。计数器将作为绝对值发送给石墨,而不是相对值。如果两个应用程序实例并行发送计数器到相同的度量标准名称,那么石墨将会像获取平均值一样疯狂。或者我在这种情况下是错的? –
是的,如果你使用计数器 - 那是真的。在这种情况下(许多短命的指标)Graphite并不适合IMO。 您可以在石墨服务器上运行一些清洁脚本,但它看起来并不是一个好的解决方案。 – deniszh