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 を生成できます。または、ご自身でお試しになることもできます。このステップを終えた後は変更できず、プロジェクト期間中は維持されます。 - なお、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 Service など、さまざまなイベントの宛先をサポートしています。この場合、受信したイベントを単純にロギングするワークフローをデプロイします。
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 トリガー、ワークフローをテストする方法。