使用 gcloud CLI 寫入及查詢記錄項目
本文介紹 Cloud Logging 的部分功能,並說明如何執行下列操作:
- 使用 Google Cloud CLI 寫入記錄項目。
- 使用 gcloud CLI 列出記錄項目。
- 使用 Logging API 列出記錄項目。
- 使用記錄檔探索工具查看及查詢記錄項目。
事前準備
您必須擁有已啟用計費功能的 Google Cloud 專案,才能完成此快速入門導覽課程。如果您沒有 Google Cloud 專案,或是專案尚未啟用計費功能,請執行下列步驟: Google Cloud- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- 
      Install the Google Cloud CLI. 
- 
          如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。 
- 
        如要初始化 gcloud CLI,請執行下列指令: gcloud init
- 
  
  
    Create or select a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 - 
        Create a Google Cloud project: gcloud projects create PROJECT_ID Replace PROJECT_IDwith a name for the Google Cloud project you are creating.
- 
        Select the Google Cloud project that you created: gcloud config set project PROJECT_ID Replace PROJECT_IDwith your Google Cloud project name.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
      Install the Google Cloud CLI. 
- 
          如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。 
- 
        如要初始化 gcloud CLI,請執行下列指令: gcloud init
- 
  
  
    Create or select a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 - 
        Create a Google Cloud project: gcloud projects create PROJECT_ID Replace PROJECT_IDwith a name for the Google Cloud project you are creating.
- 
        Select the Google Cloud project that you created: gcloud config set project PROJECT_ID Replace PROJECT_IDwith your Google Cloud project name.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 將含有非結構化資料的記錄項目寫入 - my-test-log記錄,請執行- gcloud logging write指令:- gcloud logging write my-test-log "A simple entry."- 指令完成後,您會看到以下訊息: - Created log entry。
- 將含有結構化資料的記錄項目寫入 - my-test-log記錄:- gcloud logging write --payload-type=json my-test-log '{ "message": "My second entry", "weather": "partly cloudy"}'- 使用結構化資料撰寫記錄項目時,必須加入 - --payload-type=json。如果您省略這個欄位,Logging 會將酬載解讀為非結構化資料。
- 前往 - entries.listAPI 方法的 API 參考資料頁面:
- 設定並執行 API 指令: - 將下列文字中的 PROJECT_ID 替換為: - "resourceNames": [ "projects/PROJECT_ID" ], "filter": "resource.type=global", "orderBy": "timestamp desc" 
- 複製上一個步驟中更新的文字,然後貼到 APIs Explorer 的「Request body」(要求主體) 欄位。 
- 按一下 [Execute] (執行)。 
 - 方法會傳回類似以下的回應: - { "entries": [ { "textPayload": "A simple entry", "insertId": "vd4m1if7h7u1a", "resource": { "type": "global", "labels": { "project_id": "myloggingproject" } }, "timestamp": "2018-11-01T18:39:19.718100792Z", "logName": "projects/myloggingproject/logs/my-test-log", "receiveTimestamp": "2018-11-01T18:39:19.718100792Z" }, { "insertId": "jpj9zjf73t1mn", "jsonPayload": { "message": "My second entry", "weather": "partly cloudy" }, "resource": { "type": "global", "labels": { "project_id": "myloggingproject" } }, "timestamp": "2018-11-01T18:39:31.114507977Z", "logName": "projects/myloggingproject/logs/my-test-log", "receiveTimestamp": "2018-11-01T18:39:31.114507977Z" } ] }
- 
前往 Google Cloud 控制台的「Logs Explorer」頁面: 如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。 確認已在導覽列中選取 Google Cloud 專案 Google Cloud。如有必要,請使用 Google Cloud 專案下拉式清單選取 Google Cloud 專案。 
- 在「Resource」(資源) 選單中,選取「Global」(全域)。 - 如果沒看到「Global」選單選項,或找不到記錄項目,請稍候幾分鐘,然後重新整理頁面。Logging 可能需要幾分鐘的時間才能接收記錄項目。 
- 如要查看記錄項目的詳細資料,請按一下該項目的chevron_right「選單」。 - 第一筆記錄項目的資料儲存在 - textPayload。第二個記錄項目包含儲存在- jsonPayload中的結構化資料。結構化酬載包含- message和- weather索引鍵。
- 
前往 Google Cloud 控制台的「Logs Explorer」頁面: 如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。 
- 在「Resource」(資源) 選單中,選取「Global」(全域)。 
- 在查詢編輯器中,輸入以引號括住的字串 - simple。 記錄顯示畫面只會顯示- A simple entry.記錄項目。
- 查看記錄之後,請移除您新增的查詢字串,然後按一下「Run query」(執行查詢)。兩個記錄項目都會重新顯示在顯示畫面中。 
- 查詢編輯器包含 - resource.type="global"這一行。 輸入下列指令:- jsonPayload.weather:partly
- 按一下 [Run query] (執行查詢)。結果會產生單一記錄項目 - My second entry。
- 若存在打字錯誤與不明的欄位名稱,會導致 gcloud CLI 指令在完成時顯示引數無效的訊息。舉例來說,如果您漏掉 - resource.type中的句點,會導致發生錯誤:- ERROR: (gcloud.logging.read) INVALID_ARGUMENT: Field not found: 'resourcetype'.
- 若未授予 Cloud Logging 必要的存取權限,gcloud CLI 指令會在完成時顯示權限遭拒的訊息。舉例來說,如果使用預設 API 設定來設定 Compute Engine VM 執行個體, - list指令會在完成時顯示權限遭拒的錯誤:- ERROR: (gcloud.logging.read) PERMISSION_DENIED: Request had insufficient authentication scopes.- 如要修正這個問題,請修改 Compute Engine VM 執行個體權限,授予 Cloud Logging 讀取權限,方法如下: - 前往 VM 執行個體的「VM instance details」(VM 執行個體詳細資料) 頁面。 按一下「停止」。這個動作可能需要一兩分鐘的時間才能完成。
- 如要修改設定,請按一下 [Edit] (編輯)。
- 搜尋標頭「Cloud API 存取權範圍」,然後點選「詳細資料」,即可顯示每個 API 的設定。將項目從 Cloud Logging API 變更為「Full」(完整)。然後按一下 [儲存]。
- 如要重新啟動您的 VM 執行個體,請按一下 [Start] (啟動)。經過一段時間後,您的 VM 即準備好可供使用。
 
- 當 API Explorer 無法完成您的指令,或需要其他授權時,其會顯示一則訊息或一個錯誤代碼: - 200 回應碼且沒有項目:如果顯示 nextPageToken訊息,表示 API Explorer 沒有時間完成搜尋。將pageToken新增至您的要求,將值設為與nextPageToken索引指定的值完全相同,接著重試指令。
- 400 回應碼:查詢值無效。舉例來說,如果您將 global拼錯為gloobal,則訊息會是Unsupported resource type: gloobal。
- 404 回應碼:專案 ID 無效。檢查專案 ID 的拼寫。
- 系統可能會要求您登入Google Cloud 專案,並允許 API Explorer 存取您的帳戶。
 
- 200 回應碼且沒有項目:如果顯示 
- (選用) 如要刪除您建立的記錄項目,請執行下列 - gcloud指令:- gcloud logging logs delete my-test-log - 如果您不刪除記錄項目,這些項目將會到期並遭到移除。 如需保留資訊,請參閱「配額與限制」一文。 
- 如要進一步瞭解 Logging 指令列介面,請參閱 gcloud logging指令群組的參考頁面。
- 如需 Logging API 的說明文件,請參閱 Cloud Logging API。
- 如要進一步瞭解記錄檔探索工具,請參閱「使用記錄檔探索工具」。
- 如要瞭解如何在 Logging 中收集來自 VM 執行個體的記錄項目,請參閱「Google Cloud Observability 代理程式」。
使用 gcloud CLI 寫入記錄項目
Logging 可支援包含結構化和非結構化資料的記錄項目。結構化資料包含 JSON 資料結構;例如 {"weather": "partly cloudy"}。非結構化資料是字元字串;例如 "A simple entry"。
在接下來的步驟中,您將使用 gcloud CLI 寫入含有非結構化資料的記錄項目,以及含有結構化資料的記錄項目。gcloud CLI 提供 Cloud Logging API 的指令列介面。
如果記錄 my-test-log 不存在,則 Logging 會在收到記錄項目時建立記錄。
使用 gcloud CLI 列出記錄項目
您可以從 Logging 擷取記錄項目,並使用 gcloud CLI 顯示這些項目。舉例來說,如要擷取並顯示資源類型為 global 的記錄項目,請執行下列指令:
gcloud logging read "resource.type=global"
指令會傳回類似以下的結果:
---
insertId: jpj9zjf73t1mn
jsonPayload:
  message: My second entry
  weather: partly cloudy
logName: projects/myloggingproject/logs/my-test-log
receiveTimestamp: '2018-11-01T18:39:31.114507977Z'
resource:
  labels:
    project_id: myloggingproject
  type: global
timestamp: '2018-11-01T18:39:31.114507977Z'
---
insertId: vd4m1if7h7u1a
logName: projects/myloggingproject/logs/my-test-log
receiveTimestamp: '2018-11-01T18:39:19.718100792Z'
resource:
  labels:
    project_id: myloggingproject
  type: global
textPayload: A simple entry
timestamp: '2018-11-01T18:39:19.718100792Z'
如要瞭解如何讀取記錄,請參閱 gcloud logging read 參考說明文件。
使用 API Explorer 列出記錄項目
如要在不編寫任何程式碼的情況下執行 Logging API 方法,請參閱「使用 API Explorer」。如要從 Logging 讀取記錄項目清單,請按照下列步驟操作:
在記錄檔探索工具中查看記錄項目
如要在 Google Cloud 控制台中查看記錄項目,可以使用記錄檔探索工具。大多數 Google Cloud 專案都會儲存大量記錄,您可以撰寫查詢來選取特定記錄項目。
如要使用記錄檔探索工具查看您寫入的記錄項目,請按照下列步驟操作:
如要瞭解記錄項目的資料格式,請參閱 LogEntry 類型。
在記錄檔探索工具中查詢記錄項目
您可以使用查詢編輯器查詢記錄項目,並依索引與項目值篩選具有結構化記錄的記錄項目。舉例來說,如要顯示所有含有文字 simple 的記錄項目,請執行下列操作:
如要顯示具有結構化資料的所有記錄項目,且結構化資料中已有 weather 索引,同時索引的 value 欄位包含 partly,請執行下列步驟:
記錄檔探索工具也提供已儲存、建議和最近的查詢。 如要進一步瞭解查詢,請參閱「在記錄檔探索工具中建構查詢」。
如需查詢範例,請參閱「使用記錄檔探索工具的查詢範例」。
疑難排解
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取本頁面所用資源的費用,請刪除含有這些資源的 Google Cloud 專案。