2013-08-07 69 views
10

我正在开始检测Web应用程序并使用StatsD尽可能多地收集相关指标的过程。举例来说,这里是我目前使用的高级别指标名称的几个例子:StatsD/Graphite命名约定的指标

http.responseTime 
http.status.4xx 
http.status.5xx 
view.renderTime 
oauth.begin.facebook 
oauth.complete.facebook 
oauth.time.facebook 
users.active 

...还有许多,许多。我现在正在努力的是为各种度量标准建立一致的层次结构和一组命名约定,以便目前的标准具有意义,并且存在用于添加未来度量标准的逻辑分区。

我的问题是双重的:

  1. 什么相关的指标是你收集你已经找到indespensible?
  2. 您使用什么命名结构来对指标进行分类?
+0

[石墨和statsd中的命名模式]的可能的副本(http://stackoverflow.com/questions/17542088/naming-pattern-in-graphite-and-statsd) – Freiheit

回答

13

这是有没有明确答案的问题,但这里是我们如何做到这一点的Datadog(我们是一个托管的监测服务,所以我们往往会迷恋这些东西)。

1.哪些指标是不可或缺的?这取决于旁观者。但是对于每个团队而言,在高层次上,尽可能接近其目标的度量标准(这可能不是最容易收集的)。系统指标(例如系统负载,内存等)收集起来很微不足道,但很少可操作,因为它们太难以将它们可靠地连接到可能的原因。

另一方面,完成的产品之旅的数量对任何负责确保新用户从使用产品的第一分钟开始就感到满意的任何人都很重要。 StatsD使这种东西容易收集。

我们还发现,随着产品的不断发展,任何团队变更的关键指标的核心组合都会发生变化,因此连续编辑流程

这反过来意味着公司中的任何人都需要能够挑选哪些指标对他们重要。没有权限问,没有摩擦去获取数据。

2.命名结构层次结构的最高级别是产品线或过程。我们的网页前端在内部被称为dogweb,因此该组件的所有指标前缀为dogweb.。下一层级是子组件,例如, dogweb.db.,dogweb.http.等 层级的最后一级是被测量的东西(例如renderTimeresponseTime)。

石墨中的悬而未决的问题是度量标准名称中的度量标准元数据编码(使用*进行选择,例如dogweb.http.browser.*.renderTime)这很聪明,但可能会妨碍您的工作。

我们最终在我们的数据模型中实现了明确的元数据,但这不是statsd/graphite,所以我会留下细节。如果您想了解更多信息,请直接与我联系。