Azure 服务总线主题/队列监控,以使大小更接近它';s极限

Azure 服务总线主题/队列监控,以使大小更接近它';s极限,azure,azureservicebus,azure-servicebus-topics,azure-monitoring,Azure,Azureservicebus,Azure Servicebus Topics,Azure Monitoring,我们在生产中有很多Azure服务总线主题/队列。任何给定的主题都有一个最大大小,并且由于与负载无关的各种原因,它可能达到该限制。附加到主题等的未使用订阅 由于我们有未使用的订阅,当一个主题达到其大小限制时,我们不止一次中断。 我们正在寻找基本的监控 如果主题大小>最大大小的X%,我们将收到一封电子邮件/ 通知 生产命名空间中的任何主题都应自动添加到 监测。dev可能忘记添加监控 将新主题添加到命名空间时 而2。拥有很好,但只有一个。也可以 Azure service bus当前在预览中有“指标”

我们在生产中有很多Azure服务总线主题/队列。任何给定的主题都有一个最大大小,并且由于与负载无关的各种原因,它可能达到该限制。附加到主题等的未使用订阅

由于我们有未使用的订阅,当一个主题达到其大小限制时,我们不止一次中断。 我们正在寻找基本的监控

  • 如果主题大小>最大大小的X%,我们将收到一封电子邮件/ 通知
  • 生产命名空间中的任何主题都应自动添加到 监测。dev可能忘记添加监控
    将新主题添加到命名空间时
  • 而2。拥有很好,但只有一个。也可以

    Azure service bus当前在预览中有“指标”,我们可以设置一些指标来获得警报。看起来它处于非常早期的阶段,甚至无法满足上述要求

    我是否遗漏了什么,或者我需要通过调用在以下位置公开的REST API,使用Azure函数/逻辑应用程序构建自定义监控:


    正在销售上述功能,但我的要求非常基本。

    是的,可以获取有关Azure Service Bus队列空间使用情况的详细信息。 下面是一个示例控制台应用程序(C#+.NET Framework 4.7+WindowsAzure.ServiceBus 4.1.10),用于计算给定队列中的可用空间。对主题使用主题描述

    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>
    
    
    
    只要符合您的要求,就可以使用计时器自动执行此操作。有关详细信息,请访问


    此外,根据文档,还可以使用PowerShell获取这些详细信息。

    队列/主题的大小现在在中提供。由于处于预览阶段,这些值可能不会立即反映出来。但是可以使用监控这些指标,这也处于预览阶段。

    您也可以查看CloudMonix,它可以做您想做的事情。如果你不想买,你需要建立自己的