使用 Wireshark 检查 AMQP 0-9-1 流量
概述
Wireshark 包含对 AMQP 流量检查和分析的增强支持。它可以解析(解析、可视化、过滤)AMQP 0-9-1 和 AMQP 1.0 流量,包括 AMQP 0-9-1 勘误表 和 RabbitMQ 扩展。
Wireshark 基于与 tcpdump、libpcap
相同的基础,可用于检查服务器环境中捕获的 pcap
流量文件。
tcpdump 和 Wireshark 共同提供了大量信息,解释了客户端(应用程序)和 RabbitMQ 节点在做什么。这些信息可以并且应该被用来推断出难以通过其他方式观察到的系统行为的见解。这些工具补充了 监控系统,并允许操作员和开发人员更有效地排除分布式系统的故障。
跟踪包
数据包列表提供了客户端和 RabbitMQ 节点之间交换的协议帧和方法的摘要。Info 列指示类和方法(例如 Basic.Publish),然后是最重要的参数。例如
- Connection.Open vhost=(vhost)
- 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 0-9-1 数据包流并显示括在方括号中的附加信息
- basic.publish 的参数包括发布序列号,这是 发布确认 使用的序列号
- 每个已确认的 basic.publish 或
basic.deliver
包含对包含相应basic.ack
或basic.nack
帧的帧的引用(如果有)。 - 类似地,每个 basic.ack 包含对被此 Ack 确认的帧(可能多个)的引用
更多指标
Wireshark 会自动突出显示具有以下特征的 AMQP 0-9-1 数据包
您可以在专用对话框中显示重要帧的摘要。转到分析 > 专家信息,并可能应用显示过滤器
检查 TLS 启用连接上的流量
Wireshark 允许您检查 AMQPS 流量,但是您只能解密使用 RSA 密钥加密的流量,不包括 RSA 临时密钥和 Diffie-Hellman 临时密钥 (DHE/EDH) 密码套件。您应该 设置 RabbitMQ 使用的密码套件,并将列表限制为仅 RSA。
在经典配置格式中,这将类似于以下内容
[
{rabbit, [
{ssl_options, [{ciphers, [{rsa,aes_256_cbc,sha256},
{rsa,aes_128_cbc,sha256},
{rsa,aes_256_cbc,sha},
{rsa,'3des_ede_cbc',sha},
{rsa,aes_128_cbc,sha},
{rsa,des_cbc,sha}]}
]}
]}
].
此外,您必须为 Wireshark 提供用于加密数据的私钥。如果使用双向身份验证,您需要提供两个私钥。转到编辑 > 首选项对话框,选择协议 > SSL,然后单击编辑 RSA 密钥列表。
- IP 地址和端口标识持有私钥的主机,通常是服务器。可以使用 0.0.0.0 的通配符 IP 地址和 0 或数据的通配符端口。
- 协议应该标识
amqp
。 - 私钥文件应为 PEM 或 PKCS12 格式,可能受密码保护。