Azure Servicebus エンティティからメッセージの統計情報を取得するには、Visual Studio App Insightsを使用します。アプリを監視するツールです。基本的に、アプリはイベントを App Insights に送信し、Azure ポータルから、アプリに関するリアルタイムの情報を提供するダッシュボードを作成できます。
Azure Servicebus エンティティを監視するために、アプリからカスタム イベントを送信します。
- 価格を確認できます。月に最大 500 万件のカスタム イベントを送信できる無料プランがあります。500 万を超えるイベントを送信する必要がある場合は、イベントを App Insights に送信する前に、Servicebus エンティティまたは集計カウントごとに App Insights を作成できます。
生データには 7 日間、集計データには 90 日間アクセスできます。
Power BI を使用している場合は、データの継続的なエクスポートを構成できます (無料プランで利用できるとは思わないでください)。
その他の優れた機能として、例外を送信し、App Insigthsで例外が受信されるたびに電子メールを送信するアラートを App Insigths から作成できます。
Web ジョブ/ワーカー ロール/コンソール アプリ/Windows サービスからのサービスバス メッセージを処理する場合は、この記事が出発点になる可能性があります。
したがって、Azure portal から App Insights を作成すると、InstrumentationKeyが取得されます。
nuget からApplicationInsightsをインストールできます。
イベントを App Insights に送信するには、TelemetryClient
. Microsoft では、アプリごとにテレメトリ クライアントのインスタンスを 1 回だけ使用し、アプリが停止または再起動したときに TelemetryClient をフラッシュすることをお勧めします。
var telemetryClient = new TelemetryClient()
{ InstrumentationKey = "MyInstrumentationKey" };
これは非常に基本的な例ですが、要点はわかります。
// Get the message
BrokeredMessage message = ...
try
{
// Process you message
...
// Delete the message from the queue when it is ok.
message.Complete();
// Create and send an event to app insights
var eventTelemetry = new EventTelemetry { Name = "MyQueueName" };
eventTelemetry.Metrics["MessageCount"] = 1;
telemetryClient.TrackEvent(eventTelemetry);
}
catch (Exception ex)
{
// Send back the message to the queue ??? depends if you'd like to re-process it
message.Abandon();
// Send the exception to app insights
telemetryClient.TrackException(ex);
}
このコードを使用すると、App Insights に MyQueueName という名前の新しいイベントが作成されます。このイベントでダッシュボードとフィルターを作成し、MessageCount メトリックを表示できます。より複雑なシナリオでは、x 分ごとに 1 つのイベントを送信し、MessageCount をこの間隔で処理されるメッセージの数に設定できるため、メトリクスを使用します。
ここではアプリ インサイトを使用していますが、次のような他のツールでも同じことができると確信しています。
これがあなたを助けることを願っています!