整体架构比较
二者都可以实现指标数据的采集和传输,prom除此之外,还提供了存储和查询计算实现。prom是文本协议的传输,性能上稍有缺陷。而otel主要集中在采集的能力和协议标准上,不止针对metrics,还有traces和logs,提供了api标准、sdk实现等。
图一 prom架构
图二 otel架构
Metrics的不同之处
- OpenTelemetry可以将指标表示为增量,而不是累积值,存储每个数据点之间的差异,而不是累积总和。Prometheus由于设计原因不允许这样做(尽管您可以在查询时计算值)。这不是OpenTelemetry的默认设置,主要用于只能以速率表示的指标。
- OpenTelemetry还允许将指标值表示为整数,而不是浮点数,而Prometheus无法表示整数。
- OpenTelemetry可以附加一些额外的元数据到直方图,允许您跟踪最大和最小值。
- 最后,OpenTelemetry具有指数直方图聚合类型(使用公式和比例来计算桶的大小)。Prometheus当前无法表示这种类型,但已经在开发一个完全兼容的度量类型!
互相转换
二者可以通过otel collector实现指标的转换,简要如下图