Stackdriver Logging 的根本應用 - Medium

文章推薦指數: 80 %
投票人數:10人

Stackdriver Logging 是Google Cloud Platform (GCP) Stackdriver 套裝產品的一部分。

它包含紀錄的儲存,一個使用者介面名為Logs Viewer, ... 後端相關GCP物件導向演算法資料結構KubernetesStackdriverLogging的根本應用RayLee|李宗叡FollowOct19,2019·21minreadMyBlogQwiklab概述StackdriverLogging是GoogleCloudPlatform(GCP)Stackdriver套裝產品的一部分。

它包含紀錄的儲存,一個使用者介面名為LogsViewer,還提供API讓你可程式化的去管理紀錄.使用Stackdriverlogging來讀寫紀錄,搜尋以及篩選紀錄,匯出紀錄,以及建立記錄指標在這個練習中,你將學習如何使用StackdriverLogging,在同一個地方累積應用的logs,通過篩選來取得實際上需求的紀錄,理解如何建立紀錄指標來進行更進階的分析,稽核紀錄的使用案例,以及匯出紀錄如果有更進階分析的需要你需要做什麼?部署一個GoogleAppEngine應用的範例來產生紀錄使用StackdriverLogging主控台來對應用產生的紀錄做相關操作建立Stackdrivermonitoring記錄指標建立Stackdriverlogs的Export至GoogleBigQuery前言本篇主要是利用Google的Qwiklab平台學習的同時,做的一份學習筆記為避免翻譯誤解,專業術語在本篇將不會被翻譯,保留原文設定及要求在你按下StartLab按鈕之前詳讀所有的教學。

Labs是有時間限制的,而且你不可以停止時間倒數。

倒數計時器在你按下StartLab按鈕後開始倒數,上面顯示的時間為你還能使用Cloud資源的時間。

Qwiklabs的手把手環境,讓你可以在真實環境中來操作進行Qwiklabs上提供的課程,而不是在一個模擬或是展示的環境。

我們透過提供你一個全新的、暫時的帳號密碼,在計時器歸零之前,你可以用來登入並存取GoogleCloudPlatform。

你需要什麼?要完成這個lab,你需要:一個一般的網路瀏覽器(推薦Chrome)完成這個lab的時間備註:如果你已經有你自己的個人GCP帳號或專案,請不要使用在這一個lab現在你已經開始你的lab,你將會登入GoogleCloudShell主控台,然後開啟命令列工具如何開始你的lab,然後登入Console?按下StartLab按鈕。

如果你需要付費,會有一個彈出視窗來讓你選擇付費的方式。

在左方你會看到一個面板,上面有暫時的帳號密碼,你必須使用這些帳號密碼在此次lab複製username,然後點擊OpenGoogleConsole。

Lab會開啟另外一個視窗,顯示選擇帳號的頁面tip:開啟一個全新的視窗,然後跟原本的頁面並排在選擇帳號頁面,點擊UseAnotherAccount登入頁面開啟,貼上之前複製的username以及password,然後貼上重要:必須使用之前於ConnectionDetails面板取得的帳號密碼,不要使用你自己的Qwiklabs帳號密碼。

如果你有自己的GCP帳號,請不要用在這裡(避免產生費用)點擊並通過接下來的頁面:接受terms以及conditions不要增加recoveryoptoins或twofactorauthentication(因為這只是一個臨時帳號)不要註冊免費體驗稍待一些時候,GCP控制台將會在這個視窗開啟。

注意:按下左上方位於GoogleCloudPlatform隔壁的Navigationmenu,你可以瀏覽選單,裡面有一系列的GCP產品以及服務啟動GoogleCloudShellGoogleCloudShell是載有開發工具的虛擬機器。

它提供了5GB的home資料夾,並且運行在GoogleCloud上。

GoogleCloudShell讓你可以利用command-line存取GCP資源在GCP控制台,右上的工具列,點擊OpenCloudShell按鈕在打開的對話框裡,按下STARTCLOUDSHELL:你可以立即按下STARTCLOUDSHELL當對話視窗打開。

連結並提供環境會需要一點時間。

當你連結成功,這代表你已成功獲得授權,且此專案已被設為你的專案ID,例如:gcloud是GoogleCloudPlatform的command-line工具,他已事先被安裝在CloudShell並且支援自動補齊使用這個command,你可以列出有效帳戶名稱:輸出:Credentialedaccounts:[email protected](active)範例輸出:Credentialedaccounts:[email protected]你可以使用以下command來列出專案ID輸出:[core]project=範例輸出:[core]project=qwiklabs-gcp-44776a13dea667a6gcloud的完整文件可以參閱GoogleCloudgcloudOverview部署應用使用CloudShell命令行工具來部署guestbook,一個GoogleAppEngine的範例應用。

這個網頁應用將會產生我們需要的紀錄從遠端Cloneguestbook應用移動到clone下來的資料夾內部署guestbook應用選擇離你較近的地區輸入“Y”繼續。

幾分鐘後,應用將會被完全部署完畢檢視以及搜尋紀錄移動到StackdriverLogsViewer設置要檢視的紀錄選擇Navigationmenu>Logging>LogsViewerStackdriverLogging主控台有以下功能:(1)服務篩選器:根據資源種類篩選(2)紀錄篩選器:根據選擇的資源的特定類型來篩選(3)紀錄等級篩選器:篩選特定紀錄等級(4)日期篩選器:根據特定日期篩選來檢視之前發生的問題(5)切換持續串流(6)一個搜索框,可以根據文字,標籤,正則,進階篩選器來搜尋產生紀錄造訪早前建立的GoogleAppEngine應用(guestbook)來產生用來檢視的紀錄在一個新的網頁視窗,打開guestbook應用,應用的URL如下:https://.appspot.com用位於lab左方面板上的GCPProjectID來替換或者,你也可以從CloudShell(當你部署AppEngineapp時的輸出)複製完整的URL,然後在新的網頁視窗貼上如果你看到InternalServerError,那是因為DatastoreIndex還沒準備好,等個一分鐘再重新整理瀏覽器預測該有的結果:當你在你的瀏覽器視窗看到AppEngineGuestbook,這代表你的AppEngine應用已經部署且驗證完畢,讓我們來產生一些紀錄吧重整瀏覽器幾次,並且輸入一些名字到Guestbook應用來產生一些紀錄回到StackdriverLogsViewer篩選器LogsViewer提供多樣化的基本篩選以及進階篩選的搜尋功能基礎篩選一樣在LogsViewer,在第一個下拉式窗(服務選擇器),選擇GAEApplication>DefaultService>Allversion_id,表示我們想要檢視該服務的紀錄。

這會顯示guestbook的所有紀錄在下一個下拉選單(紀錄選擇器),選擇Alllogs在下一個下拉選單(紀錄等級選擇器),選擇Anyloglevel其他下拉選單為默認值,你的BasicFilter應該看起來是像這樣注意,當你更換選擇時紀錄清單會自動重整進階篩選器使用進階篩選器來進一步訂做你的搜尋在Filterbylabelortextsearch下拉選單,選擇Coverttoadvancedfilter注意,你選擇的基礎篩選器已經在進階篩選器被轉譯成查詢表達式在進階篩選器的輸入文字區塊,加上下面新的一行。

輸入新的一行來看自動完成功能protoPayload.latency>=0.01s這行顯示所有延遲大於或等於0.01秒的GAEapp紀錄點擊SubmitFilter然後檢視更新過的紀錄資料,可看到所有延遲超過0.01秒的紀錄回到基礎篩選模式。

點擊右上方,位於進階篩選器文字區塊區中的箭頭,在下拉選單選擇Clearfiltersandreturntobasicmode紀錄指標紀錄指標是根據於紀錄的內容的StackdriverMonitoring指標。

因此,你的紀錄不會只坐在那什麼事情也不做就等著別人來發現錯誤;StackdriverMonitoring會自動地監控你的紀錄,監控那些你定義的事件以及指標。

由此可見,紀錄指標真是一個監控你客製化應用的一個絕佳的好方式。

如果你的應用可以寫紀錄到VM的文件系統,你可以在那之上建立監控系統。

StackdriverMonitoring提供兩種使用者定義的紀錄指標-Counter以及Distribution計數器指標(CounterMetrics)計數器指標計數那些符合進階紀錄篩選器的紀錄內容。

舉例來說,一種指標,計數著那些,在特定資源中,代表某些類型的錯誤的紀錄內容。

當很多拜訪你網頁的使用者收到了HTTP500錯誤,想要收到警告嗎?計數器指標可以幫到你分佈指標分布指標從紀錄中,累積那些符合篩選器的數據資料並且做數學運算。

來說說一個分佈指標的普遍運用,像是追蹤一段時間的延遲模式/趨勢。

當收到每一筆紀錄,延遲的數據會從紀錄中被取出並且加到分佈。

累積的分佈將會有規律間隔的被寫到StackdriverMonitoring建立計數器指標在此節中,你將建立一個計數器指標來計數成功拜訪網站的次數—在這個例子中,所有帶的HTTP200的紀錄都算依然在LogsViewer,在selectservice的下拉選單中,選擇GAEApplication>DefaultService在loglevelselector下拉選單中,選擇Alllogs,你的篩選器應該看起來如下:在紀錄清單中,點擊狀態“200”(任何列有200就行)然後選擇Showmatchingentries你將會看到清單只會列出狀態200的紀錄在進階的篩選編輯器中,一條進階的篩選條件已經自動地被建立了protoPayload.status=200根據你的篩選器建立一個監控指標點擊CreateMetric來建立監控指標,根據你的進階篩選器在指標編輯器中,根據下圖賦值,其他的欄位留為預設值就可點擊CreateMetric下滑紀錄指標清單來檢視剛剛建立的回應200的指標,你的新指標被列在最尾端,User-definedMetrics的區塊中在下圖三點圖案處點擊,選擇ViewinMetricsExplorer來檢視回應200的指標在MetricsExplorer視窗打開Stackdriver主控台大概會需要一分鐘的時間在MetricExplorer,點擊GAEApplication資源類型,應該在數秒後會被自動增添進去如果在資源類型選項中你沒有看到GAEApplication關閉MetricsExplorer視窗重整你的guestbookapp幾次,來產生紀錄數據等待一分鐘,等你的記錄數據被添載進去(在你重整AppEngineapp之後),很有可能會花2到3分鐘點擊三個點圖案,選擇ViewinMetricsExplorer一旦紀錄有被吃到,你將會看到GAEApplication出現在Resourcetypes選擇器當中這個指標已經準備好可以監控並且分析你應用的行為建立一個分佈指標在此節中,你將會建立一個分佈計數器來監控guestbook應用的延遲回到StackdriverLoggingConsole>LogsViewer,建立一個篩選器來選擇GAEApplication>DefaultService,AllLogs,以及AnyLogLevel,如下圖:在頁面上方點擊CreateMetrics在指標編輯器的面板中,設定如下圖中的值點擊CreateMetric核對延遲指標已經被建立在使用者定義的指標中產生更多紀錄。

重整guestbook應用多次,給指標1到2分鐘去取得以及累積新的紀錄資料點擊三個點的圖案,然後點擊ViewInMetricsExplorer,如下圖:跟之前一樣,從resourcetype點擊GAEApplication,然後確認一下指標是你剛剛建立的那一個如果GAEApplication沒有自動載入關閉MetricsExplorer視窗重整你的guestbookapp幾次,來產生紀錄數據等待一分鐘,等你的記錄數據被添載進去(在你重整AppEngineapp之後),很有可能會花2到3分鐘點擊三個點圖案,選擇ViewinMetricsExplorer一旦紀錄有被吃到,你將會看到GAEApplication出現在Resourcetypes選擇器當中在Stackdriver監控主控台中檢視紀錄指標StackdriverMonitoringOverview視窗提供監控資源縱覽,紀錄指標就被列在圖表中Stackdriver會用這四種格式的其中一種來顯示圖表資料:Line,StackedBar,StackedArea,或是HeatMap,如果你想要指定格式:在其中一個圖表點擊三個點的圖案,然後點擊Edit在格式的下拉選單中,選擇一種格式點擊Save把四種格式都試試看,看哪一種可以最好的呈現延遲指標也試試其他圖表稽核紀錄GCP默認為所有的GCP資源提供稽核。

稽核紀錄提供了“誰做的?什麼時候做的?”,讓我們來看看稽核紀錄吧,讓我們從建立一台VM開始。

開啟一台VM算是稽核權限活動的一種,所以會產生紀錄開啟一台VM來產生稽核紀錄事件在GCP主控台,選擇Navigationmenu>ComputeEngine>VMInstances等待ComputeEngine服務初始化點擊Create依下圖設定相關欄位中的值,其餘的保留預設點擊Create在活動檢視器中檢視稽核紀錄GCPDashboard的活動檢視器提供快速檢視稽核紀錄的功能點擊主控台視窗上方的GoogleCloudPlatform來回到GCPDashboard切到ACTIVITY視窗,你可能要點擊Navigationmenu來關閉選單,所以才能看到ACTIVITY視窗檢視最近的稽核紀錄數據,可以看到在最上面,有很多跟建立VM相關的數據在上面的截圖,注意到四筆紀錄數據記錄著VM的建立以及與之相關的HTTP防火牆規則點擊其他行來看看他們說明些什麼。

是否有認出這好像是在本教程中我們先前做過的動作從Stackdriver記錄檢視器來檢視稽核紀錄在Stackdriver記錄檢視器中,就像在活動檢視器一樣,你可以看到稽核紀錄數據。

不同的是,記錄檢視器提供了更多功能,像是進階的篩選器以及其他的記錄管理功能從GCP主控台回到Stackdriver記錄檢視器(Navigationmenu>Logging>LogsViewer)在serviceselector,選擇GCEVMInstance>Allinstance_id在logsselector下拉選單,選擇cloudaudit.googleapis.com/activity,然後點擊OK檢視與CreateVM以及Completed對應的兩筆稽核紀錄,以及在活動檢視器看到的CreateVM紀錄看看基本篩選器是怎麼呈現的,對比進階篩選器。

從標籤或文字搜尋下拉視窗,點擊篩選器,並且轉換成進階篩選器,看看進階篩選器的代碼如下:進階篩選器只顯示GCEinstance的被稽核的活動放寬範圍來看看GCP服務的所有稽核紀錄。

移除第一行,第一行限制了稽核紀錄的範圍,然後點擊SubmitFilter檢視所有在GoogleCloudPlatform上被使用者所執行的活動在任何一行,點擊你的Qwiklabs使用者名稱(信箱),然後點擊Showmatchingentries這增加了一行新的規則到進階篩選器中,限制只顯示被你所執行的活動匯出紀錄StackdriverLogging保留30天的記錄,超過就刪除。

如果你要保留紀錄久一點,你可以將他們會出到其他的儲存系統,或者sink,像是BigQuery。

StackdriverLogging可以讓你設定自動化的匯出腳本,所以所有的紀錄都會自動地被匯出。

紀錄也可以在你選擇的接收器被進一步的分析建立一個匯出工作設定一個匯出工作來發送所有的稽核紀錄到BigQuery來長期儲存與分析。

在Stackdriver記錄檢視器的視窗,從進階篩選器移除第二行,然後點擊SubmitFilter,然後你可以檢視GCPProject所有的稽核紀錄在頁面的上方,點擊CreateExport,然後依照下圖輸入值點擊CreateSink。

點擊Close離開接收器建立確認視窗在BigQuery檢視稽核紀錄開啟BigQuery,選擇Navigationmenu>BigQuery關閉歡迎標語在左邊面板處,點擊ProjectID旁邊的箭頭來展開GCP專案名稱,來看新的AuditLogs資料注意到AuditLogs之下還沒有任何的表格。

LogExporting會再匯出作業建立之後,開始發送資料到接受器。

LogExporting會產生一些稽核記錄數據,然後會再接受器建立表格,並且開始存入資料回到VMinstance視窗(Navigationmenu>ComputeEngine>VMinstances)點擊GCEVMinstance來檢視細節點擊上方的Edit,對VM做兩個小變更(1)勾選Enableconnectiontoserialports的小格子,來允許連續port的連線(2)往下滑,勾選AllowHTTPSTraffic來允許HTTPS連線點擊Save到主要GCPDashboard的Activity視窗,你應會看到一些AuditLog數據,包含一個叫做"SetmetadataonVM(設定VM的中繼資料)",另一個叫做"Createfirewallrule(建立防火牆規則)",還有一些其他跟VM變更有關的。

你將會看到一個叫做"CreateTable(建立表格)"的事件,顯示BigQuery接收器已經被建立約一分鐘後(你可能需要重整頁面),你將會看到AuditLog數據,顯示BigQuery的表格已經被更新了,更新資料為我們剛剛變更VM之後而產生的新的AuditLog數據。

看一下時間戳記來辨認所有BigQuery有接收到,那些與這次VM變更有關的數據資料回到BigQuery主控台,展開AuditLog資料組。

你可能需要重整頁面。

你應會看到新的cloudaudit表格已經被建立了,點擊它使用BigQuery來探查稽核紀錄點擊新的cloudaudit表格,然後點擊QueryTable按鈕QueryEditor的輸入文字處已經事先仔入一部分的SQLquery,且游標置於"SELECT",以及"FROM"在“SELECT”以及“FROM”之間輸入*,然後點擊Run幾分鐘後,查詢完成了,你會在下方的結果處看到AuditLog數據,有很多欄位,裡頭有些是巢狀的點擊結果視窗的任何地方,然後使用方向鍵來左右移動,可以看到稽核紀錄非常的詳細現在定義一個範圍小一點的查詢來檢視每個稽核數據的大概(1)在右上方點擊ComposeNewQuery(2)複製下面的code,貼到查詢編輯器(3)上面有些參數,參照下圖的表格內資訊替換(4)點擊Run來開始查詢。

你應會看到小一點的欄位,根據我們做的操作做限制,結果應會跟下圖相似:這個簡單的查詢只是使用BigQuery來產生客制紀錄的一個範例,你可以建構任何數量的SQLqueries來分析你的稽核紀錄來符合你的需求恭喜,你已經完成本教程請不吝你的掌聲如果覺得本文寫得不錯,或是有幫到你的地方,掌聲不用錢,但是對我來說是很大的鼓勵!普通:拍個10下意思意思!還可以:拍個20下交代交代!不錯誒:稍微有感情的30下!很好:真誠的40下!棒透了:瘋狂的50下連擊!小技巧:按著不放就可以連拍哦,輕鬆愜意~WriteMediuminMarkdown?TryMarkdium!LearnorDieLearnorDie126GoogleCloudPlatformStackdriverBackend126 claps126LearnorDie成長與分享的足跡WrittenbyRayLee|李宗叡Follow我是Ray,一位後端開發者。

喜歡開發,也喜歡維運!https://www.cakeresume.com/ray-6edaef-6ed33dLearnorDie成長與分享的足跡



請為這篇文章評分?