Observability Analytics 可讓您執行 SQL 查詢來分析記錄、建立分析檢視表、將記錄檔 bucket 連結至 BigQuery 資料集,以及透過警告政策監控查詢結果。設定或查詢 Observability Analytics 時,如果遇到錯誤,請按照本文的指引找出並解決問題。如果升級記錄檔 bucket 時發生問題,請參閱「排解升級 bucket 以使用 Observability Analytics 的問題」。
錯誤訊息
本節說明您可能會看到的錯誤訊息,以及如何解決對應的錯誤狀況。
No completion signal within allotted timeframe 錯誤訊息
輸入 SQL 查詢,然後選取「執行查詢」。查詢未完成,並顯示下列錯誤訊息:
The query failed to execute and return results due to error: No completion signal within allotted timeframe.
如要解決這個錯誤,請執行下列任一操作:
縮短查詢記錄的時間間隔,然後重新執行查詢。舉例來說,如果查詢間隔為 14 天,請將間隔縮短為 7 天,然後執行查詢。
建立連結的 BigQuery 資料集,然後從 BigQuery 介面執行查詢。BigQuery 介面支援的查詢執行時間比 Cloud Logging 介面長。詳情請參閱「建立連結的 BigQuery 資料集」。
查詢具有不同 CMEK 金鑰的值區時,出現錯誤訊息
輸入 SQL 查詢,查詢多個記錄檔 bucket,然後選取「Run query」(執行查詢)。查詢未完成,並顯示下列錯誤訊息:
Queries against buckets with distinct CMEK keys must have a key configured in the LogSettings.
如要解決這個問題,請採取下列任一做法:
- 設定記錄檔 bucket,使用相同的 Cloud Key Management Service (Cloud KMS) 金鑰。
- 如果記錄檔 bucket 位於相同位置,您可以使用預設 Cloud KMS 金鑰,設定記錄檔 bucket 的上層資源 (資料夾或組織)。父項的預設金鑰必須與記錄檔 bucket 位於相同位置。採用這項設定後,Observability Analytics 查詢產生的任何暫存資料,都會由父項的預設金鑰加密。詳情請參閱「Observability Analytics 限制」。
FROM clause must contain exactly one log view 錯誤訊息
您在 Google Cloud 控制台「Observability Analytics」頁面的查詢窗格中輸入 SQL 查詢,但 SQL 剖析器顯示下列錯誤:
FROM clause must contain exactly one log view
如果 FROM 陳述式中指定的資料表無法解析為特定記錄檢視,系統就會回報上述錯誤。
如要解決這項錯誤,請確認資料表名稱的語法正確:
請確認資料表名稱符合 Observability Analytics 命名架構規定的語法。BigQuery 和 Observability Analytics 對資料表名稱有不同的規定。如要查看資料表名稱的必要語法,請檢視預設查詢。
如果記錄檔 bucket 的 Google Cloud 專案 ID、區域、bucket ID 或檢視表 ID 包含半形句號字元
(.),請務必在這些欄位前後加上單反引號(`)。舉例來說,如果 Google Cloud 專案 ID 為
example.com:bluebird,則如要查詢_Default記錄檔 bucket 的_AllLogs檢視表,請使用下列語法指定資料表:SELECT * FROM `example.com:bluebird`.`global`.`_Default`.`_AllLogs`上述查詢假設
_Defaultbucket 位於global區域。
無法儲存查詢
您想儲存目前的查詢,因此執行查詢,然後按一下「儲存」,但「儲存查詢」選項已停用,或您無法完成對話方塊步驟。
失敗原因是組織政策與 Cloud Logging 的預設資源設定衝突。您可以為組織或資料夾,設定 Cloud Logging 的預設資源設定,指定位置。這個位置會儲存您儲存的查詢。不過,如果位置與組織政策衝突,就無法儲存查詢。
如要解決這項問題,請要求貴組織的管理員更新 Cloud Logging 的預設資源設定,讓組織政策允許位置資訊設定。詳情請參閱「設定 Cloud Logging 的預設資源設定」。
如果「Save query」(儲存查詢) 選項已啟用,但您無法完成對話方塊並儲存查詢,請執行下列操作:
- 確認查詢不含語法錯誤。只能儲存有效的查詢。
- 選用:將查詢複製到剪貼簿。
- 請重新載入頁面。
- 如果您已將查詢複製到剪貼簿,請將查詢貼到「Query」(查詢) 窗格中,執行查詢,然後執行儲存作業。
無法建立分析檢視表
您想建立分析檢視表,因此輸入並執行 SQL 查詢,然後按一下「儲存」,但「儲存為分析檢視表」選項已停用。
如要解決這個問題,請確認您的 IAM 角色具備下列權限:
observability.analyticsViews.{get, list, create, update, delete}
任何預先定義的 Cloud Logging 角色都不包含這些權限。如要瞭解必要角色,請參閱「建立及查詢分析檢視表:事前準備」。
無法查詢分析檢視表
您想查詢分析檢視表,但「Observability Analytics」頁面的「Views」(檢視表) 窗格未顯示任何分析檢視表。
如要解決這項失敗問題,請嘗試下列做法:
確認 IAM 角色具備下列權限:
observability.analyticsViews.{get, list}
任何預先定義的 Cloud Logging 角色都不含這些權限。如要瞭解必要角色,請參閱「建立及查詢分析檢視表:事前準備」。
確認 Google Cloud 專案中已有分析檢視表。
無法存取「Observability Analytics」頁面
在 Google Cloud 控制台開啟「Observability Analytics」頁面時,系統顯示權限遭拒的錯誤訊息。
如要取得載入「Observability Analytics」頁面、執行查詢及查看記錄檔所需的權限,請要求管理員在專案中授予您下列 IAM 角色:
您或許也能透過自訂角色或 Logging 預先定義的角色,取得必要權限。
在「Observability Analytics」頁面查看記錄項目及執行查詢所需的權限,與在「Logs Explorer」頁面查看記錄所需的權限相同。如要瞭解查詢使用者定義 bucket 上的檢視表,或查詢 _Default 記錄檔 bucket 的 _AllLogs 檢視表時,需要哪些其他角色,請參閱「Cloud Logging 角色」。
設有位置限制,因此無法建立記錄檔 bucket
您嘗試建立記錄檔 bucket,但作業失敗,並顯示類似下列的訊息:
Constraint `constraints/gcp.resourceLocations` violated for `<CONTAINER>` attempting to change `<BUCKET_NAME>` with location `<LOCATION>`. The location must be in the allowed location list configured by the organization policy administrator.
上述錯誤訊息表示貴組織不支援您為新記錄檔 bucket 選取的位置。
如要解決這項問題,請選取貴組織支援的位置。
無法建立連結的 BigQuery 資料集
您編輯記錄檔 bucket 來建立連結的 BigQuery 資料集,或建立新的記錄檔 bucket 並選取建立連結 BigQuery 資料集的選項,但連結的 BigQuery 資料集並未建立。
如要解決這項錯誤,請要求 Google Cloud 專案的系統管理員授予您包含下列權限的 IAM 角色:
logging.links.create
Logging 管理員 (roles/logging.admin) 和記錄設定寫入者 (roles/logging.configWriter) 角色具備上述權限。
如要瞭解角色和權限,請參閱「使用 IAM 控管存取權」。
無法刪除連結的 BigQuery 資料集
您不再需要連結的 BigQuery 資料集,但刪除該資料集的選項已停用。
如要解決這項錯誤,請要求 Google Cloud 專案的系統管理員授予您包含下列權限的 IAM 角色:
logging.links.delete
Logging 管理員 (roles/logging.admin) 和記錄設定寫入者 (roles/logging.configWriter) 角色具備上述權限。
這項權限可讓您從 Google Cloud 控制台的「Logs Storage」(記錄檔儲存空間) 頁面刪除連結的 BigQuery 資料集。如要進一步瞭解角色和權限,請參閱「使用 IAM 控管存取權」。
Observability Analytics 顯示機密中繼資料警告
「Observability Analytics」頁面會顯示類似下列的訊息:
This SQL query is configured to run on the BigQuery engine using [PROJECT_ID],
and references resources from [RESOURCE, ...]. Sensitive metadata,
including table contents, may be written to [PROJECT_ID].
警告訊息會指出查詢跨越擁有權界線,並讓您有機會在執行前驗證查詢。擁有權界線取決於多項因素,其中一項是查詢所用資源的階層。
這類警告無法避免。
如果「Observability Analytics」頁面顯示警告對話方塊,您可以執行下列任一操作:
如果您知道查詢可以安全執行,且想查看查詢結果,請按一下「Confirm and Run」(確認並執行)。
分析查詢,並視需要捨棄。例如,您可以執行下列操作:
- 檢查查詢。檢查時,請考量查詢的資料、查詢資料集的可能大小,以及查詢引擎。在 BigQuery 服務上執行查詢可能會產生費用。
- 如果有人傳送「Observability Analytics」頁面的連結給您,請確認寄件者是否為可信任的來源。
Google Cloud 提供一些功能,可協助防止資料透過網路釣魚、內部攻擊或外部實體外洩。詳情請參閱「Observability Analytics 的資料安全性」。
查詢連結的 BigQuery 資料集失敗,因為找不到資料集
您對連結的 BigQuery 資料集發出查詢,但指令失敗,並顯示類似「找不到資料集」的錯誤訊息。
如要解決這個問題,請嘗試下列做法:
- 確認資料集名稱的路徑正確無誤。
執行下列
gcloud logging links list指令,確認回應中列出連結的 BigQuery 資料集。如果連結的 BigQuery 資料集未列出,則表示該資料集已孤立。如要解決這個問題,請刪除連結的 BigQuery 資料集。
如果您撤銷 Google Cloud Observability 用於管理資料的服務帳戶 IAM 角色授權,然後刪除記錄檔 bucket 上的連結,專案可能會出現孤立的連結 BigQuery 資料集。在這種情況下,Google Cloud Observability 無法刪除連結的 BigQuery 資料集。
無法將查詢引擎設為 BigQuery
settings「Settings」(設定) 選單中的 BigQuery 選項已停用。
如要啟用這個選項,請確認查詢的記錄檔 bucket 有連結的 BigQuery 資料集。
「在 BigQuery 執行」按鈕已停用
如果「Run on BigQuery」(在 BigQuery 中執行) 按鈕顯示但已停用,表示查詢參照的記錄檔檢視表沒有連結的 BigQuery 資料集。如要在 BigQuery 引擎上執行查詢,請在記錄檔 bucket 上建立連結的 BigQuery 資料集。
沒有監控服務帳戶
您想建立警告政策,監控 SQL 查詢結果。設定步驟需要您將 IAM 角色授予 Monitoring 服務帳戶,但該帳戶不存在。
Monitoring 服務帳戶是由Google Cloud建立及管理,因此稱為服務代理。當您設定需要帳戶的資源或服務時,系統會自動建立帳戶。舉例來說,如果您建立 Pub/Sub 通知管道,該動作可能會導致系統建立 Monitoring 服務帳戶。
如要建立 Monitoring 服務帳戶,並授予 SQL 警告政策所需的權限,請按照下列步驟操作:
建立 Monitoring 服務帳戶。詳情請參閱「建立角色並授予服務代理」。
將下列角色授予 Monitoring 服務帳戶:
- 專案中的 Monitoring 服務代理 (
roles/monitoring.notificationServiceAgent)。 - BigQuery 資料檢視者 (
roles/bigquery.dataViewer) 角色,可存取連結的 BigQuery 資料集。
- 專案中的 Monitoring 服務代理 (
Monitoring 服務帳戶權限遭拒錯誤
您想建立警告政策,監控 SQL 查詢結果。不過,您會看到 PermissionDenied 錯誤,訊息開頭為 Error authenticating service account。
如要解決這項失敗問題,請將下列角色授予 Monitoring 服務帳戶:
- 專案中的 Monitoring 服務代理 (
roles/monitoring.notificationServiceAgent)。 - BigQuery 資料檢視者 (
roles/bigquery.dataViewer) 角色,可存取連結的 BigQuery 資料集。
Observability Analytics 結果中有重複的記錄項目
您執行的查詢會計算或回報重複項目。Logs Explorer 會根據記錄名稱、時間戳記和插入 ID 移除重複項目,因此您預期 Observability Analytics 會在執行查詢前,先簡化記錄項目。
Observability Analytics 不會執行與 Logs Explorer 相同的簡化作業。
如要解決記錄項目重複的問題,請嘗試下列做法:
判斷重複的記錄項目是否具有不同的接收時間戳記值。如果時間戳記不同,表示相同資料已多次寫入 Logging。
如要解決重複寫入的問題,請檢查記錄整合功能是否有錯誤訊息或設定錯誤。
如果 bucket 設為使用 Cloud Key Management Service 金鑰,請確認您未超出配額,且金鑰持續可供存取。如果超出配額或失去金鑰存取權,可能會導致記錄項目重複。
如要解決這些失敗問題,請確保未超出配額,且金鑰可供存取。
修改查詢,移除重複的記錄項目。
舉例來說,假設 JSON 酬載包含
fieldA和fieldB,其中第一個是字串,第二個是數值。另外,假設 JSON 酬載包含標示為server的欄位,其中包含字串。接下來,請考慮下列查詢:SELECT JSON_VALUE(json_payload.fieldA) AS fieldA, SUM(IFNULL(SAFE_CAST(JSON_VALUE(json_payload.fieldB) AS INT64), 0)) AS sum_fieldB FROM `VIEW` WHERE JSON_VALUE(json_payload.server) = "test" GROUP BY fieldA;您可以修改查詢,移除重複的記錄項目。系統會檢查記錄名稱、時間戳記和插入 ID,判斷記錄項目是否重複:
WITH deduplicated AS ( SELECT JSON_VALUE(json_payload.fieldA) AS fieldA, IFNULL(SAFE_CAST(JSON_VALUE(json_payload.fieldB) AS INT64), 0) AS fieldB FROM `VIEW` a WHERE JSON_VALUE(json_payload.server) = "test" QUALIFY ROW_NUMBER() OVER (PARTITION BY a.log_name, a.timestamp, a.insert_id ) = 1 ) SELECT fieldA, SUM(fieldB) AS sum_fieldB FROM deduplicated GROUP BY fieldA;