1. はじめに

Eventarc を使用すると、Google Cloud サービスをさまざまなソースからのイベントに簡単に接続できます。これにより、マイクロサービスが疎結合で分散されたイベント ドリブン アーキテクチャを構築できます。また、イベントの取り込み、配信、セキュリティ、認可、エラー処理も自動的に行われるため、デベロッパーのアジリティとアプリケーションの復元力が向上します。
Datadog は、クラウド アプリケーション用のモニタリングおよびセキュリティ プラットフォームです。エンドツーエンドのトレース、指標、ログをまとめて、アプリケーション、インフラストラクチャ、サードパーティ サービスを観察可能にします。
この最初の Codelab では、Eventarc を使用してシンプルな Datadog モニタリング アラートを Google Cloud に転送する方法を学習します。
学習内容
- Datadog プロバイダを見つける方法。
- Datadog プロバイダへのチャネルを設定する方法。
- イベントをログに記録するワークフローを作成する方法。
- チャンネルを使用して Eventarc トリガーを作成する方法。
- Datadog モニターの作成方法。
- Datadog モニター、Eventarc トリガー、ワークフローをテストする方法。
2. 設定と要件
セルフペース型の環境設定
- Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。



- プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。この設定はいつでも変更できます。
- プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は
PROJECT_IDと識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成できます。または、ご自身で試して、利用可能かどうかを確認することもできます。このステップ以降は変更できず、プロジェクトを通して同じ ID になります。 - なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
- 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に請求が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクト全体を削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。
Cloud Shell の起動
Google Cloud はノートパソコンからリモートで操作できますが、この Codelab では、Google Cloud Shell(Cloud 上で動作するコマンドライン環境)を使用します。
Google Cloud Console で、右上のツールバーにある Cloud Shell アイコンをクリックします。

プロビジョニングと環境への接続にはそれほど時間はかかりません。完了すると、次のように表示されます。

この仮想マシンには、必要な開発ツールがすべて用意されています。永続的なホーム ディレクトリが 5 GB 用意されており、Google Cloud で稼働します。そのため、ネットワークのパフォーマンスと認証機能が大幅に向上しています。この Codelab での作業はすべて、ブラウザ内から実行できます。インストールは不要です。
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] ページの [チャンネル] セクションから作成することもできます。

チャンネルの詳細を取得する
チャネルが作成されたら、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 コンソールからチャネルを確認できます。

チャンネルの状態は、チャンネルのステータスを示します。これは次のいずれかになります。
PENDING- チャネルが正常に作成され、プロバイダとの接続を作成するためのアクティベーション トークンが利用可能です。チャンネルの状態をPENDINGからACTIVEに変更するには、チャンネルの作成から 24 時間以内に、トークンをプロバイダに提供してチャンネルの接続に使用する必要があります。ACTIVE- チャンネルがプロバイダと正常に接続されました。ACTIVEチャネルは、プロバイダからイベントを受信してルーティングする準備ができています。INACTIVE- チャンネルはイベントを受信することも、再アクティブ化することもできません。プロバイダがこのチャネルから切断されているか、チャネル アクティベーション トークンの有効期限が切れていて、プロバイダが接続されていません。プロバイダとの接続を再確立するには、プロバイダの新しいチャンネルを作成する必要があります。
アクティベーション トークンは、プロバイダとサブスクライバーのプロジェクト間の接続を作成するために使用される、時間制限のある 1 回限りのトークンです。トークンを使用できるのは、チャンネルの作成プロセスで選択された特定のプロバイダのみです。トークンは、チャンネルの作成後 24 時間有効です。24 時間が経過すると、チャンネルは INACTIVE になります。
チャンネルの詳細をプロバイダに送信する
次のチャンネルの詳細を Datadog プロバイダに送信する必要があります。
- チャンネル名(例:
projects/project-id/locations/us-central1/channels/datadog-channel) - アクティベーション トークン(例:
so5g4Kdasda7y2MSasdaGn8njB2)
Datadog にログインし、統合ページに移動して、Google Eventarc 統合がインストールされていることを確認します。

Google Eventarc の構成セクションで、完全なチャネル名とアクティベーション トークンを入力します。

チャネルのリストにチャネルが表示され、数秒後に Google Cloud コンソールでチャネルが有効になります。

これで、チャンネルを使用する準備が整いました。
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 ボタンをクリックします。

Run Test ボタンをクリックします。

これにより、モニターの状態遷移がシミュレートされ、Eventarc イベントがトリガーされます。
workflow-datadog1 ワークフローを確認します。新しい実行が表示されます。

実行の詳細を確認します。ワークフローの入力とログに、モニタリング アラートから生成された Datadog イベントタイプ datadog.v1.alert が表示されます。

9. 完了
お疲れさまでした。これでこの Codelab は終了です。2 つ目の Codelab に進んで、Workflows を使用して Datadog モニタリング アラートに応答する方法を学習できます。
学習した内容
- Datadog プロバイダを見つける方法。
- Datadog プロバイダへのチャネルを設定する方法。
- イベントをログに記録するワークフローを作成する方法。
- チャンネルを使用して Eventarc トリガーを作成する方法。
- Datadog モニターの作成方法。
- Datadog モニター、Eventarc トリガー、ワークフローをテストする方法。