Azure Event Grid を使用すると、イベント ベースのアーキテクチャを使用してアプリケーションを簡単に構築できます。 このソリューションでは、ストレージ BLOB やリソース グループなど、Azure サービスからのイベントに対する組み込みサポートが提供されています。 さらに Event Grid では、カスタム トピックを使用した独自のイベントもサポートされます。
Event Grid の使用方法の詳細については、「Azure Event Grid を使用した カスタム イベントの作成とルーティング」を参照してください。
Event Grid を使用してワークロードのオペレーショナル エクセレンスを向上させる方法を理解するには、 Event Grid トピックと Event Grid ドメインの診断ログを参照してください。
次のセクションは、Azure Event Grid とオペレーショナル エクセレンスに固有のものです。
- 設計に関する考慮事項
- 構成チェックリスト
- 推奨される構成オプション
- ソース成果物
設計に関する考慮事項
Azure Event Grid では、アップタイム SLA が提供されます。 詳細については、 Event Grid の SLA を参照してください。
チェックリスト
オペレーショナル エクセレンスを念頭に置いて Azure Event Grid を構成しましたか?
- Event Grid で失敗したイベント配信を監視します。
- バッチイベントを使用します。
- イベント バッチのサイズが
1MB
を超えることはできません。 - ロード テスト中にバッチ サイズの選択を構成して最適化します。
- カスタム コードを保持するエンドポイントに配信する場合にのみ、Event Grid メッセージが
HTTP
200-204
応答で受け入れられることを確認します。 - Event Grid で失敗したイベントの発行を監視します。
構成に関する推奨事項
Azure Event Grid を構成するときにオペレーショナル エクセレンスを最適化するには、次の推奨事項を検討してください。
勧告 | 説明 |
---|---|
Event Grid で失敗したイベント配信を監視します。 | Delivery Failed メトリックは、メッセージをイベント ハンドラー (タイムアウトまたは200-204 HTTP 以外の状態コード) に配信できないたびに増加します。 イベントを失えない場合は、Dead-Letter-Queue (DLQ) ストレージ アカウントを設定します。 DLQ アカウントでは、最大再試行回数の後に配信できないイベントが配置されます。 必要に応じて、たとえば Event Grid を介して 新しいファイル イベントを処理することにより、DLQ ストレージ アカウントに通知システムを実装します。 |
高スループットのシナリオでは、バッチ 処理されたイベントを使用します。 | サービスは、1 つのイベントを含む配列ではなく、複数のイベントを含む json 配列をサブスクライバーに配信します。 使用するアプリケーションは、これらの配列を処理できる必要があります。 |
イベント バッチのサイズが 1MB を超えることはできません。 |
メッセージ ペイロードが大きい場合、バッチに収まるメッセージは 1 つまたは少数です。 使用するサービスでは、より多くのイベント バッチを処理する必要があります。 イベントに大きなペイロードがある場合は、BLOB ストレージなどの別の場所に格納し、イベントに参照を渡すことを検討してください。 CloudEvents スキーマを使用してサード パーティのサービスと統合する場合は、 64KB イベントを超えないようにすることをお勧めします。 |
ロード テスト中にバッチ サイズの選択を構成して最適化します。 | バッチ サイズの選択は、ペイロード サイズとメッセージ ボリュームによって異なります。 |
Event Grid で失敗したイベントの発行を監視します。 | Unmatched メトリックには、発行されたが、どのサブスクリプションにも一致しないメッセージが表示されます。 アプリケーション アーキテクチャによっては、後者が意図的な場合があります。 |
ソース成果物
使用可能なすべての Event Grid トピックの 入力スキーマ の種類を確認するには、次のクエリを使用します。
Resources
| where type == 'microsoft.eventgrid/topics'
| project name, resourceGroup, location, subscriptionId, properties['inputSchema']
Event Grid ドメインの既存のプライベート エンドポイントの リソース ID を 取得するには、次のクエリを使用します。
Resources
| where type == 'microsoft.eventgrid/domains' and notnull(properties['privateEndpointConnections'])
| mvexpand properties['privateEndpointConnections']
| project-rename privateEndpointConnections = properties_privateEndpointConnections
| project name, resourceGroup, location, subscriptionId, privateEndpointConnections['properties']['privateEndpoint']['id']
使用可能なすべての Event Grid ドメインの パブリック ネットワーク アクセス の状態を特定するには、次のクエリを使用します。
Resources
| where type == 'microsoft.eventgrid/domains'
| project name, resourceGroup, location, subscriptionId, properties['publicNetworkAccess']
すべてのパブリック Event Grid ドメインの ファイアウォール規則 を識別するには、次のクエリを使用します。
Resources
| where type == 'microsoft.eventgrid/domains' and properties['publicNetworkAccess'] == 'Enabled'
| project name, resourceGroup, location, subscriptionId, properties['inboundIpRules']
すべてのパブリック Event Grid トピックの ファイアウォール規則 を特定するには、次のクエリを使用します。
Resources
| where type == 'microsoft.eventgrid/topics' and properties['publicNetworkAccess'] == 'Enabled'
| project name, resourceGroup, location, subscriptionId, properties['inboundIpRules']
Event Grid トピックの既存のプライベート エンドポイントの リソース ID を 取得するには、次のクエリを使用します。
Resources
| where type == 'microsoft.eventgrid/topics' and notnull(properties['privateEndpointConnections'])
| mvexpand properties['privateEndpointConnections']
| project-rename privateEndpointConnections = properties_privateEndpointConnections
| project name, resourceGroup, location, subscriptionId, privateEndpointConnections['properties']['privateEndpoint']['id']
使用可能なすべての Event Grid ドメインの 入力スキーマ の種類を確認するには、次のスキーマを使用します。
Resources
| where type == 'microsoft.eventgrid/domains'
| project name, resourceGroup, location, subscriptionId, properties['inputSchema']
使用可能なすべての Event Grid トピックの パブリック ネットワーク アクセス の状態を特定するには、次のクエリを使用します。
Resources
| where type == 'microsoft.eventgrid/topics'
| project name, resourceGroup, location, subscriptionId, properties['publicNetworkAccess']