使用 Stackdriver 的監控和記錄功能可讓您更全面地掌握應用程式的健康狀態

在本程式碼研究室中,您將學習如何開始使用 Stackdriver 監控及查看 Google Cloud Platform 服務和 VM 的效能指標和記錄檔。

在這個程式碼研究室中,您將:

  • 熟悉 Stackdriver 首頁。
  • 認識資訊主頁與圖表。
  • 建立運作時間檢查。
  • 建立簡單的快訊政策。
  • 處理快訊事件。
  • 瀏覽記錄檢視器。

您對 Stackdriver 的體驗如何?

監控 - 這是什麼? 我先前從未使用過 Stackdriver,但我有監控應用程式的經驗。我已順利啟用 Stackdriver 輪胎,但尚未深入探究。

自訂環境設定

如果您還沒有 Google 帳戶 (Gmail 或 Google Apps),請先建立帳戶

登入 Google Cloud Platform 主控台 (console.developers.google.com),然後建立新專案:

請記住專案 ID,是所有 Google Cloud 專案中的專屬名稱。此程式碼研究室稍後將稱為 PROJECT_ID

重要事項:如要開始使用 Compute Engine API,請造訪 Compute Engine 頁面:

然後,依序選擇:Compute → Compute Engine → VM 執行個體。

初次執行這項作業時,系統會顯示畫面顯示「Compute Engine 正在接受審查」訊息。完成這項作業可能需要一分鐘或以上。您可以繼續登入下方的 Google Cloud Shell,但必須等到這項作業完成,才能建立 VM。

大部分的工作都是由 Google Cloud Shell (在 Cloud 中執行的指令列環境) 完成。這款以 Debian 為基礎的虛擬機器會載入您需要的所有開發工具,並提供永久 5GB 的主目錄。按一下畫面右上角的圖示,開啟 Google Cloud Shell:

最後,請使用 Cloud Shell 來設定預設區域和專案設定:

$ gcloud config set compute/zone us-central1-b
$ gcloud config set compute/region us-central

您也可以挑選其他區域。如要進一步瞭解區域,請參閱區域與區域說明文件

在本節中,您將使用 Cloud 啟動器建立執行 Spinnaker+ 的 Compute Engine 執行個體。我們需要這些執行個體以示範監控和快訊。您可以透過圖形控制台或指令列建立 Compute Engine 執行個體。本研究室將逐步引導您使用指令列。

現在,讓我們開始吧!

使用 gcloud 來設定專案 ID:

$ gcloud config set project PROJECT_ID



接下來,請務必複製 &&;按照以下方式貼上:

$ for i in {1..3}; do \
gcloud compute instances create "nginx-plus-$i" \
--machine-type "n1-standard-1" \
--metadata  "google-cloud-marketplace-solution-key=nginx-public:nginx-plus" \
--maintenance-policy "MIGRATE" --scopes default="https://www.googleapis.com/auth/cloud-platform" \
--tags "http-server","google-cloud-marketplace" \
--image "https://www.googleapis.com/compute/v1/projects/nginx-public/global/images/nginx-plus-ubuntu1404-v20150916-final" \
--boot-disk-size "10" --boot-disk-type "pd-standard" \
--boot-disk-device-name "nginx-plus-$i"; done

您會看到有關磁碟大小的警告訊息,且會在建立各個 VM 時產生下列輸出內容:

NAME         ZONE          MACHINE_TYPE  PREEMPTIBLE INTERNAL_IP EXTERNAL_IP     STATUS
nginx-plus-1 us-central1-b n1-standard-2                X.X.X.X  X.X.X.X      RUNNING
...

記下 EXTERNAL_IP,稍後也要注意。

這些作業可能需要幾分鐘才能完成。

根據預設,Google Cloud Platform 只允許少部分通訊埠的存取。由於我們很快就要獲取 Nginx - 讓我們在防火島配置中啟用端口 80:

$ gcloud compute firewall-rules create allow-80 --allow tcp:80 --target-tags "http-server"
Created [...].
NAME     NETWORK SRC_RANGES RULES  SRC_TAGS TARGET_TAGS
allow-80 default 0.0.0.0/0  tcp:80 http-server

這會建立名為「allow-80」的防火牆規則,其預設值如下:

  • 允許的 IP 區塊清單清單 (--source-ranges) 已設為 0.0.0.0/0 (不限位置)。
  • 執行個體標記清單會列出可接受傳入連線的網路執行個體數量,設為無 (表示防火牆規則適用於所有執行個體)。

執行 gcloud compute firewall-rules create --help 以查看所有預設值。

建立第一個執行個體後,您可以瀏覽至 http://EXTERNAL_IP/,其中 EXTERNAL_IPnginx-plus-1 的公開 IP,藉此測試 Stackdriver 是否可正常存取及存取。您應可看到 Nginx 網頁:

您也可以輸入以下方式來查看運作中的執行個體:

$ gcloud compute instances list

Google Stackdriver 是一項功能強大的監控解決方案,可整合各種工具,協助您監控及分析雲端應用程式。您可以使用 Stackdriver 集中查看成效指標、設定和接收快訊、新增自訂的資訊主頁和指標、查看記錄和追蹤記錄,以及設定整合式資訊主頁。

接下來,我們將引導您啟用 Stackdriver,與主控台搭配運作。

根據預設,Google Stackdriver 目前為測試版,新專案尚未啟用。如要啟用此功能,請前往左側導覽列,然後按一下 [Monitoring] (可能需要向下捲動才看得到這個選項)。

在下一個畫面中,按一下 [啟用 Monitoring],然後等待系統啟用該設定。

啟用後,內容將會變更,您會在下方看到文字。按一下 [前往 Monitoring] 即可開始探索!您必須透過 Google 登入,然後再前往專案的 Stackdriver 主控台。您可以在這個畫面中執行及分析監控相關功能。

讓我們對首頁更瞭解。

  1. 頂端選單:用來選取不同的資料檢視 / 背景資訊,並存取所有可用的 Stackdriver 動作。
  2. 資訊主頁: 這些是資訊主頁監控的指標與事件。一開始,這些是系統根據專案資源提供的預先定義系統資訊主頁,但您也可以建立自訂的資訊主頁。
  3. 運作時間檢查:系統會定期檢查使用者端的資源,確認是否可用,並在快訊無法使用時啟用快訊。
  4. 群組清單:群組可用於將具有屬性和特徵的資源分組,以便將群組或叢集當做工作或叢集處理,以便進行監控和快訊等工作。這類廣告素材可自動探索及使用者定義。
  5. 事件窗格:事件窗格會追蹤快訊事件。您必須先定義快訊政策,這裡才會顯示任何內容。
  6. 事件紀錄: 列出與受控資源相關的事件,例如執行個體變更、事件等。

在檢查圖表之前,您會先發現在初始執行個體初始化後,大部分的線都經過簡化了。我們看不定能「不平等」地進行部分作業,其中部分執行個體會對執行個體執行一些負載。

如要透過 Cloud Shell 指令列透過 SSH 登入執行個體,請按照下列指示操作:

$ gcloud compute ssh nginx-plus-1
...
Do you want to continue (Y/n)? Y
...
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): [Hit Enter]
Enter same passphrase again: [Hit Enter]
...

yourusername@nginx-plus-1:~$

就是這麼簡單!(在實際工作環境中,請務必輸入通關密語 :) 此外,系統可能不會提示您新增通關密語。

您也可以直接透過主控台建立 SSH 連線,方法是前往 Compute Engine > VM 執行個體,然後按一下 [SSH]

In the SSH window, type:

yourusername@nginx-plus-1:~$ sudo apt-get install rand
yourusername@nginx-plus-1:~$ for i in {1..10}; do dd if=/dev/zero of=/dev/null count=$(rand -M 80)M; sleep 60; done &

正在載入執行個體 nginx-plus-1 CPU。我們可以回到 Stackdriver 資訊主頁分頁並開始探索,但是在返回 Stackdriver 資訊主頁之前,讓我們有機會安裝 Cloud Logging 代理程式。

Fetch and install the script:

yourusername@nginx-plus-1:~$ curl -sS https://dl.google.com/cloudagents/add-logging-agent-repo.sh | sudo bash /dev/stdin --also-install

請注意,在實際執行環境中安裝時,請務必檢查 SHA-256 雜湊。如要進一步瞭解安裝程序,請按這裡

現在,我們要回到 Google Stackdriver 主控台。

請花點時間熟悉如何使用資訊主頁和圖表。將滑鼠懸停在圖表線上,即可看出結果。變更圖表的時間長度 (控制項位於右上角)。您只要按一下控制台左上角的 Stackdriver 標誌,即可返回「首頁」。

我們來看看 CPU 使用率圖表:

圖表中的部分元素如下:

  • 醒目顯示的線條就是目前選取的指標 (圖表可以顯示多個指標)。
  • 灰色水平線代表滑鼠遊標懸停在哪個時間點。
  • 底部會顯示資源名稱,以及所選時間點的值。
  • 圖表頂端的彩色圓點代表事件記錄的詳細資訊。點選這些圖示即可查看事件清單。請注意:如果您還沒有任何活動,系統可能不會顯示任何訊息。
  • 圖表右上角有三個控制項 (由左至右):
  • 切換/隱藏圖表下方的指標清單
  • 啟用或停用全螢幕模式
  • 提供多種多樣化的選單 (取得非常詳細圖表時,「必須」試用 X 光模式!)。請留意 [查看紀錄] 選項,我們稍後會在這裡處理這個情況。

運作時間檢查可讓您快速驗證任何網頁、執行個體或資源群組的健康狀態。世界各地的設定檢查都會定期從世界各地的多個地點聯絡。運作時間檢查可以做為快訊政策定義的條件。

您可以選取頂端選單中的 [快訊] > [運作時間檢查],即可顯示檢查及其狀態。您也可以在 Google Stackdriver 資訊主頁和特定資源的網頁中找到「運作時間檢查」部分。針對涵蓋一組資源的運作時間檢查,您可以展開檢查,以顯示個別群組成員的狀態。

由系統建立運作時間檢查。在 Stackdriver 主畫面中尋找運作時間檢查小工具:

畫面上會出現新的彈出式視窗。我們可以設定單一資源或資源的運作時間檢查、使用自訂標頭和酬載、新增驗證等功能。我們目前只使用預設的 http 檢查,系統每 1 分鐘就會自動檢查一次自動建立的 SWF 群組。

請使用下方的螢幕截圖填寫各個選項:

按一下 [測試] 按鈕,確認您的端點能夠連上 (您應接收 3 個綠色的確定),然後按一下 [儲存]。注意:如果您沒得到,我們就可以繼續參與研究室,因為這可能是測試時限問題。

接下來,您會看見「已建立運作時間檢查」方塊,並詢問是否要為這項檢查建立快訊政策。請進行下一個章節。

您可以設定快訊政策來定義條件,藉此決定雲端服務和平台是否正常運作。Cloud Monitoring 提供多種指標和健康狀態檢查,方便您在政策中使用。

違反快訊政策條件時,系統會在 Stackdriver 主控台中在「事件」部分中建立事件並顯示事件。因應人員可以確認已收到通知,並在事件受到處置時關閉事件。

按一下 [建立快訊政策],並繼續設定政策。

現在,您應該會看到這個畫面:

輸入政策名稱:「&timet Check for SWF group」

在通知的部分中,按一下 [新增通知]。

輸入與您的 Google Cloud 帳戶相關聯的電子郵件地址。捲動至畫面底部,然後按一下 [儲存政策]。

返回 Stackdriver 首頁 (點選左上角的標誌)。

現在,您會在資訊主頁的運作時間檢查部分中看到自己建立的運作時間檢查。目前狀態為「綠色」。

向下捲動至「事件紀錄」,應該就會看到已建立快訊政策的事件。

現在,讓我們來嘗試一些問題 :)

我們來看看停用 Ngnix 服務時會發生什麼事。

從 Cloud Shell 指令列再次透過 SSH 登入執行個體:

$ gcloud compute ssh nginx-plus-1

並輸入:

yourusername@nginx-plus-1:~$ sudo service nginx stop

現在,我們建立的運作時間檢查會失敗。如此一來,系統將會建立事件,並將快訊通知電子郵件寄到您在上方輸入的地址。偵測條件需要一分鐘的時間 (設定運作時間檢查時需要 1 分鐘的時間),請讓我們檢查並檢查 SWF 群組頁面。

您可以透過下列幾種方式前往特定資源群組的資訊主頁:

  1. 在首頁中按一下群組名稱即可。這會切換到專為監控群組資源而建立的資訊主頁。您也可以自訂這個資訊主頁。



  2. 在頂層選單中選取 [網路論壇],然後找出特定群組。

現在請按一下自動重新整理按鈕,確保資訊主頁會自動重新整理。圖示會變成紅色。

您現在查看的是資訊主頁所自動建立的資訊主頁。右側會顯示圖表和群組相關的幾個重要指標。換句話說,這些圖表會顯示與 GAPS 群組 (我們先前所建的 3 個 以上資料庫) 相關的資源。

左側會顯示與群組相關的資訊:

  • 事件狀態
  • 運作時間檢查
  • 事件記錄
  • 資源清單 (執行個體、磁碟區等)

請注意,兩者只會與群組相關,因此事件紀錄只會列出該群組的事件。

只要按一下不同的資源或子群組,即可切換至專屬資訊主頁。舉例來說,按一下「SWF-plus-1」可開啟一個資訊主頁,其中包含與該執行個體相關的指標和檢查。立即試用:

當一組快訊條件符合特定條件時,Stackdriver 事件就會開啟。在此案例中,我們針對 SWF 運作時間檢查,設定了快訊,該警示目前在 database-plus-1 上發生失敗。事件可協助您追蹤目前狀況,還能與其他小組成員協作處理問題。

讓我們向事件確認事件,讓其他小組成員知道我們做了哪些事:

請注意,這會將事件的狀態從「開啟」變更為「已確認」。目前情況仍在處理中 (但仍違反快訊政策條件),但你正在通知團隊成員你已得知他們的狀況。這項資訊也會記錄在事件記錄中。

事件可以手動解決,也可以自動解決。如要查看後者,請 ssh 進入 SWF-plus-1 並修正問題:

yourusername@nginx-plus-1:~$ sudo service nginx start

現在,只要運作時間檢查恢復正常,系統就會自動解決事件。你也可以選取 [解決問題] 選單項目自行解決這個問題。

Cloud Logging 是記錄式即服務的解決方案,可讓您集中查看多個來源的記錄,並集中查詢。您也可以使用記錄檔將記錄檔匯出至其他目的地 (Google Cloud Storage、Google BigQuery 或 Google Cloud Pub/Sub)。

如要存取 Cloud 記錄檢視器,請從 Cloud Console 左側選單中選擇:

系統會將您導向記錄檢視器,方便您使用者預先定義查詢,或是建立並儲存自訂查詢、透過跨雲端部署作業的多項資源取得記錄檔串流、建立記錄檔指標、匯出指標等。

您可以使用以下幾個實用控制項,快速篩選相關資訊:

  1. 依資源類型篩選
  2. 篩選所選資源的特定記錄類型
  3. 篩選特定記錄層級
  4. 篩選特定日期以檢視過往的問題
  5. 切換持續串流播放功能
  6. 文字、標籤或規則運算式搜尋的搜尋框

現在,我們來練習將範圍縮小至特定紀錄。

從資源類型選取器 (螢幕擷取畫面中的 1) 選取 [Compute Engine -> 所有資源類型]

接著,從記錄類型選取器 (螢幕截圖中的 2) 選取 [kube-access] 查看所有存取記錄檔。

現在,將連續串流播放功能開啟 (5) 即可即時查看紀錄。如果您找不到任何新記錄,請試著在瀏覽器中輸入其中一個 SWF + VM 的外部 IP 位址。

雖然這個程式碼研究室並未深入處理紀錄,不過之後還是可以先清理,再開始清理。請參閱這篇文章,進一步瞭解如何瀏覽檢視器。如果您想進一步瞭解 Cloud Logging 的應用範圍,請按這裡查看相關說明文件的頂層目錄。

我們來釋出程式碼研究室建立運算資源。在 Cloud Shell 中執行下列指令:

$ for i in {1..3}; do \
gcloud -q --user-output-enabled=false compute instances delete nginx-plus-$i ; done

接著,前往 Google Stackdriver 主控台 (從「Cloud Console 左側窗格」中「監控」),並移除我們建立的運作時間檢查與快訊政策。您可以從頂層選單項目「快訊 -&gt」;「政策總覽」和「快訊」->運作時間檢查。

您現在可以監控採用雲端的應用程式。

適用範圍

  • 熟悉 Stackdriver 首頁。
  • 認識資訊主頁與圖表。
  • 正在建立運作時間檢查。
  • 建立簡單的快訊政策。
  • 處理快訊事件。
  • 瀏覽記錄檢視器。

後續步驟

  • 建議您建立自訂資訊主頁。
  • 探索建立快訊政策時有哪些不同選項。
  • 探索使用 Cloud Logging 時有哪些不同選項。

瞭解 Mor

請提供您寶貴的意見