本文說明如何解決使用 Google Cloud 控制台的「Log Analytics」頁面時可能發生的錯誤。
錯誤訊息
本節將說明您可能會看到的錯誤訊息,以及如何解決相應的錯誤狀態。
No completion signal within allotted timeframe
錯誤訊息
輸入 SQL 查詢並選取「Run query」(執行查詢)。查詢未完成,並顯示下列錯誤訊息:
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 查詢,然後選取「Run query」。查詢未完成,並顯示下列錯誤訊息:
Queries against buckets with distinct CMEK keys must have a key configured in the LogSettings.
如要解決這個情況,請採取下列任一做法:
- 設定記錄資料夾,以便使用相同的 Cloud Key Management Service (Cloud KMS) 金鑰。
- 如果記錄值區位於相同位置,您可以設定資料夾或組織,做為記錄值區的父項資源,並使用預設的 Cloud KMS 金鑰。父項的預設鍵必須與記錄資料夾位於相同位置。在這種設定下,父項的預設鍵會對 Log Analytics 查詢產生的任何暫時性資料進行加密。詳情請參閱「Log Analytics 限制」。
FROM 子句中只能包含一個檢視畫面錯誤訊息
您在 Google Cloud 控制台的「Log Analytics」頁面查詢窗格中輸入 SQL 查詢,但 SQL 剖析器會顯示下列錯誤:
FROM clause must contain exactly one log view
如果 FROM
陳述式中指定的資料表無法解析為特定記錄檢視畫面,系統就會回報上述錯誤。
如要解決這個錯誤,請確認資料表名稱的語法正確無誤:
請確認資料表名稱符合 Log Analytics 命名規則的語法。BigQuery 和 Log Analytics 對資料表名稱有不同的規定。您可以查看預設查詢,找出資料表名稱的必要語法。
如果記錄值區的 Google Cloud 專案 ID、區域、值區 ID 或檢視 ID 包含半形句點字元
(.)
,請確認每個欄位都以單引號(`)
包裝。舉例來說,如果 Google Cloud 專案 ID 為
example.com:bluebird
,則如要查詢_Default
記錄值區的_AllLogs
檢視畫面,請使用下列語法指定資料表:SELECT * FROM `example.com:bluebird`.`global`.`_Default`.`_AllLogs`
先前的查詢假設
_Default
儲存桶位於global
區域。
無法儲存查詢
您想儲存目前的查詢,因此執行查詢,然後按一下「儲存」,但「儲存查詢」選項已停用,或您無法完成對話方塊中的步驟。
當「儲存查詢」選項停用時,機構或資料夾的預設資源設定會定義機構政策不允許的位置。如要解決這個失敗問題,請機構管理員在預設資源設定中定義位置,與機構政策允許的位置相符。詳情請參閱「調整機構和資料夾的預設設定」。
如果已啟用「Save query」選項,但您無法完成對話方塊並儲存查詢,請執行下列操作:
- 確認查詢不含語法錯誤。你只能儲存有效的查詢。
- 選用:將查詢複製到剪貼簿。
- 請重新載入頁面。
- 如果您將查詢複製到剪貼簿,請將查詢貼到「Query」窗格,執行查詢,然後執行儲存作業。
無法建立數據分析檢視
您想建立數據分析檢視畫面,因此輸入並執行 SQL 查詢,然後點選「儲存」,但「儲存為數據分析檢視畫面」選項已停用。
如要解決這個問題,請確認您的 IAM 角色具備下列權限:
observability.analyticsViews.{get, list, create, update, delete}
這些權限並未包含在任何預先定義的 Cloud Logging 角色中。如要瞭解必要角色,請參閱「建立及查詢分析檢視表:事前準備」一文。
無法查詢 Analytics 檢視
您想查詢數據分析檢視畫面,但「Log Analytics」頁面中的「檢視畫面」窗格未顯示任何數據分析檢視畫面。
如要解決這項失敗問題,請嘗試下列操作:
請確認您的 IAM 角色具備下列權限:
observability.analyticsViews.{get, list}
這些權限並未包含在任何預先定義的 Cloud Logging 角色中。如要瞭解必要角色,請參閱「建立及查詢分析檢視表:事前準備」一文。
確認 Google Cloud 專案中已存在數據分析檢視。
無法存取「記錄檔分析」頁面
您在 Google Cloud 控制台中開啟「Log Analytics」頁面,系統會顯示權限遭拒的錯誤訊息。
如要取得載入 記錄檔分析頁面、執行查詢及查看記錄所需的權限,請要求管理員為您授予專案的下列 IAM 角色:
在「Log Analytics」頁面查看記錄項目和執行查詢所需的權限,與在「Logs Explorer」頁面查看記錄所需的權限相同。如要瞭解需要具備哪些其他角色,才能查詢使用者定義值區的檢視畫面,或查詢 _Default
記錄值區的 _AllLogs
檢視畫面,請參閱「Cloud Logging 角色」一文。
升級記錄檔值區以使用 Log Analytics 失敗
您建立記錄檔值區並選取使用記錄檔分析的選項,或是升級現有記錄檔值區以便使用記錄檔分析。升級失敗,並顯示類似以下的錯誤狀態:
Failed precondition (HTTP 400): Constraint "my-constraint" violated for PROJECT_ID with location global.
上一個錯誤訊息表示貴機構已設定機構政策,限制可使用的地區。可升級至使用記錄檔分析的記錄檔值區必須使用 global
區域。如果您可以移除限制 global
區域使用情形的機構政策,就可以升級記錄值區。否則,您無法升級記錄檔值區。
建立連結的 BigQuery 資料集失敗
您編輯記錄檔值區來建立已連結的 BigQuery 資料集,或是建立新的記錄檔值區並選取建立已連結資料集的選項,但系統並未建立已連結資料集。
如要解決這項錯誤,請要求 Google Cloud 專案的系統管理員授予您具備下列權限的 IAM 角色:
logging.links.create
上述權限包含在「Logging 管理員」(roles/logging.admin
) 和「記錄檔設定寫入者」(roles/logging.configWriter
) 角色中。
如要進一步瞭解角色和權限,請參閱「使用身分與存取權管理功能控管存取權」。
刪除已連結的 BigQuery 資料集失敗
您不再需要連結的資料集,但刪除該資料集的選項已停用。
如要解決這項錯誤,請要求 Google Cloud 專案的系統管理員授予您具備下列權限的 IAM 角色:
logging.links.delete
上述權限包含在「Logging 管理員」(roles/logging.admin
) 和「記錄檔設定寫入者」(roles/logging.configWriter
) 角色中。
這項權限可讓您從 Google Cloud 控制台的「記錄儲存空間」頁面刪除已連結的資料集。如要進一步瞭解角色和權限,請參閱「使用身分與存取權管理功能控管存取權」。
缺少查詢引擎設定按鈕
如果「執行查詢」按鈕旁未顯示「設定」按鈕,表示 Google Cloud 專案未啟用預留的 BigQuery 插槽。settings如要啟用 settings「設定」按鈕,請為專案設定預留的 BigQuery 時段。
「Run on BigQuery」按鈕已停用
如果「在 BigQuery 上執行」按鈕顯示但已停用,表示查詢參照的記錄檢視沒有連結的資料集。如要在 BigQuery 預留時段執行查詢,請在記錄檢視畫面中建立連結的 BigQuery 資料集。
沒有監控服務帳戶
您想建立警告政策,以便監控 SQL 查詢的結果。設定步驟要求您為監控服務帳戶授予 IAM 角色,但該帳戶不存在。
監控服務帳戶稱為服務代理人,因為它是由Google Cloud建立及管理。當您設定需要帳戶的資源或服務時,系統會自動建立帳戶。舉例來說,如果您建立 Pub/Sub 通知管道,這項操作可能會導致監控服務帳戶建立。
如要建立監控服務帳戶,並授予該帳戶以 SQL 為基礎的快訊政策所需的權限,請按照下列步驟操作:
建立監控服務帳戶。詳情請參閱「為服務專員建立及授予角色」。
將下列角色授予 Monitoring Service 帳戶:
監控服務帳戶權限遭拒錯誤
您想建立警告政策,以便監控 SQL 查詢的結果。但您會看到 PermissionDenied
錯誤,訊息開頭為 Error authenticating service account
。
如要解決這項失敗問題,請將下列角色授予 Monitoring Service 帳戶:
- 在專案中使用監控服務代理程式 (
roles/monitoring.notificationServiceAgent
)。 - 在已連結資料集中使用 BigQuery 資料檢視器 (
roles/bigquery.dataViewer
)。
記錄檔分析結果中出現重複的記錄項目
您執行的查詢會計算或回報重複項目。由於 Logs Explorer 會根據記錄檔名稱、時間戳記和插入 ID 移除重複的項目,因此您預期 Log Analytics 會在執行查詢前移除重複的記錄檔項目。
記錄檔分析不會執行 Logs Explorer 所執行的簡化作業類型。
如要解決重複的記錄項目,請嘗試下列操作:
判斷重複的記錄項目是否有不同的接收時間戳記值。如果時間戳記不同,表示相同資料已寫入記錄多次。
如要解決重複寫入問題,請檢查記錄整合是否有錯誤訊息或設定錯誤。
如果值區已設定為使用 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 `TABLE_NAME_OF_LOG_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 `TABLE_NAME_OF_LOG_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;