如何批量查看Azure中所有Service Bus队列与主题的消息计数?
批量查看Azure Service Bus队列/主题订阅消息计数的可行方法
方法1:Azure CLI批量查询
通过Azure CLI可以快速遍历所有Service Bus资源,批量输出活跃消息和死信消息计数。
先登录Azure账号:
az login查询所有队列的消息计数:
for ns in $(az servicebus namespace list --query "[].name" -o tsv); do echo "=== 命名空间: $ns ===" az servicebus queue list --namespace-name $ns --query "[].{队列名称:name, 活跃消息数:countDetails.activeMessageCount, 死信消息数:countDetails.deadLetterMessageCount}" -o table done
- 查询所有主题及其订阅的消息计数:
for ns in $(az servicebus namespace list --query "[].name" -o tsv); do echo "=== 命名空间: $ns ===" topics=$(az servicebus topic list --namespace-name $ns --query "[].name" -o tsv) for topic in $topics; do echo "--- 主题: $topic ---" az servicebus topic subscription list --namespace-name $ns --topic-name $topic --query "[].{订阅名称:name, 活跃消息数:countDetails.activeMessageCount, 死信消息数:countDetails.deadLetterMessageCount}" -o table done done
方法2:PowerShell脚本批量导出
用PowerShell可以更灵活地处理结果,甚至导出为CSV文件留存。
连接Azure账号:
Connect-AzAccount批量查询并输出结果(可导出为CSV):
$results = @() $namespaces = Get-AzServiceBusNamespace foreach ($ns in $namespaces) { # 处理队列 $queues = Get-AzServiceBusQueue -ResourceGroupName $ns.ResourceGroupName -NamespaceName $ns.Name foreach ($queue in $queues) { $results += [PSCustomObject]@{ 资源类型 = "队列" 命名空间 = $ns.Name 名称 = $queue.Name 活跃消息数 = $queue.CountDetails.ActiveMessageCount 死信消息数 = $queue.CountDetails.DeadLetterMessageCount } } # 处理主题订阅 $topics = Get-AzServiceBusTopic -ResourceGroupName $ns.ResourceGroupName -NamespaceName $ns.Name foreach ($topic in $topics) { $subscriptions = Get-AzServiceBusSubscription -ResourceGroupName $ns.ResourceGroupName -NamespaceName $ns.Name -TopicName $topic.Name foreach ($sub in $subscriptions) { $results += [PSCustomObject]@{ 资源类型 = "主题订阅" 命名空间 = $ns.Name 所属主题 = $topic.Name 名称 = $sub.Name 活跃消息数 = $sub.CountDetails.ActiveMessageCount 死信消息数 = $sub.CountDetails.DeadLetterMessageCount } } } } # 输出到控制台 $results | Format-Table -AutoSize # 导出到CSV文件(可选) $results | Export-Csv -Path "ServiceBus_Message_Counts.csv" -NoTypeInformation -Encoding UTF8
方法3:Azure Monitor自定义仪表板
如果需要可视化查看,可通过Azure Monitor创建自定义仪表板,批量展示所有队列/订阅的消息计数:
- 进入Azure Monitor,选择「仪表板」>「新建」
- 添加「指标」部件,设置:
- 订阅:选择目标Azure订阅
- 资源类型:Service Bus 队列(或Service Bus 主题订阅)
- 资源:选择「所有资源」
- 指标:添加「Active Messages」和「DeadLetter Messages」
- 拆分维度:选择「队列名称」(或「订阅名称」)
- 保存仪表板后,即可在一个视图中查看所有实体的实时消息计数,还可配置阈值告警。
内容的提问来源于stack exchange,提问作者14207973
相关产品推荐
相关产品推荐

