使用 Stackdriver 的監控和記錄功能,進一步瞭解應用程式的健康狀態

在這個程式碼研究室中,您將瞭解如何開始使用 Stackdriver,監控及檢視 Google Cloud Platform 服務和 VM 的效能指標與記錄檔。

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

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

您使用 Stackdriver 的經驗如何?

監控 - 這是什麼? 我從未使用過 Stackdriver,但有監控應用程式的經驗。 我已初步瞭解 Stackdriver,但還沒深入研究。

自行步調環境 設定

如果您還沒有 Google 帳戶 (Gmail 或 Google 應用程式),請先建立帳戶

登入 Google Cloud Platform Console (console.developers.google.com) 並建立新專案:

記住專案 ID,這是所有 Google Cloud 專案中不重複的名稱。本程式碼研究室稍後會將其稱為 PROJECT_ID

非常重要 - 請前往 Compute Engine 頁面,開始啟用 Compute Engine API:

然後依序點選:Compute → Compute Engine → VM 執行個體

第一次執行這項操作時,畫面上會顯示「Compute Engine 正在準備中。可能需要幾分鐘的時間才能完成」。您仍可繼續登入下方的 Google Cloud Shell,但必須等到這項作業完成,才能建立 VM。

您將在 Google Cloud Shell 中進行大部分的工作。 Cloud Shell 是在雲端中執行的指令列環境。這種以 Debian 為基礎的虛擬機器,搭載各種您需要的開發工具,而且主目錄配備 5 GB 的永久磁碟儲存空間。按一下畫面右上角的圖示,開啟 Google Cloud Shell:

最後,使用 Cloud Shell 設定預設可用區和專案:

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

你也可以選擇不同區域。如要進一步瞭解可用區,請參閱區域和可用區說明文件

在本節中,您將使用 Cloud Launcher 建立執行 nginx+ 的 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/ 測試 nginx 是否正在執行及可供存取,其中 EXTERNAL_IPnginx-plus-1 的公開 IP,您應該會看到 Nginx 頁面:

您也可以輸入下列指令,查看正在執行的執行個體:

$ gcloud compute instances list

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

接下來的步驟會說明如何啟用 Stackdriver,以及如何使用控制台。

根據預設,Google Stackdriver 目前為 Beta 版,且不會為新專案啟用。如要啟用這項功能,請前往左側導覽列,然後按一下「監控」(可能需要向下捲動才能找到)

在下一個畫面中,按一下「啟用監控」,然後等待一分鐘,系統就會啟用這項功能。

啟用後,內容會隨之變更,並顯示下方文字。按一下「前往監控」即可開始探索!您需要登入 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 光模式!)。請注意「查看記錄」選項,我們稍後會介紹這個選項。

您可以透過運作時間檢查,迅速確認網頁、執行個體或資源群組的健康狀態。系統會從全球多個位置定期執行所設各項檢查。運作時間檢查可以做為快訊政策定義中的條件。

如要顯示檢查及其狀態,請在頂端選單中選取「Alerting」(快訊) >「Uptime Checks」(運作時間檢查)。您也可以在 Google Stackdriver 資訊主頁和特定資源專屬頁面中,找到「運作時間檢查」部分。如果運作時間檢查涵蓋一組資源,您可以展開檢查,顯示群組中個別成員的狀態。

我們來建立運作時間檢查。在 Stackdriver 主畫面中找出運作時間檢查小工具:

畫面上會顯示新的彈出式視窗。我們可以為單一資源或資源群組設定運作時間檢查、使用自訂標頭和酬載、新增驗證和其他選項。目前我們只會使用預設的 HTTP 檢查,每 1 分鐘檢查一次自動建立的 Nginx 群組。

請參考下方的螢幕截圖,填寫不同選項:

按一下「測試」按鈕,確認端點可連線 (應會看到 3 個綠色勾號),然後按一下「儲存」。注意:如果沒有收到「ok」回覆,還是可以繼續進行實驗室,這可能只是測試檢查時間問題。

接著,系統會顯示「已建立運作時間檢查」方塊,並詢問是否要為這項檢查建立快訊政策。我們將在下一節中執行這項操作,請先不要點選任何項目。

您可以設定快訊政策,定義判斷雲端服務和平台是否正常運作的條件。Cloud Monitoring 提供多種指標和健康狀態檢查,可用於政策中。

有資源違反快訊政策條件時,「事件」專區中就會建立並顯示事件。回應者可以確認收到通知,並在處理後關閉事件。

按一下「建立快訊政策」,接著設定政策。

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

輸入政策名稱:「nginx 群組的運作時間檢查」

現在在通知方法部分,按一下「新增通知」

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

返回 Stackdriver 首頁 (按一下左上角的標誌)。

現在,您應該會在資訊主頁的運作時間檢查專區中,看到自己建立的運作時間檢查。目前狀態應為綠色。

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

現在,我們來製造一些問題 :)

我們來看看停止 Nginx 服務時會發生什麼情況。

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

$ gcloud compute ssh nginx-plus-1

然後輸入:

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

現在我們建立的運作時間檢查應該會失敗。因此系統會建立事件,並將快訊通知電子郵件傳送至您在上方輸入的地址。系統需要一分鐘才能偵測到狀況 (請回想設定運作時間檢查時的 1 分鐘時間長度),因此請前往檢查 nginx 群組頁面。

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

  1. 你可以在首頁按一下群組名稱。系統會切換至專為監控群組資源而建構的資訊主頁。您也可以自訂這個資訊主頁。



  2. 從頂層選單選取「群組」,然後找出特定群組。

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

您現在看到的是自動建立的 nginx 群組專屬資訊主頁。右側會顯示與群組相關的幾項重要指標圖表。換句話說,這些圖表顯示與 nginx 群組中所有資源相關的指標 (我們先前建立的 3 個 nginx+ VM)。

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

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

請注意,這些設定只與群組相關,因此事件記錄只會列出群組的事件。

您可以點選不同資源或子群組,切換至各自的專屬資訊主頁。舉例來說,按一下「nginx-plus-1」會前往資訊主頁,其中只包含與該執行個體相關的指標和檢查。馬上試試:

當一組快訊條件符合特定條件時,系統就會開啟 Stackdriver 事件。在本例中,我們已為 nginx 運作時間檢查設定快訊,目前 nginx-plus-1 上的檢查失敗。事件可協助您追蹤目前狀況,並在處理問題時與其他團隊成員協作。

讓我們確認事件,讓其他團隊成員知道我們正在調查:

請注意,這會將事件狀態從「開啟」變更為「已確認」。情況仍在持續 (快訊政策條件仍遭違反),但您要向團隊成員表示自己正在處理。這項操作也會記錄在事件記錄中。

事件可以手動解決,也可以自動解決。如要查看後者,請透過 SSH 連線至 nginx-plus-1 並修正問題:

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

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

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

如要存取 Cloud Logs Viewer,請從 Cloud Console 左側選單中選擇:

系統會將您帶往記錄檢視器,您可以在其中使用預先定義的查詢,或建立及儲存自己的自訂查詢,即時串流來自雲端部署中多項資源的記錄,從記錄建立指標,匯出記錄等等。

你可以使用一些實用控制項,快速篩選出相關資訊:

  1. 依資源類型篩選
  2. 篩選所選資源的特定記錄類型
  3. 篩選特定記錄層級
  4. 篩選特定日期,以便查看過去的問題
  5. 開啟/關閉持續串流功能
  6. 文字、標籤或規則運算式搜尋框

現在我們來練習縮小範圍,只查看特定記錄。

從資源類型選取器 (螢幕截圖中的 1) 選取「Compute Engine」->「所有資源類型」

接著從記錄類型選取器 (螢幕截圖中的 2) 選取 nginx-access,即可查看所有存取記錄

現在開啟持續串流 (5),即可在記錄檔產生時即時查看。如果沒有看到任何新記錄,請嘗試在瀏覽器中輸入其中一個 nginx-plus 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 左窗格選單中選取「Monitoring」),然後移除我們建立的運作時間檢查和快訊政策。您可以透過頂層選單項目「Alerting」(快訊) ->「Policies overview」(政策總覽) 和「Alerting」(快訊) ->「Uptime checks」(運作時間檢查) 執行這項操作。

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

涵蓋內容

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

後續步驟

  • 藉此建立自訂資訊主頁。
  • 瞭解建立快訊政策時的各種選項。
  • 瞭解使用 Cloud Logging 時可用的不同選項。

瞭解詳情

提供意見