指標的 OpenTelemetry 數據模型由用于交付預聚合指標時間序列數據的協議規范和語義約定組成。該數據模型旨在從現有系統導入數據并將數據導出到現有系統,以及支持內部 OpenTelemetry 用例,以從跨度或日志流生成指標。
該協議旨在滿足 OpenCensus Metrics 系統的要求,特別是滿足其 Metrics Views 的概念。通過支持收集路徑上的數據轉換,在 OpenTelemetry Metrics 數據模型中完成視圖。
OpenTelemetry 確定了三種保留語義的度量數據轉換,這些轉換可用于構建度量收集系統作為控制成本、可靠性和資源分配的方法。OpenTelemetry Metrics 數據模型旨在支持這些轉換,既可以在數據生成時在 SDK 內進行,也可以作為 OpenTelemetry 收集器內的重新處理階段進行。這些轉變是:
- 時間重新聚合:以高頻收集的指標可以重新聚合為更長的間隔,從而允許預先計算或使用低分辨率時間序列來代替原始指標數據。
- 空間重新聚合:使用不需要的屬性生成的指標可以重新聚合為具有較少屬性的指標。
- Delta-to-Cumulative:以 Delta 臨時性輸入和輸出的指標減輕了客戶端保持高基數狀態的負擔。增量的使用允許下游服務承擔轉換為累積時間序列的成本,或者放棄成本并直接計算費率。
OpenTelemetry Metrics 數據流的設計使得這些轉換可以自動應用于相同類型的流,但須滿足下述條件。每個 OTLP 數據流都有一個內在的 可分解聚合函數,使其在語義上得到明確定義,可以跨時間和空間屬性合并數據點。每個OTLP數據點還具有兩個有意義的時間戳,結合內在聚合,可以對模型的每個基本點進行標準度量數據轉換,同時確保結果具有預期含義。
與 OpenCensus Metrics 一樣,只需選擇聚合間隔和所需屬性,即可將指標數據轉換為一個或多個視圖。通過配置不同的視圖,可以將一串 OTLP 數據轉換為多個時間序列輸出,并且所需的視圖處理可以在 SDK 內部應用,也可以由外部收集器應用。