首页 > 解决方案 > 编排器 API 的指标命名约定

问题描述

我有一个带有端点POST /coffee的 Web 服务 这需要一个具有一些受支持标志的主体:

  1. 糖(在咖啡中加糖)
  2. 盐(一小撮盐……)
  3. 焦糖(在咖啡中加糖)
  4. 巧克力(加巧​​克力)
  5. 牛奶(加牛奶)
  6. 生奶油(添加生奶油)

随着我们的扩展,可能会有更多。但关键是你可以制作任何这样的咖啡组合,包括没有标志(也许是浓缩咖啡)。

这些标志中的每一个都对应一个单独的操作(假设 API 调用另一个服务) - 因此我想衡量它。

衡量这些指标的最佳方法是什么?我关心的是指标名称。所以我能想到两种方法。

选项 1:每个组合的唯一指标

专业人士:我特别了解特定调用组合/模式的延迟和错误。

缺点:不可维护。随着新标志的引入,指标名称模式的数量将激增。在仪表板上阅读所有这些内容很困难。

选项 2:仅适用于“POST /coffee”的一个指标,包括任何组合。

优点:可维护。仪表板是理智的。

缺点:将无法分析特定组合的缓慢性。我可能对调用服务有单独的指标,但我无法将该指标与任何特定的标志组合相关联。

也许在指标中使用标签?Dropwizard-metrics不支持标签,但我不知道这是否也是一个不错的选择(在这种情况下标签爆炸。)

标签: prometheusgrafanacodahale-metrics

解决方案


就像我开始解释评论一样,我会使用coffee_ingredients_count一个标签ingredient。然后我增加(或者如果它不存在则创建)成分的总数。它会增加标签的数量,你是对的,但它只是一种标签。在某个时候它会停止增长。然后是计数器的问题。我会测量,rate(coffee_ingredients_count[5m])所以我看看最后 5 分钟会发生什么。

这是否意味着您会考虑在咖啡中添加 4 种成分,相当于 4 次调用制作浓缩咖啡(无成分)?

是的。因为柜台是按成分计算的。

然后就是你说的问题了。

缺点:将无法分析特定组合的缓慢性

我不确定速度是否慢,但你仍然可以计算成分。您可以与rate函数正在执行的操作相反,以获得每个指标的实际值。在我们的理想情况下,相反的计算也是正确的:rate(coffee_ingredients_count[5m]) * 60 = real_value但是,在某些样本没有理想地覆盖整个范围的情况下,或者当样本由于随机延迟而不能完美排列时,这种相反的计算并不总是正确的介绍之间擦伤参考


推荐阅读