为了从 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收到异常,就会向您发送电子邮件。
如果您处理来自 webjob/worker 角色/控制台应用程序/windows 服务的 servicebus 消息,这篇文章可能是一个很好的起点:
因此,在从 Azure 门户创建 App Insights 后,您将获得一个InstrumentationKey。
您可以从 nuget安装ApplicationInsights 。
要将事件发送到 App Insights,您需要实例化一个TelemetryClient
. Microsoft 建议每个应用程序只有一个遥测客户端实例,并在应用程序停止或重新启动时刷新 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 分钟发送一个事件,并将 MessageCount 设置为在此时间间隔内处理的消息数。
在这里,我使用的是 App 洞察力,但我很确定您可以使用其他工具来做同样的事情,例如:
希望对你有帮助 !