我们在生产中有很多Azure服务总线主题/队列。任何给定的主题都有一个MAX SIZE,并且由于与load viz无关的各种原因,它可能达到该限制。附加于该主题的未命名订阅等。
当一个主题达到其大小限制时,我们有多次中断,因为我们订阅了未注册的订阅。 我们正在寻找基础监控的地方
虽然2.很好,但只有1.也应该没问题。
Azure服务总线目前在预览中有“Metrics”,我们可以设置一系列指标以获得警报。看起来它处于非常早期的阶段,即使是上述要求也无法实现。
我是否遗漏了某些内容,或者我需要通过调用在[{3}}
中公开的REST API来使用Azure功能/逻辑应用程序构建自定义监控https://docs.microsoft.com/en-us/azure/monitoring-and-diagnostics/monitoring-supported-metrics?redirectedfrom=MSDN#microsoftservicebusnamespaces正在销售上述功能,但我的要求非常简陋。
答案 0 :(得分:1)
队列/主题的大小现在在Azure Monitor Metrics中可用。由于处于预览阶段,因此这些值可能不会立即反映出来。但是可以使用Azure Monitor来监视这些指标,这也处于“预览”阶段。
答案 1 :(得分:0)
是的,可以获取有关Azure Service Bus Queues空间使用情况的使用情况详细信息。 在下面找到计算给定队列中可用空间的示例控制台应用程序(C#+ .NET Framework 4.7 + WindowsAzure.ServiceBus 4.1.10)。使用TopicDescription主题。
private static async Task GetFreeSpace(string connectionString, string queueName)
{
if (string.IsNullOrWhiteSpace(connectionString))
{
throw new ArgumentException("Service bus connection string cannot be null, empty or whitespace.");
}
if (string.IsNullOrWhiteSpace(queueName))
{
throw new ArgumentException("Service bus queue name cannot be null, empty or whitespace.");
}
NamespaceManager nm = NamespaceManager.CreateFromConnectionString(connectionString);
QueueDescription queueDescription = await nm.GetQueueAsync(queueName);
double spaceUsedInMB = 0;
double freeSpaceInMB = 0;
double percentageFreeSpace = 100;
if (queueDescription.SizeInBytes > 0)
{
spaceUsedInMB = (queueDescription.SizeInBytes / 1024.0 / 1024.0);
freeSpaceInMB = queueDescription.MaxSizeInMegabytes - spaceUsedInMB;
percentageFreeSpace = 100 * freeSpaceInMB / queueDescription.MaxSizeInMegabytes;
}
Console.WriteLine($"Max Size (MB) = {queueDescription.MaxSizeInMegabytes:0.00000}");
Console.WriteLine($"Used Space (MB) = {spaceUsedInMB:0.00000}");
Console.WriteLine($"Free Space (MB) = {freeSpaceInMB:0.00000}");
Console.WriteLine($"Free Space (%) = {percentageFreeSpace:0.00000}");
}
这是packages.config文件内容:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="WindowsAzure.ServiceBus" version="4.1.10" targetFramework="net47" />
</packages>
只要符合您的要求,就可以使用定时器自动完成。在https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-timer了解更多详情。
此外,根据文档https://docs.microsoft.com/en-us/powershell/module/azurerm.servicebus/get-azurermservicebusqueue?view=azurermps-6.1.0,还可以使用PowerShell获取这些详细信息。