1. 簡介
Eventarc 可讓您輕鬆連結 Google Cloud 服務與各種來源的事件。Kubernetes 可讓您建構事件導向的架構,其中微服務的鬆耦合和分佈情形很低。它也能處理事件擷取、提交、安全性、授權和錯誤處理等工作,提升開發人員的靈活性和應用程式彈性。
Datadog 是雲端應用程式的監控與安全性平台。這項服務整合了端對端追蹤記錄、指標和記錄檔,方便您觀測應用程式、基礎架構和第三方服務。
Workflows 是全代管的自動化調度管理平台,可按照您定義 (稱為工作流程) 的順序執行服務。這些工作流程可以結合託管於 Cloud Run 或 Cloud Functions 的服務、Google Cloud 服務 (例如 Cloud Vision AI 和 BigQuery),以及任何以 HTTP 為基礎的 API。
在第一個程式碼研究室中,您已瞭解如何使用 Eventarc 將 Datadog 監控快訊轉送至 Google Cloud。在第二個程式碼研究室中,您將瞭解如何使用 Workflows 回應 Datadog 監控快訊。具體來說,您將建立 2 個 Compute Engine 虛擬機器,並透過 Datadog 監控器加以監控。刪除 1 個 VM 後,您會透過 Eventarc 收到來自 Datadog 至 Workflows 的快訊。Workflows 會反而重新建立已刪除的 VM,以將運作中的 VM 數量調回 2 個。
課程內容
- 如何啟用 Datadog 與 Google Cloud 的整合。
- 如何建立檢查及建立 Compute Engine VM 的工作流程。
- 如何透過 Eventarc 將 Datadog 監控快訊連結至 Workflows。
- 如何建立 Datadog 監控器,並在 VM 遭到刪除時發出快訊。
2. 設定和需求
自修環境設定
- 登入 Google Cloud 控制台,建立新專案或重複使用現有專案。如果您還沒有 Gmail 或 Google Workspace 帳戶,請先建立帳戶。
- 「專案名稱」是這項專案參與者的顯示名稱。這是 Google API 不使用的字元字串,您可以隨時更新。
- 所有 Google Cloud 專案的專案 ID 均不得重複,且設定後即無法變更。Cloud 控制台會自動產生一個不重複的字串。但通常是在乎它何在在大部分的程式碼研究室中,您必須參照專案 ID (通常稱為
PROJECT_ID
),因此如果您不喜歡的話,可以再隨機產生一個,或者,您也可以自行嘗試看看是否可用。是「凍結」建立專案後 - 還有第三個值,也就是部分 API 使用的專案編號。如要進一步瞭解這三個值,請參閱說明文件。
- 接下來,您需要在 Cloud 控制台中啟用計費功能,才能使用 Cloud 資源/API。執行這個程式碼研究室並不會產生任何費用,如果有的話。如要關閉資源,以免產生本教學課程結束後產生的費用,請按照任「清除所用資源」操作請參閱本程式碼研究室結尾處的操作說明。Google Cloud 的新使用者符合 $300 美元免費試用計畫的資格。
啟動 Cloud Shell
雖然 Google Cloud 可以從筆記型電腦遠端操作,但在本程式碼研究室中,您將使用 Google Cloud Shell,這是一種在 Cloud 中執行的指令列環境。
在 Google Cloud 控制台,按一下右上方的工具列上的 Cloud Shell 圖示:
佈建並連線至環境的作業只需幾分鐘的時間。完成後,您應該會看到類似下方的內容:
這部虛擬機器都裝載了您需要的所有開發工具。提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作,大幅提高網路效能和驗證能力。這個研究室中的所有工作都可以透過瀏覽器完成。
設定 gcloud
在 Cloud Shell 中設定專案 ID,並儲存為 PROJECT_ID
變數。
此外,請將 REGION
變數設為 us-central1
。這是您稍後會建立資源的區域。
PROJECT_ID=[YOUR-PROJECT-ID] REGION=us-central1 gcloud config set core/project $PROJECT_ID
啟用 API
啟用所有必要服務:
gcloud services enable \ workflows.googleapis.com \ workflowexecutions.googleapis.com
3. 驗證 Datadog 頻道
請確保您在第一個程式碼研究室中建立的 Datadog 頻道處於有效狀態。在 Cloud Shell 中執行下列指令,擷取管道的詳細資料:
CHANNEL_NAME=datadog-channel gcloud eventarc channels describe $CHANNEL_NAME --location $REGION
畫面會顯示如下的輸出內容:
activationToken: so5g4Kdasda7y2MSasdaGn8njB2 createTime: '2022-03-09T09:53:42.428978603Z' name: projects/project-id/locations/us-central1/channels/datadog-channel provider: projects/project-id/locations/us-central1/providers/datadog pubsubTopic: projects/project-id/topics/eventarc-channel-us-central1-datadog-channel-077 state: ACTIVE uid: 183d3323-8cas-4e95-8d72-7d8c8b27cf9e updateTime: '2022-03-09T09:53:48.290217299Z'
您也可以在 Google Cloud 控制台中查看頻道狀態:
頻道狀態應為 ACTIVE
。如果沒有,請返回第一個程式碼研究室,並按照步驟建立並啟用 Datadog 頻道。
4. 啟用 Datadog 與 Google Cloud 的整合功能
如要使用 Datadog 監控專案,您必須啟用 Datadog 所需的 API、建立服務帳戶,並將服務帳戶連結至 Datadog。
啟用 Datadog 的 API
gcloud services enable compute.googleapis.com \ cloudasset.googleapis.com \ monitoring.googleapis.com
建立服務帳戶
Datadog 的 Google Cloud 整合功能會使用服務帳戶呼叫 Cloud Logging API,收集 Compute Engine 執行個體的節點層級指標。
為 Datadog 建立服務帳戶:
DATADOG_SA_NAME=datadog-service-account gcloud iam service-accounts create $DATADOG_SA_NAME \ --display-name "Datadog Service Account"
授予下列 IAM 角色,讓 Datadog 服務帳戶收集指標、標記、事件和使用者標籤:
DATADOG_SA_EMAIL=$DATADOG_SA_NAME@$PROJECT_ID.iam.gserviceaccount.com gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$DATADOG_SA_EMAIL \ --role roles/cloudasset.viewer gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$DATADOG_SA_EMAIL \ --role roles/compute.viewer gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$DATADOG_SA_EMAIL \ --role roles/monitoring.viewer
建立及下載服務帳戶金鑰。您需要金鑰檔案才能完成 Datadog 的整合。
在 Cloud Shell 主目錄中建立服務帳戶金鑰檔案:
gcloud iam service-accounts keys create ~/key.json \ --iam-account $DATADOG_SA_EMAIL
在 Cloud Shell 中點選 More ⁝
,然後選取 Download File
。在 File path
欄位中輸入 key.json
。如要下載金鑰檔案,請按一下 Download
。
將服務帳戶連結至 Datadog
在 Datadog 帳戶中,前往 Integrations
區段並搜尋 Google Cloud
整合圖塊:
將滑鼠遊標懸停在 Google Cloud Platform
上,前往「Install
」頁面:
在 Upload Private Key File
部分上傳服務帳戶金鑰,然後按一下 Install Integration
,即可安裝整合套件:
完成整合作業後,Datadog 會自動在 Dashboards
下方建立多個 Google Cloud 相關資訊主頁:
5. 建立 Compute Engine VM
接下來,建立一些 Compute Engine 虛擬機器 (VM)。您將使用 Datadog 監控器監控這些 VM,並在 Google Cloud 中使用工作流程回應 Datadog 快訊。
建立 2 個 Compute Engine VM:
gcloud compute instances create instance-1 instance-2 --zone us-central1-a
Cloud 控制台中應該會顯示 VM 的建立和運作時間約一分鐘。一段時間後 (通常為 10 分鐘),您應該會在 Dashboards
的 Google Compute Engine
資訊主頁中,看到 Datadog 中的這些 VM:
6. 建立工作流程
現在您有 2 個 VM 正在執行,請建立工作流程來回應 Datadog 監控器的快訊。工作流程您可以視需要複雜,不過在這種情況下,工作流程會檢查執行中的 VM 執行個體數量。如果低於 2,系統會建立新的 VM 執行個體,確保隨時有 2 個 VM 持續運作。
使用以下內容建立 workflow-datadog2.yaml
檔案:
main: params: [event] steps: - init: assign: - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")} - zone: "us-central1-a" - minInstanceCount: 2 - namePattern: "datadog-instance-##" - listInstances: call: googleapis.compute.v1.instances.list args: project: ${projectId} zone: ${zone} result: listResult - getInstanceCount: steps: - initInstanceCount: assign: - instanceCount: 0 - setInstanceCount: switch: - condition: ${"items" in listResult} steps: - stepA: assign: - instanceCount: ${len(listResult.items)} - findDiffInstanceCount: steps: - assignDiffInstanceCount: assign: - diffInstanceCount: ${minInstanceCount - instanceCount} - logDiffInstanceCount: call: sys.log args: data: ${"instanceCount->" + string(instanceCount) + " diffInstanceCount->" + string(diffInstanceCount)} - endEarlyIfNeeded: switch: - condition: ${diffInstanceCount < 1} next: returnResult - bulkInsert: call: googleapis.compute.v1.instances.bulkInsert args: project: ${projectId} zone: ${zone} body: count: ${diffInstanceCount} namePattern: ${namePattern} instanceProperties: machineType: "e2-micro" disks: - autoDelete: true boot: true initializeParams: sourceImage: projects/debian-cloud/global/images/debian-10-buster-v20220310 networkInterfaces: - network: "global/networks/default" result: bulkInsertResult - returnResult: return: ${bulkInsertResult}
請注意,工作流程會收到事件參數。這個事件來自 Eventarc 的 Datadog 監控服務。接收到事件後,工作流程會檢查運作中的執行個體數量,並視需要建立新的 VM 執行個體。
部署工作流程:
WORKFLOW_NAME=workflow-datadog2 gcloud workflows deploy $WORKFLOW_NAME \ --source workflow-datadog2.yaml \ --location $REGION
工作流程已部署完畢,但尚未執行。收到 Datadog 快訊時,系統會由 Eventarc 觸發條件執行這項作業。
7. 建立 Eventarc 觸發條件
您現在可以透過 Eventarc 觸發條件,將 Datadog 供應商的事件連結至 Workflows。您將使用在第一個程式碼研究室中設定的管道和服務帳戶。
使用 Datadog 管道、事件類型和工作流程目的地建立觸發條件:
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)') gcloud eventarc triggers create datadog-trigger2 \ --location $REGION \ --destination-workflow $WORKFLOW_NAME \ --destination-workflow-location $REGION \ --channel $CHANNEL_NAME \ --event-filters type=datadog.v1.alert \ --service-account $PROJECT_NUMBER-compute@developer.gserviceaccount.com
您可以列出觸發條件,確認新建立的觸發條件是否有效:
gcloud eventarc triggers list --location $REGION NAME: datadog-trigger2 TYPE: datadog.v1.alert DESTINATION: Workflows: workflow-datadog2 ACTIVE: Yes
8. 建立 Datadog 監控器
您現在會建立 Datadog 監控器,並連結至 Eventarc。
監控器會檢查正在執行的 Compute Engine VM 數量,並在 VM 數量低於 2 時發出快訊。
如要在 Datadog 建立監控器,請登入 Datadog。將滑鼠遊標懸停在主選單中的 Monitors
上,然後按一下子選單中的 New Monitor
。監控器有許多種,選擇 Metric
監控類型。
在 New Monitor
頁面中,建立包含下列項目的監控項目:
- 選擇偵測方法:
Threshold
。 - 定義指標:從 (不限位置)
sum by
(不限) 的gcp.gce.instance.is_running
- 設定快訊觸發條件:
- 在過去
5 minutes
內的指標為below
門檻為at least once
時,就會觸發這個事件 - 快訊門檻:
< 2
- 通知你的團隊:
@eventarc_<your-project-id>_<your-region>_<your-channel-name>
- 監控器名稱範例:
Compute Engine instances < 2
現在,點選底部的 Create
即可建立監控器。
9. 測試監控與觸發條件
如要測試 Datadog 監控作業、Eventarc 觸發條件,最終決定工作流程,您需要刪除其中一個 VM:
gcloud compute instances delete instance-2 --zone us-central1-a
執行個體在幾秒後,應該就會在 Google Cloud 控制台中刪除。
這項變更需要一段時間才會顯示在 Datadog 中。一段時間後 (通常為 10 分鐘),您應該會在 Datadog 中看到監控器,以便在 Manage Monitors
區段偵測並發出快訊:
Datadog 監控快訊後,您就會看到快訊透過 Eventarc 導向 Workflows。查看 Workflows 的記錄檔之後,您應該會看到 Workflows 的檢查,找出目前執行個體數量與預期執行個體數量之間的差異:
2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1
系統會使用 datadog-instance-##
前置字串建立新的 VM 執行個體,藉此回應快訊。
最後,您的專案中仍有 2 個 VM,一個是您最初建立的 VM,另一個則是 Workflows 建立的 VM。看到 Datadog 快訊之後,
10. 恭喜
恭喜,您已完成程式碼研究室!
涵蓋內容
- 如何啟用 Datadog 與 Google Cloud 的整合。
- 如何建立檢查及建立 Compute Engine VM 的工作流程。
- 如何透過 Eventarc 將 Datadog 監控快訊連結至 Workflows。
- 如何建立 Datadog 監控器,並在 VM 遭到刪除時發出快訊。