0

Azure Web アプリがあり、診断ログを有効にして、アプリケーション トレース メッセージを診断ログとして記録できるようにしました。Web アプリ メソッドからの情報デバッグまたは監査トレース メッセージを診断ログ BLOB ストレージ アカウント コンテナーに追加する診断ログ用の .net ロガー ライブラリを使用しています。

診断ログが BLOB 内に 2 つのコンテナーを追加していることに気付きました。1 つはアプリケーション ログ用、もう1 つは App Service (Web アプリ) で診断ログが有効になっている場合のWeb ログ用です。

作成される BLOB コンテナーの 1 つは大文字で、もう 1 つは小文字です。小文字のケース名の BLOB コンテナーは、私の理解では、アプリケーション ログを含むものです。

これで、Blob ストレージの 'Microsoft.Storage.BlobCreated' イベントのイベント グリッド サブスクリプションが作成されました。また、この BLOB 作成イベントの Event Grid でサブスクリプションを作成するときに、関数 (HTTP トリガーを使用) をエンドポイントとして使用しています。また、BLOB 作成イベントでフィルター処理を行っており、サブジェクト名のフィルターも含めて、アプリケーション ログの BLOB 作成イベントのみを受け取るようにする予定です。アプリケーション監査、トレース、または診断ログを含むアプリケーション ログが、アプリケーションから送信するすべての詳細と共に BLOB コンテナー (すべて小文字) にあることを確認しました。

今私が観察している奇妙なことは、Azure サーバーレス関数 (BLOB ファイルの作成の結果として起動されたとき) で、要求データ (受信した入力) をログに記録しているときに、Web からのみイベントを受信して​​いることです。ログ (すべて大文字の case のコンテナー名) で、これまでのところ、アプリケーション ログに対して発生した BLOB 作成イベントは確認できません。新しく作成されたブロブのファイルパスを含む「件名」フィールドに基づいて、これに気付きました。

私の質問は、アプリケーション ログの BLOB 作成イベントを受信しないのはなぜですか?

Blob Storage アカウントのリソース ID を使用するサブスクリプションを作成するための Azure CLI スクリプトを次に示します。

endpoint= [関数エンドポイント]

includeEvents=Microsoft.Storage.BlobCreated

az eventgrid event-subscription create
--resource-id $storageid
--name alert-blog-storage-created
--endpoint $endpoint
--included-event-types $includeEvents

これは、Event Grid サブスクリプションを作成するために使用した参照としてのリンクです。

4

0 に答える 0