如何基于多个Service Bus队列消息总数配置Azure VMSS自动缩放规则
基于多区域Service Bus队列消息总数配置VMSS自动缩放规则
要实现基于多个跨区域Service Bus队列消息总数的VMSS自动缩放,需先汇总多队列指标,再关联到VMSS的自动缩放规则,具体步骤如下:
一、准备多队列指标采集
- 确保所有目标Service Bus命名空间(含跨区域的)已开启指标诊断设置,将
QueueMessagesCount(队列消息总数)指标发送到同一个Log Analytics工作区。 - 记录每个队列的资源ID:可在Azure门户的Service Bus队列「属性」中获取,格式为
/subscriptions/{订阅ID}/resourceGroups/{资源组}/providers/Microsoft.ServiceBus/namespaces/{命名空间}/queues/{队列名}。
二、创建汇总型自定义指标
由于VMSS自动缩放默认仅支持单指标触发,需先将多队列消息数汇总为一个统一指标:
- 进入Azure Monitor → 日志页面,编写并验证Kusto查询,确保能正确计算所有目标队列的消息总数:
AzureMetrics | where ResourceProvider == "MICROSOFT.SERVICEBUS" | where MetricName == "QueueMessagesCount" | where ResourceId in ("{队列1资源ID}", "{队列2资源ID}", "{队列3资源ID}") // 替换为你的队列ID列表 | summarize TotalMessages = sum(Maximum) by bin(TimeGenerated, 1m) // 按1分钟粒度汇总总数 - 点击查询页顶部的「创建」→「指标规则」,完成自定义指标配置:
- 命名指标(如
TotalCrossRegionQueueMessages),设置时间粒度(建议1-5分钟),聚合方式选择Sum。 - 完成创建后,该汇总指标会同步到Azure Monitor指标库。
- 命名指标(如
三、配置VMSS自动缩放规则
- 打开目标VMSS的自动缩放页面,选择「自定义自动缩放」模式。
- 在「规则」标签页点击「添加规则」:
- 指标来源选择「其他资源」,找到承载自定义指标的Log Analytics工作区。
- 指标命名空间选择
LogAnalytics,指标名称选择刚才创建的TotalCrossRegionQueueMessages。 - 设置缩放阈值:例如当总数>1500时,每次增加2个实例;当总数<300时,每次减少1个实例。
- 配置实例数限制:设置最大/最小实例数,避免超出资源配额或缩容至0。
- 保存自动缩放配置,规则会按设定的粒度自动触发缩放。
四、跨场景注意事项
- 跨区域延迟适配:跨区域队列的指标采集存在延迟,建议将自动缩放的冷却时间设置为5-10分钟,避免频繁缩放。
- 权限校验:确保VMSS的自动缩放服务主体拥有Log Analytics工作区的读取权限,以及自定义指标的访问权限。
- 监控验证:配置完成后,可在Azure Monitor的指标 explorer 中查看汇总指标的变化,验证缩放规则是否正常触发。
内容的提问来源于stack exchange,提问作者Sachin Joseph
相关产品推荐
相关产品推荐

