透過 Eventarc 將 Datadog 監控快訊轉送至 Google Cloud (第 1 部分)

1. 簡介

cb762f29e9183a3f.png 3c7ca8629bc25d9c.png

Eventarc 可輕鬆將 Google Cloud 服務與各種來源的事件連結。您可以在其中建構微服務鬆耦合的分散式事件導向架構。此外,這項服務還會為您處理事件擷取、傳送、安全防護、授權和錯誤處理作業,進而提升開發人員的靈活度和應用程式的復原能力。

Datadog 是雲端應用程式的監控和安全防護平台。這項服務會整合端對端追蹤記錄、指標和記錄檔,讓您觀察應用程式、基礎架構和第三方服務。

在本程式碼研究室中,您將瞭解如何使用 Eventarc,將簡單的 Datadog 監控快訊傳送至 Google Cloud。

課程內容

  • 如何探索 Datadog 供應商。
  • 如何設定 Datadog 供應商管道。
  • 瞭解如何建立工作流程來記錄事件。
  • 如何使用管道建立 Eventarc 觸發條件。
  • 如何建立 Datadog 監控器。
  • 如何測試 Datadog 監控器、Eventarc 觸發條件和工作流程。

2. 設定和需求

自修實驗室環境設定

  1. 登入 Google Cloud 控制台,然後建立新專案或重複使用現有專案。如果沒有 Gmail 或 Google Workspace 帳戶,請先建立帳戶

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • 專案名稱是這個專案參與者的顯示名稱。這是 Google API 未使用的字元字串。你隨時可以更新該位置資訊。
  • 專案 ID 在所有 Google Cloud 專案中不得重複,且設定後即無法變更。Cloud 控制台會自動產生不重複的字串,通常您不需要在意這個字串。在大多數程式碼研究室中,您需要參照專案 ID (通常會標示為 PROJECT_ID)。如果您不喜歡產生的 ID,可以產生另一個隨機 ID。你也可以嘗試自訂名稱,看看是否可用。完成這個步驟後就無法變更,且專案期間都會維持這個設定。
  • 請注意,部分 API 會使用第三個值,也就是「專案編號」。如要進一步瞭解這三種值,請參閱說明文件
  1. 接著,您需要在 Cloud 控制台中啟用帳單,才能使用 Cloud 資源/API。完成本程式碼研究室的費用應該不高,甚至完全免費。如要關閉資源,避免產生本教學課程以外的費用,您可以刪除自己建立的資源,或刪除整個專案。Google Cloud 新使用者可參加價值$300 美元的免費試用計畫。

啟動 Cloud Shell

雖然可以透過筆電遠端操作 Google Cloud,但在本程式碼研究室中,您將使用 Google Cloud Shell,這是可在雲端執行的指令列環境。

Google Cloud 控制台中,點選右上工具列的 Cloud Shell 圖示:

55efc1aaa7a4d3ad.png

佈建並連線至環境的作業需要一些時間才能完成。完成後,您應該會看到如下的內容:

7ffe5cbb04455448.png

這部虛擬機器搭載各種您需要的開發工具,並提供永久的 5GB 主目錄,而且可在 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 \
  eventarc.googleapis.com \
  eventarcpublishing.googleapis.com \
  workflows.googleapis.com \
  workflowexecutions.googleapis.com

3. 探索 Datadog 供應商

Eventarc 提供者是一種服務或實體,可將事件直接傳送至 Google Cloud,然後再轉送至您的專案。第三方提供者 (例如 Datadog) 是指透過 Eventarc 與 Google Cloud 整合的非 Google Cloud 提供者。

在 Cloud Shell 中執行下列指令,查看 Google Cloud 和第三方供應商的清單:

gcloud eventarc providers list

這份清單列出 Google Cloud 和第三方供應商,以及這些供應商的服務地點:

NAME: storage.googleapis.com
LOCATION: asia

NAME: cloudaudit.googleapis.com
LOCATION: asia

NAME: pubsub.googleapis.com
LOCATION: asia

...

您可以使用下列指令,將清單縮小至第三方供應商:

gcloud eventarc providers list --filter='eventTypes.type!~^google*'

清單中應該會顯示 Datadog:

NAME: datadog
LOCATION: us-central1

您也可以描述 Datadog 提供者,查看支援的事件:

gcloud eventarc providers describe datadog --location $REGION

displayName: Datadog
eventTypes:
- type: datadog.v1.alert
name: projects/project-id/locations/us-central1/providers/datadog

4. 設定頻道

如要將專案與供應商整合,您必須設定管道。包括建立管道、擷取管道詳細資料,以及將這些詳細資料傳送給供應商。供應商初始化與管道的連線後,即可開始將事件傳送至專案。

建立頻道

您可以使用 gcloud 為 Datadog 供應商建立管道:

CHANNEL_NAME=datadog-channel
gcloud eventarc channels create $CHANNEL_NAME \
   --provider datadog \
   --location $REGION

您也可以在 Google Cloud 控制台的 Eventarc 頁面中,從「Channels」部分建立管道:

d03a7173b25e5ea6.png

擷取頻道詳細資料

建立管道後,請從 gcloud 擷取管道詳細資料:

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: PENDING
uid: 183d3323-8cas-4e95-8d72-7d8c8b27cf9e
updateTime: '2022-03-09T09:53:48.290217299Z'

同樣地,您也可以從 Google Cloud 控制台查看管道:

80d8b2b6a46cb4c5.png

頻道狀態會顯示頻道的狀態。可以是下列其中一項:

  • PENDING— 管道已成功建立,且有啟用權杖可與供應商建立連結。如要將管道狀態從「PENDING」變更為「ACTIVE」,必須將權杖提供給供應商,並在管道建立後 24 小時內使用權杖連結管道。
  • ACTIVE:頻道已成功連結供應商。ACTIVE 管道已準備好接收及轉送來自供應商的事件。
  • INACTIVE—頻道無法接收事件,也無法重新啟用。供應商已與這個頻道中斷連線,或是頻道啟用權杖已過期,因此供應商未連線。如要重新建立與供應商的連線,請為供應商建立新管道。

啟用權杖是一次性且設有時間限制的權杖,用於在供應商和訂閱者的專案之間建立連線。只有在建立頻道時選取的特定供應商可以使用權杖。權杖的有效期限為頻道建立後 24 小時。24 小時後,頻道會變成 INACTIVE

將頻道詳細資料傳送給供應商

您必須將下列管道詳細資料傳送給 Datadog 供應商:

  • 頻道名稱 (例如 projects/project-id/locations/us-central1/channels/datadog-channel)
  • 啟用權杖 (例如 so5g4Kdasda7y2MSasdaGn8njB2)

登入 Datadog,前往整合頁面,確認已安裝 Google Eventarc 整合:

9736bd517e1fa19a.png

在 Google Eventarc 的設定部分,輸入完整管道名稱和啟用權杖:

a17f522075cdd92e.png

現在您應該會在管道清單中看到該管道,幾秒後,Google Cloud 控制台也會顯示該管道已啟用:

8399d528ccbd4c20.png

現在你已可使用頻道!

5. 建立工作流程

您需要在 Google Cloud 中設定目的地,才能接收來自提供者的事件。Eventarc 支援多種事件目的地,例如 Cloud Run、Workflows、Kubernetes 服務。在本例中,請部署工作流程,單純記錄收到的事件。

使用以下內容建立 workflow-datadog1.yaml 檔案:

main:
  params: [event]
  steps:
  - logStep:
      call: sys.log
      args:
        data: ${event}

請注意,工作流程會將事件當做參數接收。這項事件會透過 Eventarc 從 Datadog 監控服務傳送。收到事件後,工作流程只會記錄收到的事件。

部署工作流程:

WORKFLOW_NAME=workflow-datadog1
gcloud workflows deploy $WORKFLOW_NAME \
  --source workflow-datadog1.yaml \
  --location $REGION

工作流程已部署,但尚未執行。收到 Datadog 快訊時,系統會透過 Eventarc 觸發條件執行這項函式。

6. 建立 Eventarc 觸發條件

現在,您可以使用 Eventarc 觸發條件,將 Datadog 提供者的事件連結至工作流程。

設定服務帳戶

建立觸發條件時,您需要具備 eventarc.eventReceiver 角色的服務帳戶。您可以建立專屬服務帳戶,也可以使用預設的運算服務帳戶。

為簡化作業,請使用預設的運算服務帳戶,並授予 eventarc.eventReceiver 角色:

PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
    --role roles/eventarc.eventReceiver

建立觸發條件

使用 Datadog 管道、事件類型和工作流程目的地建立觸發條件:

gcloud eventarc triggers create datadog-trigger1 \
  --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-trigger1
TYPE: datadog.v1.alert
DESTINATION: Workflows: workflow-datadog1
ACTIVE: Yes

7. 建立 Datadog 監控器

您現在要建立 Datadog 監控器,並連結至 Eventarc。

這會是 Hello World 類型的監控器,並採用預設值。您將手動觸發這項服務,產生監控警告,進而產生 Google Cloud 中的 Eventarc 事件。

如要在 Datadog 中建立監控機制,請登入 Datadog。將滑鼠游標懸停在主選單中的 Monitors 上,然後按一下子選單中的 New Monitor。螢幕類型有很多種,選擇Metric監控器類型。

New Monitor 頁面中,保留步驟 1 和 2 的預設值。

  • 在步驟 3 中,將 Alert threshold 設為 1
  • 在步驟 4 中,將 Test monitor for Eventarc 設為監控器名稱,並將 Notify your team 設為 @eventarc_<your-project-id>_<your-region>_<your-channel-name>

請將監控器頁面保持開啟,以便在下一個步驟中測試監控器。

8. 測試監控器和觸發條件

如要測試 Datadog 監控器和 Eventarc 觸發條件,請手動觸發監控器。

在監控器建立頁面底部,按一下 Test Notifications 按鈕:

32ccf1cc47b01150.png

然後按一下 Run Test 按鈕:

7f2ff70ec673007b.png

這項操作應會模擬監控工具中的狀態轉換,並觸發 Eventarc 事件。

檢查 workflow-datadog1 工作流程。您應該會看到新的執行作業:

adf7cd97ca2e8da7.png

查看執行作業的詳細資料。您應該會在工作流程的輸入內容和記錄中,看到監控快訊產生的 Datadog 事件類型 datadog.v1.alert

dc78fd8460e5fc0e.png

9. 恭喜

恭喜,您已完成本程式碼研究室!您可以繼續進行第二個程式碼研究室,瞭解如何使用 Workflows 回應 Datadog 監控快訊。

涵蓋內容

  • 如何探索 Datadog 供應商。
  • 如何設定 Datadog 供應商管道。
  • 瞭解如何建立工作流程來記錄事件。
  • 如何使用管道建立 Eventarc 觸發條件。
  • 如何建立 Datadog 監控器。
  • 如何測試 Datadog 監控器、Eventarc 觸發條件和工作流程。