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

1. 簡介

cb762f29e9183a3f.png 3c7ca8629bc25d9c.png

Eventarc 可讓您輕鬆連結 Google Cloud 服務與各種來源的事件。Kubernetes 可讓您建構事件導向的架構,其中微服務的鬆耦合和分佈情形很低。它也能處理事件擷取、提交、安全性、授權和錯誤處理等工作,提升開發人員的靈活性和應用程式彈性。

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 未使用的字元字串。您隨時可以更新這項資訊。
  • 所有 Google Cloud 專案的專案 ID 均不得重複,且設定後即無法變更。Cloud 控制台會自動產生一個不重複的字串。但通常是在乎它何在在大部分的程式碼研究室中,您必須參照專案 ID (通常為 PROJECT_ID)。如果您對產生的 ID 不滿意,可以隨機產生一個 ID。此外,您也可以自行嘗試,看看系統是否提供該付款方式。在完成這個步驟後就無法變更,而且在專案期間仍會保持有效。
  • 資訊中的第三個值是專案編號,部分 API 會使用這個編號。如要進一步瞭解這三個值,請參閱說明文件
  1. 接下來,您需要在 Cloud 控制台中啟用計費功能,才能使用 Cloud 資源/API。執行這個程式碼研究室並不會產生任何費用,如果有的話。如要關閉資源,以免系統產生本教學課程結束後產生的費用,您可以刪除自己建立的資源,或刪除整個專案。Google Cloud 的新使用者符合 $300 美元免費試用計畫的資格。

啟動 Cloud Shell

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

Google Cloud 控制台,按一下右上方的工具列上的 Cloud Shell 圖示:

55efc1aaa7a4d3ad.png

佈建並連線至環境的作業只需幾分鐘的時間。完成後,您應該會看到類似下方的內容:

7ffe5cbb04455448.png

這部虛擬機器都裝載了您需要的所有開發工具。提供永久的 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 \
  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 頁面的「管道」部分建立所需管道:

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,前往「Integration」(整合) 頁面,確認已安裝 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 供應商的事件連結至 Workflows。

設定服務帳戶

建立觸發條件時,您必須具備具備 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 觸發條件和工作流程。