OTLP 記錄擷取總覽

本文將介紹如何使用 遙測 (OTLP) API telemetry.googleapis.com,將 OTLP 格式的記錄檔擷取到 Cloud Logging,並以記錄檔項目的形式儲存。如需範例,請參閱「以 OTLP 格式將記錄寫入 Telemetry API」。

您也可以從使用 SDK 的應用程式,或透過 OpenTelemetry Collector,將記錄傳送至 Telemetry API。

如要瞭解記錄、指標和追蹤記錄的 Telemetry API,請參閱 Telemetry (OTLP) API 參考資料

通訊協定支援

OTLP 端點支援所有 OTLP 通訊協定,包括 http/protobufhttp/jsongrpc。從 OpenTelemetry 收集器匯出時,您可以使用任何通訊協定。不過,由於大多數 SDK 匯出工具都不支援動態權杖重新整理,如果您是直接從 SDK 匯出,建議只使用 gRPC OTLP 匯出工具,而非 HTTP 匯出工具。

帳單

使用 Telemetry API 擷取記錄時,Cloud Logging 儲存空間和帳單值可能會有所變動。JSON 格式的 OTLP 記錄要求一般具有下列結構:

"resourceLogs": [
    {
      "resource": {
        "attributes": [...]
      },
      "scopeLogs": [
        {
          "scope": { ...}
          "logRecords": [...]
        }
      ]
    }
]

每個 logRecords 陣列中的每個項目都會成為單一 Cloud Logging 記錄項目。如果符合下列兩項條件, Google Cloud 專案 的儲存空間和帳單就會有大幅變動:

  • resource 欄位包含大量鍵和值的必要屬性。這些資源屬性可用於判斷結果 LogEntry 中的受監控資源

    受監控資源包含 Cloud Logging 受監控資源類型,以及相關聯標籤的值。部分受監控的資源類型只有極少數標籤,但有些資源類型則有許多標籤。如要進一步瞭解擷取 OTLP 格式記錄時必須提供的屬性,請參閱「OTLP 屬性至資源類型對應」。

  • scopeLogs 欄位包含 logRecords 陣列中的大量項目。

為支援擷取 OTLP 格式的記錄,Cloud Logging LogEntry 結構包含額外欄位 otel。OTLP 和 Cloud Logging 資料模型並不完全相符,因此 otel 欄位包含來自傳入 OTLP 要求的 OTLP 資源、範圍和實體的副本。

舉例來說,如果您將下列 OTLP resourceLog 傳送至 Telemetry API,則每個產生的記錄項目都會包含 resource 欄位 (適用於受監控資源) 和 otel 欄位,如其他分頁所示:

resourceLog

{
  "resourceLogs": [
    {
      "resource": {
        "attributes": [
          {
            "key": "gcp.project_id",
            "value": { "stringValue": "PROJECT_ID" }
          },
          {
            "key": "gcp.resource_type",
            "value": { "stringValue": "global" }
          }
        ]
      },
      "scopeLogs": [
        {
          "scope": {
            "name": "my.library",
            "version": "1.0.0",
            "attributes": [
              {
                "key": "my.scope.attribute",
                "value": { "stringValue": "some scope attribute" }
              }
            ]
          },
          "logRecords": [ ... ]
         }
       ]
     }
   ]
}

resource

  {
    ...
    "resource": {
      "labels": {
        "project_id": "PROJECT_ID"
      },
      "type": "global"
    },
    ...
}

otel

  {
    ...
    "otel": {
      "resource": {
        "attributes": {
          "gcp.project_id": "PROJECT_ID",
          "gcp.resource_type": "global"
        }
      },
      "scope": {
        "attributes": {
          "my.scope.attribute": "some scope attribute"
        },
        "name": "my.library",
        "version": "1.0.0"
      }
    },
   ...
  }

Cloud Logging 無法將其他資源連結至記錄項目,因此 OTLP 資源、範圍和實體的相關資訊都必須複製到每個記錄項目。

這項複製作業會盡可能保留原始要求中的資訊,並將其納入產生的記錄項目。但重複項目也表示 otel 欄位會重複記錄項目監控資源 (resource) 欄位中使用的資源資訊。記錄項目的 resource 欄位會產生費用,但 otel 欄位中重複的資源資訊則不會。

在 OTLP 要求中加入大量記錄時,必須將 OTLP 資訊複製到每個產生的記錄項目,包括 resourceotel 欄位。雖然系統不會針對 otel 欄位的副本收取儲存空間費用,但會針對 resource 欄位的額外副本收費。在要求中加入大量 OTLP logRecords 時,記錄項目中可計費的 resource 欄位數量會與每個要求中每個 resource 的 OTLP logRecords 數量成正比。

為盡量減少儲存的額外資訊,建議您在每個要求中傳送一個 logRecord 項目。

限制與配額

如要瞭解使用 Telemetry API 記錄時的限制和配額,請參閱「記錄擷取作業的限制和配額」。

使用 Telemetry API 擷取記錄時,也適用 Cloud Logging 配額與限制