故障排除指南
概述
本指南概述了与 RabbitMQ 安装和基于消息的系统故障排除相关的几个主题
- 监控和健康检查
- 日志记录
- 节点配置
- 客户端连接
- 客户端身份验证和授权
- CLI 工具连接和身份验证
- 运行时崩溃转储
- 集群形成
- 节点内存使用情况
- 连接和连接泄漏
- 通道和通道泄漏
- TLS
- LDAP
- OAuth 2.0
- 流量捕获
节点内存使用情况、指标和监控、TLS 等。
监控、指标、健康检查
故障排除生产系统的一个非常重要的方面是监控和健康检查。它们收集可供检查和分析的数据,有助于识别和检测异常。
日志记录
日志是故障排除的另一个重要信息来源。关于日志记录的单独指南解释了在哪里可以找到日志文件、如何调整日志级别、存在哪些日志类别、可以使用日志文件检测到的连接生命周期事件等。
节点配置
可以使用 rabbitmqctl environment 以及一些rabbitmq-diagnostics 命令来检查有效的节点配置。
CLI 工具连接和身份验证
CLI 工具指南解释了 CLI 工具如何向节点进行身份验证、Erlang cookie 文件是什么以及 CLI 工具无法在服务器节点上执行操作的最常见原因。
集群形成
内存使用分析
《关于内存使用》是关于该主题的专门指南。
网络和连接
《故障排除网络》是关于网络和连接主题的专门指南。
身份验证和授权
《访问控制指南》包含有关故障排除客户端身份验证和故障排除授权的部分。
运行时崩溃转储文件
当 Erlang 运行时系统异常退出时,会在 RabbitMQ 启动的目录中写入一个名为 erl_crash.dump 的文件。该文件包含异常退出时运行时的状态。终止原因将在前几行中找到,以 Slogan 开头,例如:
head -n 3 ./erl_crash.dump
# => =erl_crash_dump:0.5
# => Sun Aug 25 00:57:34 2019
# => Slogan: Kernel pid terminated (application_controller) ({application_start_failure,rabbit,{{timeout_waiting_for_tables,[rabbit_user,rabbit_user_permission,rabbit_topic_permission,rabbit_vhost,rabbit_durable_r
在这个特定的示例中,口号(未捕获的异常消息)表明,已启动的节点在从对等节点同步模式元数据时超时,可能是因为它们未在配置的时间窗口内上线。
为了更好地理解崩溃转储文件中 Erlang 运行时的状态,可视化它很有帮助。崩溃转储查看器工具 cdv 是 Erlang 安装的一部分。cdv 二进制文件的路径取决于 Erlang 版本和安装位置。
这是一个如何调用它的示例
/usr/local/lib/erlang/lib/observer-2.9.1/priv/bin/cdv ./erl_crash.dump
上述命令的成功执行将打开一个新的应用程序窗口,类似于这样

要使上述命令正常工作,系统必须具有图形用户界面,并且 Erlang 必须已编译支持 observer 和 Wx。
连接
《连接指南》解释了如何识别应用程序连接泄漏以及其他相关主题。
通道
《通道指南》解释了通道级异常的含义,如何识别应用程序通道泄漏以及其他相关主题。
TLS
《故障排除 TLS》是关于 TLS 主题的专门指南。
LDAP
《LDAP 指南》解释了如何启用 LDAP 决策和查询日志记录。
OAuth 2.0
《OAuth 2.0》是关于 OAuth 2.0 主题的专门指南。
捕获流量
在捕获流量可以提供大量信息,有助于在故障排除网络连接、应用程序行为、连接泄漏、通道泄漏等方面发挥作用。tcpdump 和 Wireshark 是用于捕获和分析网络流量的行业标准开源工具。