使用 Python 指令碼撰寫及查詢記錄項目

本快速入門導覽課程介紹一些 Cloud Logging 的功能,並說明如何執行下列操作:

  • 使用 Python 指令碼寫入記錄項目。
  • 使用 Python 指令碼查看記錄項目。
  • 使用 Python 指令碼刪除記錄項目。
  • 將記錄檔轉送至 Cloud Storage bucket。

記錄功能可將記錄項目傳送至下列目的地:

  • Cloud Storage 值區
  • BigQuery 資料集
  • Pub/Sub
  • Logging 值區
  • Google Cloud 專案

事前準備

您必須擁有已啟用計費功能的 Google Cloud 專案,才能完成此快速入門導覽課程。如果您沒有 Google Cloud 專案,或是專案尚未啟用計費功能,請執行下列步驟: Google Cloud
  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. 本快速入門導覽課程需要使用 Cloud Logging 和 Cloud Storage。使用這些資源會產生費用。完成本快速入門導覽課程後,您可以刪除已建立的資源,避免繼續計費。詳情請參閱本頁的「清除」一節。

開始使用

您可以使用 Cloud Shell 環境或一般 Linux 環境完成此項快速入門導覽課程。Cloud Shell 已預先安裝 Python。

Cloud Shell

  1. 開啟 Cloud Shell 並驗證專案設定: Google Cloud

    1. 在 Google Cloud 控制台中,按一下「啟用 Cloud Shell」

      Cloud Shell 隨即會開啟視窗並顯示歡迎訊息。

    2. 歡迎訊息會回應已設定的 Google Cloud 專案 ID。如果這不是您要使用的 Google Cloud 專案,請在將 PROJECT_ID 取代為專案 ID 後執行下列指令:

      gcloud config set project PROJECT_ID
      

Linux

  1. 確認已安裝及設定 Python。 如要瞭解如何準備 Python 開發用的電腦,請參閱「設定 Python 開發環境」。

  2. 安裝 Cloud Logging 用戶端程式庫:

    pip install --upgrade google-cloud-logging
    
  3. 為 Google Cloud 專案設定 Identity and Access Management 權限。請在下列步驟中為Google Cloud 專案建立服務帳戶,然後產生及下載檔案至 Linux 工作站。

    1. 前往 Google Cloud 控制台的「Service Accounts」(服務帳戶) 頁面:

      前往「Service Accounts」(服務帳戶)

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

    2. 選取快速入門導覽課程專案 Google Cloud ,然後按一下「建立服務帳戶」

      • 輸入帳戶名稱。
      • 輸入帳戶說明。
      • 按一下「建立並繼續」
    3. 按一下「Select a role」(選取角色) 欄位,然後選取「Logging Admin」(記錄管理員)

    4. 按一下「Done」(完成),即完成建立服務帳戶。

    5. 建立金鑰檔案,並下載至您的工作站:

      • 如果是服務帳戶,請按一下「更多選項」,然後選取「管理金鑰」
      • 在「金鑰」窗格中,按一下「新增金鑰」
      • 按一下「建立新的金鑰」
      • 在「金鑰類型」中選取「JSON」,然後按一下「建立」。 稍後視窗會顯示類似以下的訊息:

        私密金鑰已儲存至您的電腦。

  4. 請在 Linux 工作站將環境變數 GOOGLE_APPLICATION_CREDENTIALS 設定為您的金鑰檔案路徑,以提供驗證憑證至應用程式。例如:

     export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/FILE_NAME.json"
    

    此環境變數僅適用於您目前的殼層工作階段,所以如果您開啟新的工作階段,請再次設定變數。

複製原始碼

如要為本快速入門導覽課程設定 Cloud Shell,請執行下列操作:

  1. 複製 GitHub 專案 python-logging

      git clone https://github.com/googleapis/python-logging
    

    目錄 samples/snippets 包含本快速入門導覽課程使用的兩個指令碼:

    • snippets.py 可讓您管理記錄中的項目。
    • export.py 可讓您管理記錄匯出。
  2. 切換至 snippets 目錄:

      cd python-logging/samples/snippets
    

寫入記錄項目

snippets.py 指令碼使用 Python 用戶端程式庫,將記錄項目寫入至 Logging。如果在指令列上指定 write 選項,指令碼會寫入以下記錄項目:

  • 具有非結構化資料且未指定任何嚴重性等級的項目。
  • 具有非結構化資料且嚴重性等級為 ERROR 的項目。
  • 具有 JSON 結構化資料且未指定任何嚴重性等級的項目。

如要將新記錄項目寫入至記錄 my-log,請以 write 選項執行 snippets.py 指令碼:

python snippets.py my-log write

查看記錄項目

如需查看 Cloud Shell 中的記錄項目,請以 list 選項執行 snippets.py 指令碼:

python snippets.py my-log list

指令執行完畢並出現以下結果:

    Listing entries for logger my-log:
    * 2018-11-15T16:05:35.548471+00:00: Hello, world!
    * 2018-11-15T16:05:35.647190+00:00: Goodbye, world!
    * 2018-11-15T16:05:35.726315+00:00: {u'favorite_color': u'Blue', u'quest': u'Find the Holy Grail', u'name': u'King Arthur'}

如果結果沒有顯示任何項目,請重試指令。Logging 需要一些時間接收及處理記錄項目。

您也可以使用記錄探索工具查看記錄項目。詳情請參閱「使用記錄檔探索工具查看記錄檔」。

刪除記錄項目

如要刪除記錄 my-log 中的記錄項目,請以 delete 選項執行 snippets.py 指令碼:

python snippets.py my-log delete

指令執行完畢並出現以下結果:

Deleted all logging entries for my-log

路徑記錄

在本節中,執行以下操作:

  • 建立 Cloud Storage 值區做為您的資料的目的地。
  • 建立將新記錄項目複製到目的地的接收器。
  • 更新您的 Cloud Storage 值區權限。
  • 將記錄項目寫入 Logging。
  • 視需要驗證 Cloud Storage 值區的內容。

建立目的地

本快速入門導覽課程的匯出目的地是 Cloud Storage bucket。如要建立 Cloud Storage bucket,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Bucket」頁面:

    前往「Buckets」(值區)

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

  2. 點選「建立值區」
  3. 輸入 bucket 的名稱。
  4. 在「位置類型」部分,選取「區域」,系統會選取延遲時間最短的 bucket 位置。
  5. 在「預設儲存空間級別」部分,選取「Standard」
  6. 在「Access control」(存取控管) 的部分選取「Fine-grained」(精細)
  7. 在「保護工具」部分選取「無」,然後按一下「建立」

本快速入門導覽課程使用的 Cloud Storage 值區名稱為myloggingproject-1

建立接收器

接收器是一種規則,用於判斷 Logging 是否將新抵達的記錄項目轉送至目的地。接收器有下列三種屬性:

  • 名稱
  • 目的地
  • 篩選器

如要進一步瞭解接收器,請參閱「接收器」。

如果新抵達的記錄項目符合查詢條件,則會將該記錄項目傳送至目的地。

export.py 指令碼使用 Python 用戶端程式庫建立、列出、修改及刪除接收器。如要建立接收器 mysink,將嚴重性等級至少為 INFO 的所有記錄項目匯出至 Cloud Storage bucket myloggingproject-1,請執行下列指令:

python export.py create mysink myloggingproject-1 "severity>=INFO"

如要查看接收器,請以 list 選項執行 export.py 指令碼:

python export.py list

指令碼會傳回下列內容:

    mysink: severity>=INFO -> storage.googleapis.com/myloggingproject-1

更新目的地權限

使用 export.py 指令碼建立接收器時,不會修改目的地 (在此是指 Cloud Storage 值區) 權限。您必須變更 Cloud Storage 值區的權限設定,才能為接收器授予寫入權限。如要瞭解服務帳戶、存取範圍和 Identity and Access Management 角色,請參閱「服務帳戶」。

如要更新 Cloud Storage 值區權限:

  1. 識別接收器的「Writer Identity」(寫入者身分)

    1. 前往 Google Cloud 控制台的「記錄檔路由器」頁面:

      前往「記錄檔路由器」

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

      畫面上會顯示水槽的摘要表格。

    2. 在表格中找出接收器,選取「選單」,然後選取「查看接收器詳細資料」

    3. 將寫手身分複製到剪貼簿。

  2. 前往 Google Cloud 控制台的「Bucket」頁面:

    前往「Buckets」(值區)

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

  3. 如要開啟詳細資料視圖,請按值區名稱。

  4. 選取「權限」,然後按一下「授予存取權」

  5. 將寫入者身分貼到「New principals」(新增主體) 方塊。從寫手身分地址中移除 serviceAccount: 前置字元。

  6. 將「角色」設為 Storage Object Creator,然後按一下「儲存」

詳情請參閱「設定目的地權限」。

驗證接收器

如要驗證接收器及目的地是否已正確設定,請執行下列操作:

  1. 將新記錄項目寫入至 my-log 記錄:

    python snippets.py my-log write
    
  2. 查看 Cloud Storage bucket 的內容:

    1. 前往 Google Cloud 控制台的「Bucket」頁面:

      前往「Buckets」(值區)

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

    2. 如要開啟詳細資料視圖,請按值區名稱。詳細資料視圖會列出包含資料的資料夾。如果值區中沒有任何資料,則會顯示以下訊息:

      There are no live objects in this bucket.

      延遲抵達的記錄項目所述,可能需要 2 或 3 個小時才會看到第一批項目出現在目的地,或收到設定錯誤通知。

      值區收到資料後,詳細資料視圖會顯示類似下方的結果:

      值區內容詳細資料檢視畫面。

    3. 每個資料夾中的資料都會整理為一系列的資料夾,頂層資料夾會標示記錄名稱,然後依序標示年、月和日。如要查看接收器匯出的資料,請點選 my-log 資料夾名稱,接著繼續點選年、月和日子資料夾,直到抵達以 json 做為結尾的檔案:

      bucket 內容子資料夾檢視畫面。

    4. JSON 檔案包含已匯出至 Cloud Storage 值區的記錄項目。按一下 JSON 檔案名稱,即可查看內容。內容類似於:

       {"insertId":"yf1cshfoivz48",
       "logName":"projects/loggingproject-222616/logs/my-log",
       "receiveTimestamp":"2018-11-15T23:06:14.738729911Z",
       "resource":{"labels":{"project_id":"loggingproject-222616"},"type":"global"},
       "severity":"ERROR",
       "textPayload":"Goodbye, world!",
       "timestamp":"2018-11-15T23:06:14.738729911Z"}
      

      由於 ERROR 的嚴重性等級大於 INFO 的嚴重性等級,包含 '"Goodbye, world!"' 字串的記錄項目會匯出至接收器目的地。其他已寫入的記錄項目並未匯出至目的地,因為其嚴重性等級已設為預設值,而預設的嚴重性等級小於 INFO

疑難排解

有幾個原因可能造成 Cloud Storage 值區沒有任何物件:

  • 值區尚未收到資料。 可能需要 2 或 3 小時才會看到第一批項目出現在目的地,或收到設定錯誤通知。詳情請參閱「延遲抵達的記錄項目」。

  • 發生設定錯誤。在這種情況下,您會收到類似下列主旨行的電子郵件訊息:

     [ACTION REQUIRED] Logging export config error in myloggingproject.

    電子郵件內文的內容會提供有關設定問題的說明。 舉例來說,如果您沒有更新目的地權限,電子郵件就會列出以下錯誤代碼:

     bucket_permission_denied

    如要修正這個特定狀況,請參閱本頁的「更新目的地權限」。

  • 建立接收器後,系統未寫入任何記錄項目。接收器僅適用於新抵達的記錄項目。如要修正這種情況,請寫入新的記錄項目:

     python snippets.py my-log write
    

清除所用資源

如要避免系統向您的 Google Cloud 帳戶收取本頁所用資源的費用,請按照下列步驟操作。

  1. (選用) 刪除您建立的記錄項目。如果您不刪除記錄項目,這些項目將會到期並遭到移除。 請參閱「配額與限制」。

    如要刪除記錄 my-log 中的所有記錄項目,請執行以下指令:

     python snippets.py my-log delete
    
  2. 刪除專案或快速入門導覽課程資源。 Google Cloud

    • 如要刪除專案,請從控制台的「Project Info」(專案資訊) Google Cloud Google Cloud 窗格中按一下「Go to project settings」(前往專案設定),然後按一下「Shut down」(關閉)

    • 如要刪除快速入門導覽課程資源:

      1. 執行以下指令以刪除接收器:

        python export.py delete mysink
        
      2. 刪除 Cloud Storage 值區。前往 Google Cloud 控制台,然後按一下「Storage」>「Buckets」。勾選您的值區名稱旁的方塊,然後按一下「刪除」

後續步驟