You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用Azure监控/日志定位Service Bus消息的读取者

如何利用Azure监控/日志定位Service Bus消息的读取者

嗨,针对你遇到的Service Bus消息莫名消失、怀疑是本地开发同学误消费的问题,我来分享几个用Azure监控和日志定位读取者的实用方法:

  • 先确保Service Bus诊断日志已启用
    这是第一步,不然根本没数据可查。打开Azure门户找到你的Service Bus命名空间,进入「诊断设置」页面,添加新的诊断设置,勾选OperationalLogs和RequestLogs这两个日志类别,然后把日志输出到Log Analytics工作区——这是后续查询日志的核心载体。

  • 用Log Analytics查询读取操作的详细日志
    进入对应的Log Analytics工作区,打开日志查询界面,用Kusto语言写查询语句筛选读取消息的操作,比如:

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.SERVICEBUS"
    | where OperationName in ("ReceiveMessage", "PeekMessage")
    | project TimeGenerated, OperationName, MessageId, ClientIPAddress, ClientRequestId, Identity
    

    其中ReceiveMessage是实际消费(会删除消息)的操作,PeekMessage是只查看不删除的操作。通过查询结果里的字段,你能看到消息被读取的时间、发起请求的客户端IP、请求ID,还有调用者的身份信息(如果用了Azure AD认证的话)。

  • 精准定位本地开发环境的读取者
    重点关注这几个字段:

    • ClientIPAddress:如果是开发者本地机器发起的请求,这里会显示他们的公网IP或者企业内网IP,结合你们团队的IP范围就能缩小范围;
    • Identity:如果用Azure AD认证的话,这里会显示开发者的用户ID或者服务主体ID,能直接定位到具体是谁;
    • ClientRequestId:如果你们的API在本地运行时会带上特定的请求ID标识,也可以通过这个字段快速筛选出本地环境的请求。
  • 结合Service Bus指标辅助验证
    除了日志,还可以去Service Bus命名空间的「指标」页面,查看Active Connections(活跃连接数)和Messages Received(消息接收量)这两个指标。对比日志里出现异常读取的时间点,看看指标有没有对应的峰值,这样能更确认是不是本地环境在消费消息。

  • 可选:给消息加自定义标识强化追踪
    如果现有日志信息还不够,你可以让发送消息的服务给每条消息加上自定义属性(比如SourceService标识发送方),之后在Log Analytics的查询里就能通过这个属性过滤出目标消息,再结合读取者的信息,快速区分预期和非预期的消费方。

备注:内容来源于stack exchange,提问作者WBuck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 17:23:07