黄金城手机网站
  咨询电话:15208869596

黄金城官方登录网站

RabbitMQ TroubleShooting

   RabbitMQ是一款优秀的消息队列中间件,提供了稳定、监控完善的产品,但是软件就会有bug。为了前进路径可以畅通,我们必须了解出现的一些故障的快速处理方式,毕竟在生产环境,时间就是生命,尽快的处理是避免产生事故的最有效方式。

了解常见的一些故障,我们可以有针对的处理预案,快速、高效的处理故障,更好的运维是我们一直的追求。

查看故障信息,RabbitMQ出现故障,要通过一些有效途径快速的获取故障原因,而不能是每次都通过重启RabbitMQ服务的方式来解决。

如何查看故障信息,从几个方面

    通过rabbitmqctl status ,在出现故障 服务器,查看当前MQ运行状态,该命令可以看到一些非常有用的信息

    通过rabbitmqctl cluster_status ,查看集群状态是否正常。在RabbitMQ集群由于网络原因而可能出现网络割裂的情况下,可以通过该命令查看集群运行状态

    查看rabbitmq 运行日志文件。可能有的小伙伴不知道该文件在哪里,在RABBITMQ_LOG_BASE定义的位置,还有小伙伴可能又要问RABBITMQ_LOG_BASE是什么,我只能说这个是rabbitmq的环境变量值,在rabbitMQ安装路径/sbin 目录下,注意看有一个rabbitmq-env.bat 文件。请通过记事本打开该文件,然后搜索RABBITMQ_LOG_BASE,可以看到具体路径。更多的就不详细聊了,在RABBITMQ配置文件我会专门说明


故障信息一览

      通过localhost:15672 无法打开监控页面。     原因:1、RabbitMQ服务未开启 2、未开启监控插件。       解决方案:    1、通过rabbitmq-service start 开启RabbitMQ服务    2、通过rabbitmq-plugins enable rabbitmq_management 开启监控插件。  通过以上两种方式的操作,监控页面一般都可以正常打开了。localhost:15672  的登录密码不知道?  原因:不懂rabbitmq或rabbitmq的超级小白,或者在安装时将guest用户删除(概率极小),我当时第一次学习也是这样,打开了监控面板,一脸懵逼,因为我压根不知道登录  密码。  解决方案:    1、如果未使用RabbitMQ配置文件或未更改rabbitmq的配置文件,就是说采用的是默认配置。那么我们就必须知道RabbitMQ安装以后会默认存在一个用户,账号与密码均 是guest。   2、使用默认账号密码均是guest的用户,仍旧无法登录。那么为我们就要开始第二步了,通过rabbitmqctl list_users 查看是否有guest用户。正常情况下,应该显示

          C:Program FilesRabbitMQ Serverabbitmq_server-3.7.8sbin>rabbitmqctl list_users      Listing users ...      guest [administrator]

          如果未看到一个用户,那么我们可以创建一个用户guozhiqi(名称随意)来执行登录。    具体操作:       1、执行rabbitmqctl add_user   guozhiqi  guozhiqi  (rabbitmqctl add_user  用户名  密码)。执行完该命令后仍旧无法通过guozhiqi/guozhiqi登录的,因为这个用户是没有管理权限的。       2、执行授权操作  rabbitmqctl  set_user_tags guozhiqi administrator (rabbitmqctl  set_user_tags 用户名   角色(administrator,monitoring, management))       3、此时通过用户guozhiqi 就可以登录了       4、登录进去你会发现,只能查看,不能进行任何修改或新增操作,原因是没有权限。此时,针对运维人员就需要给用户guozhqi授权,执行rabbitmqctl set_permissions -p / username ".*" ".*" ".*" //添加权限   该问题解决 3、更改guest权限。通过rabbitmqctl change_password guest guest。也可以通过guest/guest用户登录啦。。。。  执行rabbitmqctl list_users ,出现Error: this command requires the "rabbit" app to be running on the target node. Start it with "rabbitmqctl start_app".解决方案:这个错误很明显的指出了app未运行。很多人会弄混一个事情,就是一个rabbitmq service可以有多个app存在,也就是说可以搭建单机集群。rabbitmq-service start/rabbitmq-service stop 是针对rabbitmq服务的操作。什么情况下才会执行这个操作呢?  目前我已知的有两种,一种是rabbitmq配置文件更改需要重新启动(还需要重新安装奥),另一种就是服务停止 需要开启rabbitmqctl stop_app/rabbitmqctl start_app 什么情况下会执行呢?首先我们要知道这两个命令的作用是什么。关闭或开启当前app,注意是当前。有兴趣的哈,可以搜索单机集群搭建。windows服务开启失败。RabbitMQ: Erlang machine stopped instantly (distribution name conflict?)解决方案:如果重命名服务器名称或使用其他账户登录系统,可能会出现该问题。使用安装rabbitmq的账户进行登录。                 查看rabbitmq目录是否包含中文或特殊字符,如果有的话,请更改安装目录。

rabbitmq故障一览,持续记录出现的RabbitMQ故障及解决方式。