程式碼研究室簡介
1. 簡介
上次更新日期:2023 年 6 月 21 日
運作時間檢查的可用性快訊
針對運作時間檢查的快訊功能,您可以快速找出並解決可能影響服務的問題。您可以收到服務中斷快訊,以盡可能降低對使用者和客戶的影響。
運作時間檢查的間隔時間採間隔,最短為 60 秒。如果您需要 60 秒以外的精細程度,可以透過記錄式快訊將錯誤代碼監控為動態事件,當做無法使用的原因。如果時間間隔為 60 秒以上,運作時間檢查是簡單的方法,只需要再做一些額外設定即可評估服務。
如果服務無法使用,即使沒有流量,運作時間檢查也會偵測問題。另一方面,流量可能會受系統以外的因素影響,例如維護、升級,甚至是系統外部因素,例如天氣不佳或會幹擾使用情形的體育活動。
如要進一步瞭解運作時間檢查的使用時機,請參閱「確保 Google Cloud 資源運作時間」一文。
以 Pub/Sub 主題做為快訊通知管道
Pub/Sub 主題可做為 Google Cloud Monitoring 通知管道來傳送快訊至 Pub/Sub 訂閱項目。將 Cloud Monitoring 快訊與其他系統整合,包括第三方通知服務。
如要使用 Pub/Sub 主題做為通知管道,您必須先建立 Pub/Sub 主題和 Pub/Sub 訂閱項目。接著,您需要建立使用 Pub/Sub 主題做為目的地的 Cloud Monitoring 通知管道。
快訊觸發時,Cloud Monitoring 會傳送訊息至 Pub/Sub 主題。接著,Pub/Sub 訂閱項目的訂閱者就能處理訊息並採取適當行動。
建構項目
在這個程式碼研究室中,您將部署應用程式、建立 Pub/Sub 主題,並為使用 Pub/Sub 主題做為通知管道的應用程式建立運作時間檢查快訊。
課程內容
- 如何建立 Pub/Sub 主題
- 如何建立運作時間檢查和快訊
本程式碼研究室著重於建立運作時間檢查的快訊。我們不會對與本主題無關的概念和應用程式程式碼做介紹,但會事先準備好這些程式碼,屆時您只要複製及貼上即可。
軟硬體需求
- Google Cloud 帳戶具備下列權限:
- 部署 Cloud Run 應用程式
- 建立 Pub/Sub 主題
- 建立運作時間檢查
- 建立快訊
2. 開始設定
選取或建立 Google Cloud 專案
如要選取現有專案,請使用下拉式選單:
如要在 Google Cloud 中建立新專案,請按照下列步驟操作:
- 前往 Google Cloud Platform 主控台。
- 按一下「建立專案」按鈕。
- 請輸入專案名稱。
- 選取專案的帳單帳戶。
- 按一下 [建立] 按鈕。
系統將建立您的專案,並將您帶往專案資訊主頁。完成上述設定後,您就可以開始使用 Google Cloud 服務。
以下提供每個步驟的其他詳細資料:
- 名稱:機構內的專案名稱不得重複。
- 帳單帳戶:您可以使用現有的帳單帳戶或建立新帳戶。
- 建立:輸入所有必要資訊後,按一下「建立」按鈕即可建立專案。
詳情請參閱「建立專案的 Google Cloud 說明文件」。
3. 部署 API 應用程式
什麼是範例應用程式或 API?
我們的應用程式是簡單的 Inventory API 應用程式,會顯示一個帶有幾項作業的 REST API 端點,以便列出庫存商品及取得特定商品庫存數量。
部署 API 並假設 API 託管於 https://<somehost> 之後,便可按照以下方式存取 API 端點:
https://<somehost>/inventory
這裡會列出含有當前庫存層級的所有產品項目。
https://<somehost>/inventory/{productid}
這樣就會提供一筆記錄,其中包含該產品的產品 ID 和商品目錄層級。
傳回的回應資料為 JSON 格式。
注意:這個 API 應用程式僅供示範,不代表安全可靠的 API 實作項目。我們提供一個快速申請,說明本研究室的主要用途,也就是 Google Cloud 作業套件。
範例資料與 API 要求/回應
為簡化作業,應用程式並非由後端的資料庫提供技術支援。當中包含 3 個範例產品 ID 及個別商品目錄層級。
產品 ID | 現場廣告空間層級 |
I-1 | 10 |
I-2 | 20 |
I-3 | 30 |
API 要求與回應範例如下:
API 要求 | API 回應 |
https://<somehost>/inventory | [ { "I-1": 10, "I-2": 20, "I-3": 30 }] |
https://<somehost>/inventory/I-1 | { "productid": "I-1", "qty": 10} |
https://<somehost>/inventory/I-2 | { "productid": "I-2", "qty": 20} |
https://<somehost>/inventory/I-200 | { "productid": I-200, "qty": -1} |
複製存放區
雖然 Google Cloud 可以從筆記型電腦遠端操作,但在本程式碼研究室中,您將使用 Google Cloud Shell,這是一種在 Cloud 中執行的指令列環境。
在 GCP 控制台的右上方,按一下「Cloud Shell」圖示:
佈建並連線至環境的作業只需幾分鐘的時間。完成後,您應該會看到類似下方的內容:
這個虛擬機器搭載您需要的所有開發工具。提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作,大幅提高網路效能和驗證能力。這個研究室中的所有工作都可以透過瀏覽器完成。
設定 gcloud
在 Cloud Shell 中設定專案 ID,並儲存為 PROJECT_ID 變數。
PROJECT_ID=[YOUR-PROJECT-ID]
gcloud
config
set
project
$PROJECT_ID
接著執行下列指令:
$
git
clone
https://github.com/rominirani/cloud-code-sample-repository.git
這項操作會在這個資料夾中建立名為「cloud-code-sample-repository」的資料夾。
(選用) 在 Cloud Shell 執行應用程式
您可以按照下列步驟在本機執行應用程式:
- 在終端機中,透過下列指令前往 Python 版本的 API:
$
cd
cloud-code-sample-repository
$
cd
python-flask-api
- 在終端機中輸入以下指令 (撰寫時,Cloud Shell 已安裝 Python 3.9.x,並使用預設版本。如果打算在筆電本機上執行,建議使用 Python 3.8 以上版本) :
$
python
app.py
- 您可以執行下列指令,在本機啟動 Python 伺服器。
按一下「透過以下通訊埠預覽:8080」。5. 系統會開啟瀏覽器視窗。系統會顯示 404 錯誤,表示沒有問題。修改網址,並變更為只在主機名稱後方加上 /inventory。
例如:看起來會像這樣:
https://8080-cs-557561579860-default.cs-asia-southeast1-yelo.cloudshell.dev/inventory
這樣會顯示先前所述的商品目錄項目清單:
- 如要立即停止伺服器,請前往終端機並按下 Ctrl-C 鍵
部署應用程式
接著將這個 API 應用程式部署至 Cloud Run。這個程序包括使用 gcloud 指令列用戶端執行指令,將程式碼部署至 Cloud Run。
在終端機中輸入下列 gcloud 指令:
$ gcloud run deploy --source .
這需要回答多個問題,並在下文中說明幾個重點:
- 服務名稱 (python-flask-api):請使用這項預設值,或是選擇類似「my-inventory-api」之類的內容
- 專案 [613162942481] 未啟用 API [run.googleapis.com]。要啟用並重試 (這需要幾分鐘的時間) 嗎?(是/否)?是
- 請指定區域:選擇 31 (us-west-1)
- 專案 [613162942481] 未啟用 API [artifactregistry.googleapis.com]。要啟用並重試 (這需要幾分鐘的時間) 嗎?(是/否)?是
- 如要透過來源部署,您必須具備 Artifact Registry Docker 存放區來儲存建構的容器。系統會在區域 [us-west1] 中建立名為 [cloud-run-source-deploy] 的存放區。
- 要繼續 (是/n) 嗎?是
- 允許在未經驗證的情況下叫用 [my-inventory-api] (y/N)?是
最後,這個程序會啟動 Cloud Run 服務與修訂版本,並將原始碼容器化並推送至 Artifact Registry,然後再部署 Cloud Run 服務 + 修訂版本。請在這項程序中耐心等候 (可能需要 3 至 4 分鐘的時間),系統應會顯示相關服務網址,讓您瞭解如何完成整個程序。
範例執行作業如下所示:
測試應用程式
我們已將應用程式部署至 Cloud Run,您可以按照下列步驟存取 API 應用程式:
- 記下上個步驟中的服務網址。例如在設定中,目標會顯示為
https://my-inventory-api-bt2r5243dq-uw.a.run.app
。我們可以命名為<SERVICE_URL>
。 - 開啟瀏覽器並存取下列 3 個 API 端點網址:
<SERVICE_URL>/inventory
<SERVICE_URL>/inventory/I-1
<SERVICE_URL>/inventory/I-100
這個規格應該與先前在 API 要求和回應範例章節中提供的規格相同。
從 Cloud Run 取得服務詳細資料
我們已將 API 服務部署至無伺服器運算環境的 Cloud Run。我們隨時可以透過 Google Cloud 控制台造訪 Cloud Run 服務。
在主選單中前往 Cloud Run。畫面上隨即會顯示您在 Cloud Run 中執行的服務清單。您應該會看到剛剛部署的服務。依據您選取的名稱,您應該會看到類似下方的內容:
按一下服務名稱即可查看詳細資料。範例詳細資料如下所示:
請注意,網址本身不是網址,但您可以在瀏覽器中輸入服務網址,然後存取我們剛剛部署的 Inventory API。查看「指標」和其他詳細資料。
現在就來瞭解 Google Cloud 作業套件
4. 建立 Pub/Sub 主題來接收快訊通知
如要建立 Pub/Sub 主題,請在 Google Cloud 控制台中按照下列步驟操作:
- 在搜尋框中搜尋「Pub/Sub」,然後前往 Pub/Sub。
- 按一下「主題」分頁標籤 (如果您在別的分頁)。
- 按一下「Create Topic」按鈕。
- 輸入主題名稱。
- 按一下「建立」按鈕。
- 使用複製圖示按鈕複製「主題名稱」。下一節將會用到。
5. 建立運作時間檢查
如要為 Google Cloud Run 應用程式建立運作時間檢查:
- 前往 Google Cloud Platform 主控台。
- 按一下「監控」分頁標籤。
- 按一下「運作時間檢查」分頁標籤。
- 在頁面頂端附近,按一下「Create Uptime Check」(建立運作時間檢查) 按鈕。
- 請使用下列值:
- 通訊協定:HTTPS
- 資源類型:URL
- 主機名稱:輸入不含 https 的 Cloud Run 服務網址部分。範例如下畫面所示。如果不確定服務網址,請透過主要 Google Cloud 控制台前往 Cloud Run,然後前往 Cloud Run 服務的詳細資料,取得服務網址。
- 路徑:healthy
- 檢查頻率:1 分鐘
- 按一下 [Continue] (繼續)。
- 開啟「已啟用內容比對」
- 輸入「All Izz Well」在「回應內容」下方;應用程式傳送完整回應時,中已有這個字串。
- Keep
- 將「可接受的 HTTP 回應代碼」設為「回應代碼類別」,並將「2xx」設為唯一的回應代碼類別。如此一來,系統只會針對字串評估含有 2xx 的回應代碼,其他任何項目則自動判定為失敗檢查。
- 按一下 [Continue] (繼續)。
- 選取 Cloud Pub/Sub 主題做為通知管道,然後按一下「OK」
- 按一下 [Continue] (繼續)。
- 新增容易識別的標題
- 按一下「測試」按鈕
- 檢查完畢後,請點選「Create」按鈕
系統隨即會建立運作時間檢查,並開始監控您的 Cloud Run 應用程式。您可以在「運作時間檢查」分頁中查看運作時間檢查的狀態。
6. 恭喜
恭喜,您已成功設定運作時間檢查,現在可傳送快訊至 Pub/Sub!