完整译文请访问:记录规则。
点击这里获取云原生干货https://www.coderdocument.com/resource_credential.html?code=云原生干货
使用记录规则的一致命名方案,易于解释规则含义,还可以避免错误,暴露错误的或无意义的计算。
本文档记录了如何正确地进行聚合,并提供了一种命名约定。
命名和聚合
记录规则的一般形式为 level:metric:operations
。level
表示聚合级别和规则输出的标签。metric
是指标名称,在使用rate()
或irate()
函数时,除了将_total
从计数器中剥离外,指标名称应该保持不变。operations
是应用于指标的操作列表,最新的操作优先。
保持指标名称不变,可以很容易地知道指标是什么,并且很容易在代码库中找到它。
为了保持操作的整洁性,如果有其他操作,则省略_sum
,如sum()
。可以合并关联操作(例如min_min
与min
相同)。
如果没有明显的操作可以使用,则使用sum
。当通过除法计算比率(ratio)时,使用_per_
分隔指标和ratio
操作调用。
当聚合比率时,分子分母分别聚合,然后相除。请不要使用比率的平均数或平均数的平均数,因为这在统计上是无效的。
当聚合摘要图的_count
和_sum
,然后相除以计算平均观察值大小时,将其作为一个比率处理很不方便。相反,保留没有_count
或_sum
后缀的指标名称,并将操作中的rate
替换为mean
,这这就代表了示该时间段内的平均观察值大小。
总是应该为without
子句指定你将要聚合掉的标签。这是为了保留所有其他标签,如job
,这样可以避免冲突,并为你提供更有用的指标和告警。
示例
注意缩进风格,在两个向量之间的它们自己的行上有减少缩进的操作符。为了在Yaml中实现这种风格,使用了带缩进指示器的块引用,例如|2
。
聚合拥有path
标签的每秒的请求数量:
- record: instance_path:requests:rate5m
expr: rate(requests_total{job="myjob"}[5m])
- record: path:requests:rate5m
expr: sum without (instance)(instance_path:requests:rate5m{job="myjob"})
计算请求故障率并聚合到作业级别故障率:
- record: instance_path:request_failures:rate5m
expr: rate(request_failures_total{job="myjob"}[5m])
- record: instance_path:request_failures_per_requests:ratio_rate5m
expr: |2
instance_path:request_failures:rate5m{job="myjob"}
/
instance_path:requests:rate5m{job="myjob"}
# Aggregate up numerator and denominator, then divide to get path-level ratio.
- record: path:request_failures_per_requests:ratio_rate5m
expr: |2
sum without (instance)(instance_path:request_failures:rate5m{job="myjob"})
/
sum without (instance)(instance_path:requests:rate5m{job="myjob"})
# No labels left from instrumentation or distinguishing instances,
# so we use 'job' as the level.
- record: job:request_failures_per_requests:ratio_rate5m
expr: |2
sum without (instance, path)(instance_path:request_failures:rate5m{job="myjob"})
/
sum without (instance, path)(instance_path:requests:rate5m{job="myjob"})
及时获取更多精彩文章,请扫码关注如下公众号《云原生之家》: