OpenTelemetry 指标:聚合、配置与导出全解析
1. OpenTelemetry 直方图聚合
OpenTelemetry 中的直方图聚合除了计算桶计数外,还能计算所有值的最小值、最大值和总和,结合总计数可轻松计算平均值,从而更全面地展示数据分布。根据不同的导出器,直方图聚合可以作为单个数据点或多个数据点导出。例如,Prometheus 将直方图桶和最小值/最大值表示为单独的数据点,而 OTLP 则将它们表示为具有多个值的单个数据点。
1.1 指数直方图
在计算中,我们通常希望对较低的值有更高的精度。对于服务中大多数请求响应时间在 100 毫秒以内的情况,若第一个桶边界设为 (0, 100.0],则所有请求都会落入同一个桶,线性插值也无法提供更多信息。软件系统的响应时间分布通常具有长尾特征,大部分响应时间集中在分布的低端,而受垃圾回收、CPU 节流或网络故障等外部因素影响的长响应时间则较少且分布在高端。
为了更动态地支持这类分布,OTEP - 149 引入了指数直方图。指数直方图聚合使用指数公式控制桶边界,并通过一个比例参数控制分辨率。该参数在 OpenTelemetry SDK 中不可配置,由实现根据报告的值范围计算得出。使用这种方式定义的指数桶能更准确地表示分布,通常使用比显式桶更少的桶边界,同时解决了直方图中桶合并的问题。
指数直方图并非 OpenTelemetry 实现符合规范的必需项。部分实现(如 Java)允许接受某些参数进行配置,例如给定直方图的最大桶数。指数桶直方图仅支持计数器或直方图仪器。
1.2 Drop 聚合
在配置视图时,可以定义 Drop 聚合来丢弃符合特定条
超级会员免费看
订阅专栏 解锁全文
61

被折叠的 条评论
为什么被折叠?



