概述
Stackdriver Logging
是 Google Cloud Platform (GCP) Stackdriver
套裝產品的一部分。 它包含紀錄的儲存,一個使用者介面名為 Logs Viewer
, 還提供 API 讓你可程式化的去管理紀錄. 使用 Stackdriver logging
來讀寫紀錄, 搜尋以及篩選紀錄, 匯出紀錄, 以及建立記錄指標
在這個練習中, 你將學習如何使用 Stackdriver Logging
, 在同一個地方累積應用的 logs, 通過篩選來取得實際上需求的 紀錄, 理解如何建立紀錄指標來進行更進階的分析, 稽核紀錄 的使用案例, 以及匯出紀錄如果有更進階分析的需要
你需要做什麼?
- 部署一個 Google App Engine 應用的範例來產生紀錄
- 使用
Stackdriver Logging
主控台來對應用產生的紀錄做相關操作 - 建立
Stackdriver monitoring
記錄指標 - 建立
Stackdriver logs
的Export
至Google BigQuery
前言
本篇主要是利用 Google 的 Qwiklab 平台學習的同時,做的一份學習筆記
為避免翻譯誤解,專業術語在本篇將不會被翻譯,保留原文
設定及要求
在你按下 Start Lab 按鈕之前
詳讀所有的教學。Labs 是有時間限制的,而且你不可以停止時間倒數。倒數計時器在你按下 Start Lab 按鈕後開始倒數,上面顯示的時間為你還能使用 Cloud 資源的時間。
Qwiklabs 的手把手環境,讓你可以在真實環境中來操作進行 Qwiklabs 上提供的課程,而不是在一個模擬或是展示的環境。我們透過提供你一個全新的、暫時的帳號密碼,在計時器歸零之前,你可以用來登入並存取 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 optoins
或two 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,例如:
gcloud 是 Google Cloud Platform
的 command-line 工具,他已事先被安裝在 Cloud Shell
並且支援自動補齊
使用這個 command ,你可以列出有效帳戶名稱:
gcloud auth list |
輸出:
Credentialed accounts: |
範例輸出:
Credentialed accounts: |
你可以使用以下 command 來列出專案 ID
gcloud config list project |
輸出:
[core] |
範例輸出:
[core] |
gcloud
的完整文件可以參閱 Google Cloud gcloud Overview
部署應用
使用 Cloud Shell
命令行工具來部署 guestbook
, 一個 Google App Engine
的範例應用。 這個網頁應用將會產生我們需要的紀錄
- 從遠端 Clone
guestbook
應用
git clone https://github.com/GoogleCloudPlatform/appengine-guestbook-python.git |
- 移動到 clone 下來的資料夾內
cd appengine-guestbook-python/ |
- 部署
guestbook
應用
gcloud app deploy app.yaml index.yaml |
- 選擇離你較近的地區
Please choose the region where you want your App Engine application located: |
- 輸入 “Y” 繼續。幾分鐘後,應用將會被完全部署完畢
檢視以及搜尋紀錄
移動到 Stackdriver Logs Viewer
設置要檢視的紀錄
選擇Navigation menu > Logging > Logs Viewer
Stackdriver Logging
主控台有以下功能:
- (1) 服務篩選器: 根據資源種類篩選
- (2) 紀錄篩選器: 根據選擇的資源的特定類型來篩選
- (3) 紀錄等級篩選器: 篩選特定紀錄等級
- (4) 日期篩選器: 根據特定日期篩選來檢視之前發生的問題
- (5) 切換持續串流
- (6) 一個搜索框,可以根據文字,標籤,正則,進階篩選器來搜尋
產生紀錄
造訪早前建立的 Google App Engine
應用 (guestbook) 來產生用來檢視的紀錄
- 在一個新的網頁視窗,打開
guestbook
應用,應用的 URL 如下:
https://<PROJECT_ID>.appspot.com
用位於 lab 左方面板上的GCP Project ID來替換
或者,你也可以從 Cloud Shell
(當你部署 App Engine app
時的輸出) 複製完整的 URL,然後在新的網頁視窗貼上
如果你看到Internal Server Error, 那是因為 Datastore Index
還沒準備好,等個一分鐘再重新整理瀏覽器
預測該有的結果:
當你在你的瀏覽器視窗看到 App Engine Guestbook
, 這代表你的 App Engine
應用已經部署且驗證完畢,讓我們來產生一些紀錄吧
重整瀏覽器幾次,並且輸入一些名字到
Guestbook
應用來產生一些紀錄回到
Stackdriver Logs Viewer
篩選器
Logs Viewer
提供多樣化的基本篩選以及進階篩選的搜尋功能
基礎篩選
- 一樣在
Logs Viewer
,在第一個下拉式窗 (服務選擇器),選擇GAE Application > Default Service > All version_id, 表示我們想要檢視該服務的紀錄。這會顯示guestbook
的所有紀錄
- 在下一個下拉選單 (紀錄選擇器), 選擇All logs
- 在下一個下拉選單 (紀錄等級選擇器), 選擇Any log level
- 其他下拉選單為默認值, 你的
Basic Filter
應該看起來是像這樣
注意,當你更換選擇時紀錄清單會自動重整
進階篩選器
使用進階篩選器來進一步訂做你的搜尋
- 在Filter by label or text search下拉選單,選擇Covert to advanced filter
注意,你選擇的基礎篩選器已經在進階篩選器被轉譯成查詢表達式
- 在進階篩選器的輸入文字區塊,加上下面新的一行。 輸入新的一行來看自動完成功能
protoPayload.latency>=0.01s
這行顯示所有延遲大於或等於 0.01 秒的 GAE app 紀錄
點擊Submit Filter然後檢視更新過的紀錄資料,可看到所有延遲超過 0.01 秒的紀錄
回到基礎篩選模式。點擊右上方,位於進階篩選器文字區塊區中的箭頭,在下拉選單選擇Clear filters and return to basic mode
紀錄指標
紀錄指標是根據於紀錄的內容的 Stackdriver Monitoring 指標。 因此,你的紀錄不會只坐在那什麼事情也不做就等著別人來發現錯誤; Stackdriver Monitoring
會自動地監控你的紀錄,監控那些你定義的事件以及指標。由此可見,紀錄指標真是一個監控你客製化應用的一個絕佳的好方式。如果你的應用可以寫紀錄到 VM 的文件系統,你可以在那之上建立監控系統。
Stackdriver Monitoring
提供兩種使用者定義的紀錄指標 - Counter 以及 Distribution
計數器指標 (Counter Metrics)
計數器指標計數那些符合進階紀錄篩選器的紀錄內容。舉例來說,一種指標,計數著那些,在特定資源中,代表某些類型的錯誤的紀錄內容。當很多拜訪你網頁的使用者收到了 HTTP 500 錯誤,想要收到警告嗎? 計數器指標可以幫到你
分佈指標
分布指標從紀錄中,累積那些符合篩選器的數據資料並且做數學運算。來說說一個分佈指標的普遍運用,像是追蹤一段時間的延遲模式/趨勢。當收到每一筆紀錄,延遲的數據會從紀錄中被取出並且加到分佈。累積的分佈將會有規律間隔的被寫到 Stackdriver Monitoring
建立計數器指標
在此節中,你將建立一個計數器指標來計數成功拜訪網站的次數 - 在這個例子中,所有帶的 HTTP 200 的紀錄都算
依然在
Logs Viewer
, 在select service的下拉選單中,選擇GAE Application > Default Service在log level selector下拉選單中,選擇All logs, 你的篩選器應該看起來如下:
- 在紀錄清單中,點擊狀態 “200” (任何列有 200 就行) 然後選擇Show matching entries
你將會看到
- 清單只會列出狀態 200 的紀錄
- 在進階的篩選編輯器中,一條進階的篩選條件已經自動地被建立了 protoPayload.status=200
根據你的篩選器建立一個監控指標
點擊Create Metric 來建立監控指標,根據你的進階篩選器
在指標編輯器中,根據下圖賦值,其他的欄位留為預設值就可
- 點擊Create Metric
下滑紀錄指標清單來檢視剛剛建立的回應 200 的指標, 你的新指標被列在最尾端, User-defined Metrics 的區塊中
在下圖三點圖案處點擊,選擇 View in Metrics Explorer 來檢視回應 200 的指標
在 Metrics Explorer
視窗打開 Stackdriver 主控台大概會需要一分鐘的時間
- 在
Metric Explorer
, 點擊 GAE Application 資源類型,應該在數秒後會被自動增添進去
如果在資源類型選項中你沒有看到 GAE Application
- 關閉
Metrics Explorer
視窗 - 重整你的
guestbook
app 幾次,來產生紀錄數據 - 等待一分鐘,等你的記錄數據被添載進去 (在你重整
App Engine app
之後), 很有可能會花 2 到 3 分鐘 - 點擊三個點圖案,選擇View in Metrics Explorer
一旦紀錄有被吃到,你將會看到 GAE Application 出現在Resource types 選擇器當中
這個指標已經準備好可以監控並且分析你應用的行為
建立一個分佈指標
在此節中,你將會建立一個分佈計數器來監控 guestbook
應用的延遲
- 回到
Stackdriver Logging Console
>Logs Viewer
, 建立一個篩選器來選擇GAE Application > Default Service, All Logs, 以及 Any Log Level, 如下圖:
- 在頁面上方點擊Create Metrics
- 在指標編輯器的面板中,設定如下圖中的值
點擊Create Metric
核對延遲指標已經被建立在使用者定義的指標中
產生更多紀錄。重整
guestbook
應用多次,給指標 1 到 2 分鐘去取得以及累積新的紀錄資料點擊三個點的圖案,然後點擊View In Metrics Explorer, 如下圖:
- 跟之前一樣,從resource type點擊GAE Application, 然後確認一下指標是你剛剛建立的那一個
如果GAE Application沒有自動載入
- 關閉
Metrics Explorer
視窗 - 重整你的
guestbook
app 幾次,來產生紀錄數據 - 等待一分鐘,等你的記錄數據被添載進去 (在你重整
App Engine app
之後), 很有可能會花 2 到 3 分鐘 - 點擊三個點圖案,選擇View in Metrics Explorer
一旦紀錄有被吃到,你將會看到 GAE Application 出現在Resource types 選擇器當中
在 Stackdriver 監控主控台中檢視紀錄指標
Stackdriver Monitoring Overview
視窗提供監控資源縱覽,紀錄指標就被列在圖表中
Stackdriver 會用這四種格式的其中一種來顯示圖表資料: Line
, Stacked Bar
, Stacked Area
, 或是 HeatMap
, 如果你想要指定格式:
- 在其中一個圖表點擊三個點的圖案,然後點擊Edit
- 在格式的下拉選單中,選擇一種格式
- 點擊Save
把四種格式都試試看,看哪一種可以最好的呈現延遲指標 - 也試試其他圖表
稽核紀錄
GCP 默認為所有的 GCP 資源提供稽核。稽核紀錄提供了 “誰做的?什麼時候做的?”, 讓我們來看看稽核紀錄吧,讓我們從建立一台 VM 開始。 開啟一台 VM 算是稽核權限活動的一種,所以會產生紀錄
開啟一台 VM 來產生稽核紀錄事件
- 在 GCP 主控台,選擇Navigation menu > Compute Engine > VM Instances
等待 Compute Engine
服務初始化
- 點擊Create
- 依下圖設定相關欄位中的值,其餘的保留預設
- 點擊Create
在活動檢視器中檢視稽核紀錄
GCP Dashboard
的活動檢視器提供快速檢視稽核紀錄的功能
- 點擊主控台視窗上方的Google Cloud Platform來回到
GCP Dashboard
- 切到
ACTIVITY
視窗,你可能要點擊Navigation menu來關閉選單,所以才能看到ACTIVITY
視窗
- 檢視最近的稽核紀錄數據,可以看到在最上面,有很多跟建立 VM 相關的數據
在上面的截圖,注意到四筆紀錄數據記錄著 VM 的建立以及與之相關的 HTTP 防火牆規則
- 點擊其他行來看看他們說明些什麼。是否有認出這好像是在本教程中我們先前做過的動作
從 Stackdriver 記錄檢視器來檢視稽核紀錄
在 Stackdriver 記錄檢視器中,就像在活動檢視器一樣,你可以看到稽核紀錄數據。不同的是,記錄檢視器提供了更多功能,像是進階的篩選器以及其他的記錄管理功能
從 GCP 主控台回到 Stackdriver 記錄檢視器 (Navigation menu > Logging > Logs Viewer)
在service selector, 選擇 GCE VM Instance > All instance_id
在 logs selector 下拉選單,選擇cloudaudit.googleapis.com/activity, 然後點擊OK
檢視與Create VM 以及 Completed對應的兩筆稽核紀錄, 以及在活動檢視器看到的Create VM紀錄
看看基本篩選器是怎麼呈現的,對比進階篩選器。從標籤或文字搜尋下拉視窗,點擊篩選器,並且轉換成進階篩選器,看看進階篩選器的代碼如下:
進階篩選器只顯示 GCE instance
的被稽核的活動
放寬範圍來看看 GCP
服務的所有稽核紀錄。 移除第一行,第一行限制了稽核紀錄的範圍,然後點擊Submit Filter
檢視所有在 Google Cloud Platform
上被使用者所執行的活動
在任何一行,點擊你的 Qwiklabs 使用者名稱(信箱)
, 然後點擊Show matching entries
這增加了一行新的規則到進階篩選器中,限制只顯示被你所執行的活動
匯出紀錄
Stackdriver Logging
保留 30 天的記錄,超過就刪除。如果你要保留紀錄久一點,你可以將他們會出到其他的儲存系統,或者 sink
, 像是 BigQuery
。 Stackdriver Logging
可以讓你設定自動化的匯出腳本,所以所有的紀錄都會自動地被匯出。 紀錄也可以在你選擇的接收器被進一步的分析
建立一個匯出工作
設定一個匯出工作來發送所有的稽核紀錄到 BigQuery
來長期儲存與分析。
- 在 Stackdriver 記錄檢視器的視窗,從進階篩選器移除第二行,然後點擊Submit Filter, 然後你可以檢視 GCP Project 所有的稽核紀錄
- 在頁面的上方,點擊Create Export,然後依照下圖輸入值
- 點擊Create Sink。 點擊Close離開接收器建立確認視窗
在 BigQuery 檢視稽核紀錄
開啟 BigQuery, 選擇Navigation menu > BigQuery
關閉歡迎標語
在左邊面板處,點擊 Project ID 旁邊的箭頭來展開 GCP 專案名稱,來看新的
AuditLogs
資料
注意到 AuditLogs
之下還沒有任何的表格。 Log Exporting
會再匯出作業建立之後,開始發送資料到接受器。 Log Exporting
會產生一些稽核記錄數據,然後會再接受器建立表格,並且開始存入資料
回到
VM instance
視窗 (Navigation menu > Compute Engine > VM instances)點擊
GCE VM instance
來檢視細節
- 點擊上方的Edit, 對 VM 做兩個小變更
- (1) 勾選Enable connection to serial ports 的小格子,來允許連續 port 的連線
- (2) 往下滑,勾選Allow HTTPS Traffic來允許 HTTPS 連線
- 點擊Save
到主要 GCP Dashboard 的 Activity
視窗,你應會看到一些 Audit Log
數據,包含一個叫做 “Set metadata on VM (設定 VM 的中繼資料)”, 另一個叫做 “Create firewall rule (建立防火牆規則)”, 還有一些其他跟 VM 變更有關的。 你將會看到一個叫做 “Create Table (建立表格)” 的事件,顯示 BigQuery
接收器已經被建立
約一分鐘後(你可能需要重整頁面), 你將會看到 Audit Log
數據,顯示 BigQuery
的表格已經被更新了,更新資料為我們剛剛變更 VM 之後而產生的新的 Audit Log
數據。 看一下時間戳記來辨認所有 BigQuery 有接收到,那些與這次 VM 變更有關的數據資料
- 回到 BigQuery 主控台,展開 AuditLog 資料組。你可能需要重整頁面。 你應會看到新的
cloudaudit
表格已經被建立了,點擊它
使用 BigQuery 來探查稽核紀錄
- 點擊新的 cloudaudit 表格, 然後點擊 Query Table 按鈕
Query Editor
的輸入文字處已經事先仔入一部分的 SQL query
, 且游標置於 “SELECT”, 以及 “FROM”
- 在 “SELECT” 以及 “FROM” 之間輸入
*
, 然後點擊 Run
幾分鐘後,查詢完成了,你會在下方的結果處看到 Audit Log 數據, 有很多欄位, 裡頭有些是巢狀的
- 點擊結果視窗的任何地方,然後使用方向鍵來左右移動,可以看到稽核紀錄非常的詳細
現在定義一個範圍小一點的查詢來檢視每個稽核數據的大概
(1) 在右上方點擊 Compose New Query
(2) 複製下面的 code, 貼到查詢編輯器
SELECT
timestamp,
resource.type,
protopayload_auditlog.authenticationInfo.principalEmail,
protopayload_auditlog.methodName
FROM `<your-project-ID>.AuditLogs.<your_audit_log_table_name>`
WHERE protopayload_auditlog.authenticationInfo.principalEmail = "<your_qwiklabs_username_email>"
LIMIT 1000(3) 上面有些參數,參照下圖的表格內資訊替換
(4) 點擊 Run 來開始查詢。 你應會看到小一點的欄位,根據我們做的操作做限制,結果應會跟下圖相似:
這個簡單的查詢只是使用 BigQuery 來產生客制紀錄的一個範例,你可以建構任何數量的 SQL queries
來分析你的稽核紀錄來符合你的需求
留言