次の方法で共有


Event Grid とオペレーショナル エクセレンス

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 を超えることはできません。
  • ロード テスト中にバッチ サイズの選択を構成および最適化します。
  • カスタム コードを保持するエンドポイントに配信する場合にのみ、HTTP200-204 応答で Event Grid メッセージが受け取られるようにします。
  • Event Grid で失敗したイベント発行を監視します。

構成に関する推奨事項

Azure Event Grid を構成するときに、次の推奨事項を考慮して、オペレーショナル エクセレンスを最適化します。

推奨 Description
Event Grid で失敗したイベント配信を監視します。 Delivery Failed メトリックは、メッセージをイベント ハンドラーに配信できなかったたびに増加します (タイムアウトまたは非 200-204 HTTP の状態コード)。 イベントを削除できない場合は、配信不能キュー (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']

次のステップ