使用 gcloud CLI 寫入及查詢記錄項目

本文介紹 Cloud Logging 的部分功能,並說明如何執行下列操作:

  • 使用 Google Cloud CLI 寫入記錄項目。
  • 使用 gcloud CLI 列出記錄項目。
  • 使用 Logging API 列出記錄項目。
  • 使用記錄檔探索工具查看及查詢記錄項目。

事前準備

您必須擁有已啟用計費功能的 Trusted Cloud 專案,才能完成此快速入門導覽課程。如果您沒有 Trusted Cloud 專案,或是專案尚未啟用計費功能,請執行下列步驟: Trusted Cloud

  1. Install the Google Cloud CLI.

  2. 設定 gcloud CLI 以使用您的聯合身分。

    詳情請參閱「 使用聯合身分登入 gcloud CLI」。

  3. 如要初始化 gcloud CLI,請執行下列指令:

    gcloud init
  4. Create or select a Trusted Cloud project.

    • Create a Trusted Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Trusted Cloud project you are creating.

    • Select the Trusted Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Trusted Cloud project name.

  5. Verify that billing is enabled for your Trusted Cloud project.

  6. 使用 gcloud CLI 寫入記錄項目

    Logging 可支援包含結構化和非結構化資料的記錄項目。結構化資料包含 JSON 資料結構;例如 {"weather": "partly cloudy"}。非結構化資料是字元字串;例如 "A simple entry"

    在接下來的步驟中,您將使用 gcloud CLI 寫入含有非結構化資料的記錄項目,以及含有結構化資料的記錄項目。gcloud CLI 提供 Cloud Logging API 的指令列介面。

    1. 將含有非結構化資料的記錄項目寫入 my-test-log 記錄,請執行 gcloud logging write 指令:

      gcloud logging write my-test-log "A simple entry."
      

      指令完成後,您會看到以下訊息:Created log entry

    2. 將包含結構化資料的記錄項目寫入 my-test-log 記錄:

      gcloud logging write --payload-type=json my-test-log '{ "message": "My second entry", "weather": "partly cloudy"}'
      

      使用結構化資料撰寫記錄項目時,必須加入 --payload-type=json。如果您省略這個欄位,Logging 會將酬載解讀為非結構化資料。

    如果記錄 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 參考說明文件。

    在記錄檔探索工具中查看記錄項目

    如要在 Trusted Cloud 控制台中查看記錄項目,可以使用記錄檔探索工具。大多數 Trusted Cloud 專案都會儲存大量記錄,您可以撰寫查詢來選取特定記錄項目。

    如要使用記錄檔探索工具查看您寫入的記錄項目,請按照下列步驟操作:

    1. 前往 Trusted Cloud 控制台的「Logs Explorer」頁面:

      前往「Logs Explorer」(記錄檔探索工具)

      如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果

      確認已在導覽列中選取 Trusted Cloud 專案 Trusted Cloud by S3NS。如有必要,請使用 Trusted Cloud 專案下拉式清單選取 Trusted Cloud 專案。

    2. 在「Resource」(資源) 選單中,選取「Global」(全域)

      如果沒看到「Global」選單選項,或找不到記錄項目,請稍候幾分鐘,然後重新整理頁面。Logging 可能需要幾分鐘的時間才能接收記錄項目。

    3. 如要查看記錄項目的詳細資料,請按一下該項目的「選單」

      第一筆記錄項目的資料儲存在 textPayload。第二個記錄項目包含儲存在 jsonPayload 中的結構化資料。結構化酬載包含 messageweather 索引鍵。

    如要瞭解記錄項目的資料格式,請參閱 LogEntry 類型

    在記錄檔探索工具中查詢記錄項目

    您可以使用查詢編輯器查詢記錄項目,並依索引與項目值篩選具有結構化記錄的記錄項目。舉例來說,如要顯示所有含有文字 simple 的記錄項目,請執行下列操作:

    1. 前往 Trusted Cloud 控制台的「Logs Explorer」頁面:

      前往「Logs Explorer」(記錄檔探索工具)

      如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果

    2. 在「Resource」(資源) 選單中,選取「Global」(全域)

    3. 在查詢編輯器中,輸入以引號括住的字串 simple。 記錄顯示畫面只會顯示 A simple entry. 記錄項目。

    4. 查看記錄之後,請移除您新增的查詢字串,然後按一下「Run query」(執行查詢)。兩個記錄項目都會重新顯示在顯示畫面中。

    如要顯示具有結構化資料的所有記錄項目,且結構化資料中已有 weather 索引,同時索引的 value 欄位包含 partly,請執行下列步驟:

    1. 查詢編輯器包含 resource.type="global" 這一行。 輸入下列指令:

      jsonPayload.weather:partly
      
    2. 按一下 [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 讀取權限,方法如下:

      1. 前往 VM 執行個體的「VM instance details」(VM 執行個體詳細資料) 頁面。 按一下「停止」。這個動作可能需要一兩分鐘的時間才能完成。
      2. 如要修改設定,請按一下 [Edit] (編輯)
      3. 搜尋標頭「Cloud API 存取權範圍」,然後點選「詳細資料」,即可顯示每個 API 的設定。將項目從 Cloud Logging API 變更為「Full」(完整)。然後按一下 [儲存]
      4. 如要重新啟動您的 VM 執行個體,請按一下 [Start] (啟動)。經過一段時間後,您的 VM 即準備好可供使用。

    清除所用資源

    如要避免系統向您的 Trusted Cloud 帳戶收取本頁面所用資源的費用,請刪除含有這些資源的 Trusted Cloud 專案。

    1. (選用) 如要刪除您建立的記錄項目,請執行下列gcloud指令:

      gcloud logging logs delete my-test-log
      

      如果您不刪除記錄項目,這些項目將會到期並遭到移除。 如需保留資訊,請參閱「配額與限制」一文。

    後續步驟