11

我正在开始检测 Web 应用程序,并使用 StatsD 收集尽可能多的相关指标。例如,以下是我目前使用的高级指标名称的一些示例:

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

……还有很多很多。我现在正在努力为各种指标建立一个一致的层次结构和一组命名约定,以便当前的指标有意义,并且有逻辑桶可以在其中添加未来的指标。

我的问题有两个:

  1. 您收集了哪些您认为不可或缺的相关指标?
  2. 您使用什么命名结构对指标进行分类?
4

1 回答 1

14

这是一个没有明确答案的问题,但这是我们在Datadog的做法(我们是托管监控服务,所以我们倾向于沉迷于这些事情)。

1. 哪些指标是必不可少的?这取决于旁观者。但在高层次上,对于每个团队来说,任何尽可能接近其目标的指标(这可能不是最容易收集的)。

系统指标(例如系统负载、内存等)很容易收集,但很少可操作,因为它们很难可靠地将它们与可能的原因联系起来。

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

我们还发现,任何团队的核心关键指标集都会随着产品的发展而变化,因此存在一个持续的编辑过程

这反过来意味着公司中的任何人都需要能够选择对他们来说重要的指标。没有请求权限,也没有摩擦来获取数据。

2.命名结构最高层次的层次是产品线或过程。我们的 Web 前端在内部称为 dogweb,因此该组件的所有指标都以dogweb.. 层次结构的下一层是子组件,例如dogweb.db.dogweb.http.等。层次结构的最后一层是被测量的事物(例如renderTime,或responseTime)。

石墨中未解决的问题是度量名称中度量元数据的编码(以及使用*,例如选择dogweb.http.browser.*.renderTime)它很聪明,但可能会妨碍。

我们最终在数据模型中实现了显式元数据,但这不在 statsd/graphite 中,所以我将省略细节。如果您想了解更多,请直接与我联系。

于 2013-08-08T16:27:12.957 回答