使用 BigQuery 以及 Stackdriver 來分析 BigQuery 用量

Ray Lee | 李宗叡
Learn or Die
Published in
8 min readOct 26, 2019

My Blog

Qwiklab

概述

Stackdriver Logging 讓你可以在 Google Cloud Platform 的服務上,針對紀錄作儲存,分析,搜尋,監控,以及警告還有事件,包含 BigQuery 服務。 Stackdriver 也提供匯出特定記錄到接收器的功能,例如 Cloud Pub/Sub, Cloud Storage, 或 BigQuery

在本教程中,你將在 Stackdriver 中檢視 BigQuery 的紀錄,設定接收器來匯出記錄到 BigQuery, 然後使用 SQL 來分析這些紀錄

前言

本篇主要是利用 Google 的 Qwiklab 平台學習的同時,做的一份學習筆記 為避免翻譯誤解,專業術語在本篇將不會被翻譯,保留原文

設定及要求

Qwiklabs setup

在你按下 Start Lab 按鈕之前

詳讀所有的教學。Labs 是有時間限制的,而且你不可以停止時間倒數。倒數計時器在你按下 Start Lab 按鈕後開始倒數,上面顯示的時間為你還能使用 Cloud 資源的時間。

Quiklabs 的手把手環境,讓你可以在真實環境中來操作進行 Quiclabs 上提供的課程,而不是在一個模擬或是展示的環境。我們透過提供你一個全新的、暫時的帳號密碼,在計時器歸零之前,你可以用來登入並存取 Google Cloud Platform。

你需要什麼?

要完成這個 lab ,你需要:

  • 一個一般的網路瀏覽器(推薦 Chrome)
  • 完成這個 lab 的時間

備註: 如果你已經有你自己的個人 GCP 帳號或專案,請不要使用在這一個 lab

現在你已經開始你的 lab, 你將會登入 Google Cloud Shell 主控台,然後開啟命令列工具

如何開始你的 lab ,然後登入 Console?

  • 按下 Start Lab 按鈕。如果你需要付費,會有一個彈出視窗來讓你選擇付費的方式。在左方你會看到一個面板,上面有暫時的帳號密碼,你必須使用這些帳號密碼在此次 lab
  • 複製 username , 然後點擊 Open Google Console。 Lab 會開啟另外一個視窗,顯示選擇帳號的頁面

tip: 開啟一個全新的視窗,然後跟原本的頁面並排

  • 選擇帳號頁面, 點擊 Use Another Account
  • 登入頁面開啟,貼上之前複製的 username 以及 password ,然後貼上

重要:必須使用之前於 Connection Details 面板 取得的帳號密碼,不要使用你自己的 Qwiklabs 帳號密碼。 如果你有自己的 GCP 帳號,請不要用在這裡(避免產生費用)

  • 點擊並通過接下來的頁面:
  • 接受terms以及conditions
  • 不要增加recovery optoinstwo factor authentication (因為這只是一個臨時帳號)
  • 不要註冊免費體驗

稍待一些時候, GCP 控制台將會在這個視窗開啟。

注意:按下左上方位於Google Cloud Platform 隔壁的 Navigation menu ,你可以瀏覽選單,裡面有一系列的 GCP 產品以及服務

啟動 Google Cloud Shell

Google Cloud Shell 是載有開發工具的虛擬機器。它提供了5GB的 home 資料夾,並且運行在 Google Cloud 上。 Google Cloud Shell 讓你可以利用 command-line 存取 GCP 資源

  • GCP 控制台 ,右上的工具列,點擊 Open Cloud Shell 按鈕
  • 在打開的對話框裡,按下 START CLOUD SHELL:

你可以立即按下 START CLOUD SHELL 當對話視窗打開。

連結並提供環境會需要一點時間。當你連結成功,這代表你已成功獲得授權,且此專案已被設為你的專案ID,例如:

gcloudGoogle Cloud Platform 的 command-line 工具,他已事先被安裝在 Cloud Shell 並且支援自動補齊

使用這個 command ,你可以列出有效帳戶名稱:

輸出:

範例輸出:

你可以使用以下 command 來列出專案 ID

輸出:

範例輸出:

gcloud 的完整文件可以參閱 Google Cloud gcloud Overview

打開 BigQuery

打開 Big Query 主控台

在 Google Cloud Console, 選擇 Navigation menu > BigQuery

Welcome to BigQuery in the Cloud Console 訊息視窗彈出。這個訊息視窗提供快速導覽的連結,以及一些更新訊息

點擊 Done

BigQuery 主控台開啟

建立資料組

  • Resources 區塊中,點擊 qwiklabs-gcp- 開頭的資源
  • 點擊 CREATE DATASET
  • 設定 Dataset IDbq_logs
  • 點擊 Create dataset

執行一個查詢

首先,執行一個簡單的查詢,在 Stackdriver 中產生一筆紀錄。 之後,你將使用這個紀錄來簡單設置匯出功能,從 StackdriverBigQuery

  • 複製底下代碼,然後在 BigQuery 的查詢編輯器中貼上
  • 點擊 Run

設定從 Stackdriver 匯出紀錄

在 Stackdriver 檢視紀錄

  • 在 Google Cloud Console 選擇 Navigation menu > Logging > Logs Viewer
  • 在第一個下拉視窗的搜索框中,選擇 BigQuery

應會看到幾筆紀錄出現

尋找含有 “jobcompleted” 字串的紀錄

  • 點擊位於左方,下圖中的三角箭頭來打開數據,然後在右手邊點擊 Expand all

這將以 JSON 格式來顯示數據,往下滑看看不一樣的欄位

  • 回到剛剛的開頭處,點擊 ‘jobcompleted’ 然後選擇 Show Matching Entries

這將會完成正確的搜尋設定

建立匯出

現在你有需要的紀錄了,很簡單的就可以設定匯出

  • 在搜尋框上方,點擊 Create Export
  • 在右手邊,依照下面給的資訊輸入
  • (1) Sink name: JobComplete
  • (2) Sink Service: BigQuery
  • (3) Sink Destination: bq_logs (我們之前設定的資料組)
  • 點擊 Create Sink
  • 點擊 CLOSE

之後任何的紀錄都會被匯出到這一個 bq_logs 資料組

執行範例查詢

為了讓新的表格載入入一些紀錄,我們需要執行一些範例的查詢

移動到 Cloud Shell , 複製下面的代碼,然後貼到 Cloud Shell 上

你將會看到每筆查詢回應的結果

在 BigQuery 中檢視紀錄

  • 移動到 BigQuery (Navigation menu > BigQuery)
  • 展開 qwiklabs-gcp- 開頭的資源,並且檢查 bq_logs 資料組

你應該可以看到一個表格

名字可能會跟下面的不太一樣,但看起來應該差不多 “cloudaudit_googleapis_com_data_access_2019–06–19”

  • 檢查表格的結構,然後注意到它有很大數量的欄位

如果你試著預覽,並且想知道為什麼它沒有顯示出你最近查詢的紀錄,那是因為紀錄是被串流到表格,這顯示新的資料可以被查詢但不會立即顯示在預覽

為了提高表格可用性,你可以建立 VIEW, 它可以取出子欄位的資料,然後執行一些計算來獲得查詢時間的指標

  • 在 BigQuery 的查詢編輯器,將 替換成你的 project name (在 Qwiklab 視窗左手邊可以很簡單的複製) 後,執行以下的 SQL
  • 現在可以查詢 VIEW, 執行以下指令
  • 檢視結果 檢視你之前執行的三筆查詢,跟下圖類似

恭喜

你已經完成本教程!

請不吝你的掌聲

如果覺得本文寫得不錯, 或是有幫到你的地方, 掌聲不用錢, 但是對我來說是很大的鼓勵!

普通: 拍個 10 下意思意思!
還可以: 拍個 20 下交代交代!
不錯誒: 稍微有感情的 30 下!
很好: 真誠的 40 下!
棒透了: 瘋狂的 50 下連擊!

小技巧: 按著不放就可以連拍哦, 輕鬆愜意~

Write Medium in Markdown? Try Markdium!

--

--

Ray Lee | 李宗叡
Learn or Die

It's Ray. I do both backend and frontend, but more focus on backend. I like coding, and would like to see the whole picture of a product.