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