本指南說明如何使用 Trusted Cloud by S3NS 平台記錄排解使用匯入主題時的問題,包括 Cloud Storage 匯入主題、Azure Event Hubs 匯入主題、Amazon MSK 匯入主題和 Confluent Cloud 匯入主題。
關於平台記錄檔
支援的 Trusted Cloud 服務會產生自己的平台記錄集,擷取與該服務運作相關的事件和活動。這些平台記錄包含服務內發生的詳細資訊,包括成功執行的作業、錯誤、警告和其他重要事件。
平台記錄檔是 Cloud Logging 的一部分,兩者共用相同的功能。舉例來說,以下是平台記錄的重要功能清單:
記錄通常會以 JSON 物件的形式呈現,方便您進一步查詢和篩選。
您可以使用主控台中的 Logging 查看平台記錄。
平台記錄也可以與 Cloud Monitoring 和其他監控工具整合,建立資訊主頁、快訊和其他監控機制。
記錄檔儲存空間會根據擷取的資料量和保留期限產生費用。
如要進一步瞭解平台記錄,請參閱 Google Cloud Platform 記錄。
事前準備
請確認您已完成所用主題的必要條件:
必要角色和權限
開始前,請先確認您有權存取記錄。
您需要 Logs Viewer (roles/logging.viewer)
Identity and Access Management (IAM) 角色。如要進一步瞭解 Logging 存取權,請參閱「使用 IAM 控管存取權」。
以下說明如何驗證及授予 IAM 存取權:
關於匯入主題擷取失敗
匯入主題可能會發生問題,導致資料無法順利擷取。
Cloud Storage 匯入主題
Cloud Storage 匯入主題可能會發生問題,導致資料無法順利擷取。舉例來說,使用 Cloud Storage 匯入主題時,您可能會遇到無法擷取 Cloud Storage 物件或物件部分內容的問題。
以下列出 Cloud Storage 匯入主題產生平台記錄時,可能導致擷取失敗的原因:
郵件大小
單一訊息不得超過 10 MB。如果是,系統會略過整封郵件。
如果您使用 Avro 或 Pub/Sub Avro 格式,Avro 區塊不得超過 16 MB。系統會略過較大的 Avro 區塊。
訊息屬性
訊息最多可有 100 個屬性。系統擷取訊息時,會捨棄任何額外屬性。
屬性鍵大小不可超過 256 個位元組,屬性值大小不可超過 1024 個位元組。如果值大於上限,系統在擷取訊息時,會從訊息中捨棄整個鍵值組。
如要進一步瞭解訊息鍵和屬性的使用規範,請參閱「運用屬性發布訊息」。
Avro 格式
- 請確認 Avro 物件格式正確。格式不正確 會導致系統無法擷取訊息。
資料格式
- 確認你使用的是支援的 Avro 版本。系統不會處理不支援的格式。
Azure 事件中樞、Amazon MSK 和 Confluent Cloud 匯入主題
匯入 Azure Event Hubs、Amazon MSK 和 Confluent Cloud 主題時,可能會發生問題,導致系統無法順利擷取資料。
以下列出匯入主題中,導致擷取作業失敗的原因 (會產生平台記錄):
郵件大小
- 單一訊息不得超過 10 MB。如果是,系統會略過整封郵件。
訊息屬性
訊息最多可有 100 個屬性。系統擷取訊息時,會捨棄任何額外屬性。
屬性鍵大小不可超過 256 個位元組,屬性值大小不可超過 1024 個位元組。如果值大於上限,系統在擷取訊息時,會從訊息中捨棄整個鍵值組。
如要進一步瞭解訊息鍵和屬性的使用規範,請參閱「運用屬性發布訊息」。
啟用平台記錄
匯入主題的平台記錄預設為停用。建立或更新匯入主題時,您可以啟用平台記錄。如要停用平台記錄,請更新匯入主題。
建立匯入主題時啟用平台記錄
建立匯入主題時,如要啟用平台記錄,請按照下列步驟操作:
控制台
gcloud
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
如要啟用平台記錄,請確認
--ingestion-log-severity
旗標設為WARNING
或較低的嚴重程度層級,例如INFO
或DEBUG
。針對您使用的相應主題執行gcloud pubsub topics create
指令:舉例來說,如要在 Cloud Storage 匯入主題上啟用平台記錄,請在
gcloud pubsub topics create
指令中加入--ingestion-log-severity=WARNING
旗標。gcloud pubsub topics create TOPIC_ID \ --cloud-storage-ingestion-bucket=BUCKET_NAME \ --cloud-storage-ingestion-input-format=INPUT_FORMAT \ --ingestion-log-severity=WARNING
更新匯入主題時啟用平台記錄檔
如要在更新匯入主題時啟用平台記錄,請按照下列步驟操作:
控制台
前往 Trusted Cloud 控制台的「主題」頁面。
按一下您使用的匯入主題 (Cloud Storage 匯入主題、Azure Event Hubs 匯入主題、Amazon MSK 匯入主題或 Confluent Cloud 匯入主題)。
在主題詳細資料頁面中,按一下「編輯」。
- 選取「啟用平台記錄檔」。
按一下「更新」。
gcloud
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
如要啟用平台記錄,請確認將「ingestion-log-severity」設為
WARNING
或較低的嚴重程度層級,例如INFO
或DEBUG
。 執行gcloud pubsub topics update
指令,並加上所有可能的旗標,指定所用主題的設定:- Cloud Storage 匯入主題
- 為避免遺失 Cloud Storage 匯入主題的設定,請務必在每次更新主題時,重新加入原始
create
指令中的相同值。如果省略任何項目,Pub/Sub 會將設定重設為預設值。
- 為避免遺失 Cloud Storage 匯入主題的設定,請務必在每次更新主題時,重新加入原始
- Azure 事件中樞匯入主題
- Amazon MSK 匯入主題
- Confluent Cloud 匯入主題
舉例來說,如要更新現有 Cloud Storage 匯入主題的記錄,請在
gcloud pubsub topics create
指令中加入--ingestion-log-severity=WARNING
旗標,並納入所有可能的旗標值,指定 Cloud Storage 匯入主題的設定。gcloud pubsub topics update TOPIC_ID \ --cloud-storage-ingestion-bucket=BUCKET_NAME \ --cloud-storage-ingestion-input-format=INPUT_FORMAT \ --cloud-storage-ingestion-text-delimiter=TEXT_DELIMITER \ --cloud-storage-ingestion-minimum-object-create-time=MINIMUM_OBJECT_CREATE_TIME \ --cloud-storage-ingestion-match-glob=MATCH_GLOB --ingestion-log-severity=WARNING
- Cloud Storage 匯入主題
停用平台記錄檔
如要為使用的匯入主題停用平台記錄,請按照下列步驟操作:
控制台
前往 Trusted Cloud 控制台的「主題」頁面。
按一下您使用的匯入主題 (Cloud Storage 匯入主題、Azure Event Hubs 匯入主題、Amazon MSK 匯入主題或 Confluent Cloud 匯入主題)。
在主題詳細資料頁面中,按一下「編輯」。
- 清除「啟用平台記錄檔」。
按一下「更新」。
gcloud
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
如要停用平台記錄,請確認攝取記錄嚴重程度設為
DISABLED
。 執行gcloud pubsub topics update
指令,並加上所有可能的旗標,指定所用主題的設定:- Cloud Storage 匯入主題
- 為避免遺失 Cloud Storage 匯入主題的設定,請務必在每次更新主題時,重新加入原始
create
指令中的相同值。如果省略任何項目,Pub/Sub 會將設定重設為原始預設值。
- 為避免遺失 Cloud Storage 匯入主題的設定,請務必在每次更新主題時,重新加入原始
- Azure 事件中樞匯入主題
- Amazon MSK 匯入主題
- Confluent Cloud 匯入主題
舉例來說,如要停用現有 Cloud Storage 匯入主題的記錄,請在
gcloud pubsub topics update
指令中加入--ingestion-log-severity=DISABLED
旗標,並加入所有可能旗標,指定 Cloud Storage 匯入主題的設定。gcloud pubsub topics update TOPIC_ID \ --cloud-storage-ingestion-bucket=BUCKET_NAME \ --cloud-storage-ingestion-input-format=INPUT_FORMAT \ --cloud-storage-ingestion-text-delimiter=TEXT_DELIMITER \ --cloud-storage-ingestion-minimum-object-create-time=MINIMUM_OBJECT_CREATE_TIME \ --cloud-storage-ingestion-match-glob=MATCH_GLOB --ingestion-log-severity=DISABLED
- Cloud Storage 匯入主題
查看平台記錄
如要查看所用匯入主題的平台記錄,請按照下列步驟操作:
Trusted Cloud 控制台
前往 Trusted Cloud 控制台的「Logs Explorer」頁面。
選取 Trusted Cloud 專案。
如有需要,請從「Upgrade」(升級) 選單,將「Legacy Logs Viewer」(舊版記錄檢視器) 切換為「Logs Explorer」(記錄檔探索工具)。
按一下「顯示查詢」切換按鈕。
如要篩選記錄檔,只顯示您使用的各個匯入主題 (Cloud Storage 匯入主題、Azure Event Hubs 匯入主題、Amazon MSK 匯入主題或 Confluent Cloud 匯入主題) 的項目,請在查詢欄位中輸入
"resource.type=pubsub_topic AND severity=WARNING"
,然後按一下「執行查詢」。在「查詢結果」窗格中,按一下「編輯時間」,即可變更要傳回結果的時間範圍。
如要進一步瞭解如何使用記錄檔探索工具,請參閱「使用記錄檔探索工具」。
gcloud CLI
如要使用 gcloud CLI 搜尋所用匯入主題的平台記錄,請使用 gcloud logging read
指令。
指定篩選條件,將結果限制為您使用的各個匯入主題的平台記錄 (Cloud Storage 匯入主題、Azure 事件中樞匯入主題、Amazon MSK 匯入主題或 Confluent Cloud 匯入主題)。
gcloud logging read "resource.type=pubsub_topic AND severity=WARNING"
Cloud Logging API
使用 entries.list
Cloud Logging API 方法。
如要篩選結果,只顯示 Cloud Storage 匯入主題的平台記錄,請使用 filter
欄位。以下是 JSON 要求物件的範例。
{
"resourceNames":
[
"projects/my-project-name"
],
"orderBy": "timestamp desc",
"filter": "resource.type=\"pubsub_topic\" AND severity=WARNING"
}
查看及瞭解平台記錄格式
以下章節提供平台記錄範例,並說明平台記錄的欄位。
所有平台記錄專屬欄位都包含在 jsonPayload
物件中。
Cloud Storage
Avro 失敗
{
"insertId": "1xnzx8md4768",
"jsonPayload": {
"@type": "type.googleapis.com/google.pubsub.v1.IngestionFailureEvent",
"cloudStorageFailure": {
"objectGeneration": "1661148924738910",
"bucket": "bucket_in_avro_format",
"objectName": "counts/taxi-2022-08-15T06:10:00.000Z-2022-08-15T06:15:00.000Z-pane-0-last-00-of-01",
"avroFailureReason": {}
},
"topic": "projects/my-project/topics/avro_bucket_topic",
"errorMessage": "Unable to parse the header of the object. The object won't be ingested."
},
"resource": {
"type": "pubsub_topic",
"labels": {
"project_id": "my-project",
"topic_id": "avro_bucket_topic"
}
},
"timestamp": "2024-10-07T18:55:45.650103193Z",
"severity": "WARNING",
"logName": "projects/my-project/logs/pubsub.googleapis.com%2Fingestion_failures",
"receiveTimestamp": "2024-10-07T18:55:46.678221398Z"
}
記錄欄位 | 說明 |
---|---|
insertId |
記錄項目的專屬 ID。 |
jsonPayload.@type |
識別事件類型。一律 type.googleapis.com/google.pubsub.v1.IngestionFailureEvent 。 |
jsonPayload.cloudStorageFailure.objectGeneration |
Cloud Storage 物件的產生編號。 |
jsonPayload.cloudStorageFailure.bucket |
包含物件的 Cloud Storage 值區。 |
jsonPayload.cloudStorageFailure.objectName |
Cloud Storage 物件的名稱。 |
jsonPayload.cloudStorageFailure.avroFailureReason |
包含更具體的 Avro 剖析錯誤詳細資料。這個欄位留空。 |
jsonPayload.topic |
訊息預定傳送的 Pub/Sub 主題。 |
jsonPayload.errorMessage |
使用者可理解的錯誤訊息。 |
resource.type |
資源類型。一律 pubsub_topic 。 |
resource.labels.project_id |
專案 ID。 Trusted Cloud |
resource.labels.topic_id |
Pub/Sub 主題 ID。 |
timestamp |
記錄檔項目產生時間戳記。 |
severity |
嚴重性等級為 WARNING 。 |
logName |
記錄名稱。 |
receiveTimestamp |
收到記錄項目的時間戳記。 |
文字失敗
{
"insertId": "1kc4puoag",
"jsonPayload": {
"@type": "type.googleapis.com/google.pubsub.v1.IngestionFailureEvent",
"cloudStorageFailure": {
"bucket": "bucket_in_text_format",
"apiViolationReason": {},
"objectName": "counts/taxi-2022-08-15T06:10:00.000Z-2022-08-15T06:15:00.000Z-pane-0-last-00-of-01",
"objectGeneration": "1727990048026758"
},
"topic": "projects/my-project/topics/large_text_bucket_topic",
"errorMessage": "The message has exceeded the maximum allowed size of 10000000 bytes. The message won't be published."
},
"resource": {
"type": "pubsub_topic",
"labels": {
"topic_id": "large_text_bucket_topic",
"project_id": "my-project"
}
},
"timestamp": "2024-10-09T14:09:07.760488386Z",
"severity": "WARNING",
"logName": "projects/my-project/logs/pubsub.googleapis.com%2Fingestion_failures",
"receiveTimestamp": "2024-10-09T14:09:08.483589656Z"
}
記錄欄位 | 說明 |
---|---|
insertId |
記錄項目的專屬 ID。 |
jsonPayload.@type |
識別事件類型。一律 type.googleapis.com/google.pubsub.v1.IngestionFailureEvent 。 |
jsonPayload.cloudStorageFailure.objectGeneration |
Cloud Storage 物件的產生編號。 |
jsonPayload.cloudStorageFailure.bucket |
包含物件的 Cloud Storage 值區。 |
jsonPayload.cloudStorageFailure.objectName |
Cloud Storage 物件的名稱。 |
jsonPayload.cloudStorageFailure.apiViolationReason |
包含 API 違規事項的詳細資料。這個欄位留空。 |
jsonPayload.topic |
Pub/Sub 主題。 |
jsonPayload.errorMessage |
使用者可理解的訊息。 |
resource.type |
資源類型,一律為 pubsub_topic 。 |
resource.labels.project_id |
Trusted Cloud 專案 ID。 |
resource.labels.topic_id |
Pub/Sub 主題 ID。 |
timestamp |
記錄檔項目產生時間戳記。 |
severity |
嚴重性等級為 WARNING 。 |
logName |
記錄名稱。 |
receiveTimestamp |
Cloud Logging 收到記錄項目的時間。 |
Amazon MSK
API 違規
{
"insertId": "k3breb2q",
"jsonPayload": {
"@type": "type.googleapis.com/google.pubsub.v1.IngestionFailureEvent",
"awsMskFailure": {
"apiViolationReason": {},
"clusterArn": "arn:aws:kafka:us-east-1:291552718126:cluster/cluster-ingestion/abb9faea-4070-4eb76-9c21-f98abca92eaf-2",
"kafkaTopic": "msk-topic",
"partitionId": "1",
"offset": "11"
},
"errorMessage": "The value of an attribute in the message exceeded the maximum allowed size of 1024 bytes. Number of bytes in the value: 1025. Key: my header. Value: my very large value …",
"topic": "projects/my-project/topics/msk-import-topic"
},
"resource": {
"type": "pubsub_topic",
"labels": {
"topic_id": "msk-import-topic",
"project_id": "my-project"
}
},
"timestamp": "2025-02-03T16:18:14.693357960Z",
"severity": "WARNING",
"logName": "projects/my-project/logs/pubsub.googleapis.com%2Fingestion_failures",
"receiveTimestamp": "2025-02-03T16:18:16.241643258Z"
}
記錄欄位 | 說明 |
---|---|
insertId |
記錄項目的專屬 ID。 |
jsonPayload.@type |
識別事件類型。一律 type.googleapis.com/google.pubsub.v1.IngestionFailureEvent 。 |
jsonPayload.awsMskFailure.clusterArn |
要從中擷取主題的叢集 ARN。 |
jsonPayload.awsMskFailure.kafkaTopic |
要從中擷取資料的 Kafka 主題名稱。 |
jsonPayload.awsMskFailure.partitionId |
含有無法擷取訊息的分割區 ID。 |
jsonPayload.awsMskFailure.offset |
無法擷取的訊息在分割區中的位移。 |
jsonPayload.awsMskFailure.apiViolationReason |
包含 API 違規事項的詳細資料。這個欄位留空。 |
jsonPayload.topic |
Pub/Sub 主題。 |
jsonPayload.errorMessage |
使用者可理解的訊息。 |
resource.type |
資源類型,一律為 pubsub_topic 。 |
resource.labels.project_id |
Trusted Cloud 專案 ID。 |
resource.labels.topic_id |
Pub/Sub 主題 ID。 |
timestamp |
記錄檔項目產生時間戳記。 |
severity |
嚴重性等級為 WARNING 。 |
logName |
記錄名稱。 |
receiveTimestamp |
Cloud Logging 收到記錄項目的時間。 |
Azure 事件中樞
API 違規
{
"insertId": "i1fbqnb12",
"jsonPayload": {
"@type": "type.googleapis.com/google.pubsub.v1.IngestionFailureEvent",
"azureEventHubsFailure": {
"apiViolationReason": {},
"namespace": "my-namespace",
"eventHub": "my-event-hub",
"partitionId": "1",
"offset": "15"
},
"errorMessage": "The value of an attribute in the message exceeded the maximum allowed size of 1024 bytes. Number of bytes in the value: 1025. Key: my header. Value: my very large value …",
"topic": "projects/my-project/topics/event-hubs-import-topic"
},
"resource": {
"type": "pubsub_topic",
"labels": {
"topic_id": "event-hubs-import-topic",
"project_id": "my-project"
}
},
"timestamp": "2025-02-03T16:18:14.693357960Z",
"severity": "WARNING",
"logName": "projects/my-project/logs/pubsub.googleapis.com%2Fingestion_failures",
"receiveTimestamp": "2025-02-03T14:05:12.338211450Z"
}
記錄欄位 | 說明 |
---|---|
insertId |
記錄項目的專屬 ID。 |
jsonPayload.@type |
識別事件類型。一律 type.googleapis.com/google.pubsub.v1.IngestionFailureEvent 。 |
jsonPayload.azureEventHubsFailure.namespace |
包含要擷取事件中樞的命名空間。 |
jsonPayload.azureEventHubsFailure.eventHub |
要從中擷取資料的事件中樞名稱。 |
jsonPayload.azureEventHubsFailure.partitionId |
含有無法擷取訊息的分割區 ID。 |
jsonPayload.azureEventHubsFailure.offset |
無法擷取的訊息在分割區中的位移。 |
jsonPayload.azureEventHubsFailure.apiViolationReason |
包含 API 違規事項的詳細資料。這個欄位留空。 |
jsonPayload.topic |
Pub/Sub 主題。 |
jsonPayload.errorMessage |
使用者可理解的訊息。 |
resource.type |
資源類型,一律為 pubsub_topic 。 |
resource.labels.project_id |
Trusted Cloud 專案 ID。 |
resource.labels.topic_id |
Pub/Sub 主題 ID。 |
timestamp |
記錄檔項目產生時間戳記。 |
severity |
嚴重性等級為 WARNING 。 |
logName |
記錄名稱。 |
receiveTimestamp |
Cloud Logging 收到記錄項目的時間。 |
Confluent Cloud
文字失敗
{
"insertId": "i1fbqnb14",
"jsonPayload": {
"@type": "type.googleapis.com/google.pubsub.v1.IngestionFailureEvent",
"confluentCloudFailure": {
"apiViolationReason": {},
"clusterId": "lma-1x18ae",
"kafkaTopic": "confluent-topic",
"partitionId": "1",
"offset": "19"
},
"errorMessage": "The value of an attribute in the message exceeded the maximum allowed size of 1024 bytes. Number of bytes in the value: 1025. Key: my header. Value: my very large value …",
"topic": "projects/my-project/topics/confluent-import-topic"
},
"resource": {
"type": "pubsub_topic",
"labels": {
"topic_id": "confluent-import-topic",
"project_id": "my-project"
}
},
"timestamp": "2025-02-03T16:18:14.693357960Z",
"severity": "WARNING",
"logName": "projects/my-project/logs/pubsub.googleapis.com%2Fingestion_failures",
"receiveTimestamp": "2025-02-03T17:03:11.428221440Z"
}
記錄欄位 | 說明 |
---|---|
insertId |
記錄項目的專屬 ID。 |
jsonPayload.@type |
識別事件類型。一律 type.googleapis.com/google.pubsub.v1.IngestionFailureEvent 。 |
jsonPayload.confluentCloudFailure.clusterId |
包含要擷取主題的叢集 ID。 |
jsonPayload.confluentCloudFailure.kafkaTopic |
要從中擷取資料的 Kafka 主題名稱。 |
jsonPayload.confluentCloudFailure.partitionId |
含有無法擷取訊息的分割區 ID。 |
jsonPayload.confluentCloudFailure.offset |
無法擷取的訊息在分割區中的位移。 |
jsonPayload.confluentCloudFailure.apiViolationReason |
包含 API 違規事項的詳細資料。這個欄位留空。 |
jsonPayload.topic |
Pub/Sub 主題。 |
jsonPayload.errorMessage |
使用者可理解的訊息。 |
resource.type |
資源類型,一律為 pubsub_topic 。 |
resource.labels.project_id |
Google Cloud 專案 ID。 |
resource.labels.topic_id |
Pub/Sub 主題 ID。 |
timestamp |
記錄檔項目產生時間戳記。 |
severity |
嚴重性等級為 WARNING 。 |
logName |
記錄名稱。 |
receiveTimestamp |
Cloud Logging 收到記錄項目的時間。 |