RabbitMQ TroubleShooting


   RabbitMQ是一款優秀的消息隊列中間件,提供了穩定、監控完善的產品,但是軟件就會有bug。為了前進路徑可以暢通,我們必須了解出現的一些故障的快速處理方式,畢竟在生產環境,時間就是生命,盡快的處理是避免產生事故的最有效方式。

了解常見的一些故障,我們可以有針對的處理預案,快速、高效的處理故障,更好的運維是我們一直的追求。

查看故障信息,RabbitMQ出現故障,要通過一些有效途徑快速的獲取故障原因,而不能是每次都通過重啟RabbitMQ服務的方式來解決。

如何查看故障信息,從幾個方面

  1. 通過rabbitmqctl status ,在出現故障 服務器,查看當前MQ運行狀態,該命令可以看到一些非常有用的信息

  2. 通過rabbitmqctl cluster_status ,查看集群狀態是否正常。在RabbitMQ集群由於網絡原因而可能出現網絡割裂的情況下,可以通過該命令查看集群運行狀態

  3. 查看rabbitmq 運行日志文件。可能有的小伙伴不知道該文件在哪里,在RABBITMQ_LOG_BASE定義的位置,還有小伙伴可能又要問RABBITMQ_LOG_BASE是什么,我只能說這個是rabbitmq的環境變量值,在rabbitMQ安裝路徑/sbin 目錄下,注意看有一個rabbitmq-env.bat 文件。請通過記事本打開該文件,然后搜索RABBITMQ_LOG_BASE,可以看到具體路徑。更多的就不詳細聊了,在RABBITMQ配置文件我會專門說明


故障信息一覽

  1.   通過localhost:15672 無法打開監控頁面。
         原因:1、RabbitMQ服務未開啟 2、未開啟監控插件。 
         解決方案:
        1、通過rabbitmq-service start 開啟RabbitMQ服務
        2、通過rabbitmq-plugins enable rabbitmq_management 開啟監控插件。
      通過以上兩種方式的操作,監控頁面一般都可以正常打開了。
  2. localhost:15672  的登錄密碼不知道?
      原因:不懂rabbitmq或rabbitmq的超級小白,或者在安裝時將guest用戶刪除(概率極小),我當時第一次學習也是這樣,打開了監控面板,一臉懵逼,因為我壓根不知道登錄  密碼。
      解決方案:
        1、如果未使用RabbitMQ配置文件或未更改rabbitmq的配置文件,就是說采用的是默認配置。那么我們就必須知道RabbitMQ安裝以后會默認存在一個用戶,賬號與密碼均 是guest。
       2、使用默認賬號密碼均是guest的用戶,仍舊無法登錄。那么為我們就要開始第二步了,通過rabbitmqctl list_users 查看是否有guest用戶。正常情況下,應該顯示

          C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.8\sbin>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用戶登錄啦。。。。 
  3. 執行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,注意是當前。有興趣的哈,可以搜索單機集群搭建。
  4. windows服務開啟失敗。RabbitMQ: Erlang machine stopped instantly (distribution name conflict?)
    解決方案:如果重命名服務器名稱或使用其他賬戶登錄系統,可能會出現該問題。使用安裝rabbitmq的賬戶進行登錄。
                     查看rabbitmq目錄是否包含中文或特殊字符,如果有的話,請更改安裝目錄。
  5. 執行命令  rabbitmqctl status  提示:unable to perform an operation on node 'rabbit@localhost'
    解決方案:首先分析出現這個異常信息,無法中心操作,也就是說RabbitMQ服務沒有啟動造成的。
    windows 通過啟動RabbitMQ服務,centos通過rabbitmq-server 來開啟rabbitmq
  6. centos 執行命令rabbitmqctl start_app 提示:  bash: rabbitmqctl: command not found...
    解決方案:首先可以明確知道的是,rabbitmqctl這個命令找不到。分析centos  中執行操作可能出現命令找不到的情況。
    1、/etc/profile 未定義或未生效
    2、用戶不同。     
    其中針對第一個針對性的說明一下,rabbitmq部署完后,會在/etc/profile中增加幾行(目錄可能不同)
  7. export PATH=$PATH:/etc/rabbitmq/erlang/bin


    export PATH=$PATH:/etc/rabbitmq/rabbitmq_server/sbin
    這幾行的目的就是設置環境變量。不像windows設置了環境變量就會生效,centos 需要執行source /etc/profile 才會生效。因此如果出現command  not found的提示,且配置了環境變量,那么請務必執行source /etc/profile 使之生效。







rabbitmq故障一覽,持續記錄出現的RabbitMQ故障及解決方式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM