跳至主内容

使用 Wireshark 检查 AMQP 0-9-1 和 AMQP 1.0 流量

概述

Wireshark 是一个图形化工具,可以捕获流量并对其进行检查,或者检查在其他主机上捕获的流量。

现代 Wireshark 版本支持 AMQP 1.0 和 AMQP 0-9-1 流量的检查和分析。它可以解析(解析、可视化、过滤)AMQP 0-9-1 和 AMQP 1.0 流量,包括 AMQP 0-9-1 勘误和 RabbitMQ 扩展

Wireshark 与 tcpdump 基于相同的底层技术 libpcap 库,并可用于检查在服务器环境中捕获的 pcap 流量捕获文件。

tcpdump 和 Wireshark 一起提供了大量信息,解释了客户端(应用程序)和 RabbitMQ 节点发送和接收的内容。这些信息可以并且应该被用来深入了解难以观察的系统行为。这些工具补充了 指标日志内部事件,所有这些都能让运维人员和开发人员更有效地排查分布式系统问题。

流量捕获对于分析消息流、无法路由的消息发布者确认和应用程序使用的消费者确认特别有用。

跟踪 AMQP 1.0 和 AMQP 0-9-1

启动时,Wireshark 会显示一个接口列表,用于开始流量捕获。现代版本会明确突出显示主机上的主网络接口(根据 Wi-Fi 网络接口推断)和回环(本地)接口。

要开始跟踪 AMQP 1.0 或 AMQP 0-9-1 流量,请在一个相关的网络接口上开始捕获,然后在“应用显示过滤器”搜索框中过滤“amqp”。

数据包列表视图提供了客户端和 RabbitMQ 节点之间交换的协议帧和方法的摘要。

“信息”列指示了类和方法(例如 Basic.Publish),然后是重要的参数。例如

  • Connection.Open vhost={name}
  • Connection.Close reply={reply-text}
  • Channel.Close reply={reply-text}
  • Exchange.Declare x={exchange-name}
  • Exchange.Bind dx={dest-exchange} sx={source-exchange} bk={routing-key}
  • Queue.Declare q={queue-name}
  • Queue.Bind q={queue-name} x={exchange-name} bk={routing-key}
  • Queue.Delete q={queue-name}
  • Basic.Publish x={exchange-name} rk={routing-key}

数据包详细信息则指示了帧的所有属性。它还包括用方括号括起来的动态计算值。

下面是 Wireshark 窗口的示例,其中包含活动捕获并启用了“amqp”显示过滤器。

Main window

相关帧之间的链接

Wireshark 分析 AMQP 0-9-1 数据包流,并显示用方括号括起来的附加信息。

  • basic.publish 的参数包括一个发布序列号,这是 发布者确认使用的序列号。
  • 每个已确认的 basic.publish 或 basic.deliver 都包含一个对包含相应 basic.ackbasic.nack 帧的引用(如果存在)。
  • 同样,每个 basic.ack 都包含一个(或多个)对当前被此 Ack 确认的帧的引用。

更多指标

Wireshark 会自动突出显示 AMQP 0-9-1 数据包,其中包含

您可以在专门的对话框中显示重要帧的摘要。转到“分析”>“专家信息”,然后可能应用显示过滤器。

More Metrics

检查 TLS 加密连接上的流量

Wireshark 使您能够检查 AMQPS 流量,但您只能解密使用 RSA 密钥加密的流量,不包括 RSA 临时密钥和 Diffie-Hellman 临时密钥(DHE/EDH)密码套件。您应该设置 RabbitMQ 使用的密码套件,并将列表限制为仅 RSA。

此外,Wireshark 必须提供用于加密数据的私钥。如果使用了双向对等验证,则必须将客户端和服务器的私钥都添加到 Wireshark。

为此,请在菜单中转到“编辑 > 首选项”对话框,选择“协议 > SSL”,然后使用“编辑 RSA 密钥”将私钥文件路径添加到列表中。

界面将包含一些需要填写的字段。

  • IP 地址和端口标识持有私钥的主机,通常是服务器。可以使用通配符 IP 地址 0.0.0.0 和通配符端口 0 或 data。
  • 协议应设置为 amqp
  • 私钥文件应为 PEM 或 PKCS12 格式,可以选择用密码保护。
© . This site is unofficial and not affiliated with VMware.