1. 程式人生 > >(四)RabbitMQ訊息佇列-服務詳細配置與日常監控管理

(四)RabbitMQ訊息佇列-服務詳細配置與日常監控管理

RabbitMQ服務管理

啟動服務:rabbitmq-server -detached【 /usr/local/rabbitmq/sbin/rabbitmq-server  -detached 】
檢視狀態:rabbitmqctl status
關閉服務:rabbitmqctl stop
列出角色:rabbitmqctl list_users
開啟某個外掛:rabbitmq-pluginsenable xxx
關閉某個外掛:rabbitmq-pluginsdisablexxx
注意:重啟伺服器後生效。

RabbitMQ服務詳細配置rabbitmq.config

RabbitMQ 提供了三種方式來定製伺服器:

環境變數
定義埠,檔案位置和名稱(接受shell輸入,或者在環境配置檔案(rabbitmq-env.conf)中設定)。
配置檔案
為伺服器元件設定許可權,限制和叢集,也可以定義外掛設定(rabbitmq.config)。
執行時引數和策略
可在執行時進行修改叢集設定。

下面我會介紹通過配置檔案rabbitmq.config來配置rabbitmq。

  • rabbitmq.config 的位置
    這些檔案的位置分佈特定的. 預設情況下,這些檔案是沒有建立的,但每個平臺上期望的位置如下:
    Generic UNIX - $RABBITMQ_HOME/etc/rabbitmq/
Debian - /etc/rabbitmq/ RPM - /etc/rabbitmq/ Mac OS X (Homebrew) - ${install_prefix}/etc/rabbitmq/, the Homebrew prefix is usually/usr/local Windows - %APPDATA%\RabbitMQ\

通過WEB管理外掛我們也可以看到該配置檔案的地址:
RabbitMQ配置檔案

  • rabbitmq.config 配置
    我的是在/usr/local/rabbitmq/etc/rabbitmq/rabbitmq.config,rabbitmq.config配置檔案允許配置RabbitMQ 核心程式, Erlang 服務和RabbitMQ 外掛。它是標準的Erlang 配置檔案。RabbitMQ在找不到配置檔案的情況下會按照預設的配置執行。在系統提示的位置新建這個檔案:
touch /usr/local/rabbitmq/etc/rabbitmq/rabbitmq.config

如下是我常用到的rabbitmq.config配置檔案的資訊,意思是RabbitMQ記憶體閾值最大可用使用我係統40%的記憶體,超過40%開始拒絕生產訊息,當記憶體使用率達到閾值的40%時開始持久化到磁碟。0.4也是官方建議的值,我曾經為了效能把該值設定成0.8,記憶體稍一波動整個服務就崩潰了。

[
{rabbit, [{vm_memory_high_watermark_paging_ratio, 0.4},
         {vm_memory_high_watermark, 0.4}]}
].

更多可配置引數請檢視:http://blog.csdn.net/super_rd/article/details/70327712

通過rabbitmqctl管理RabbitMQ

virtual_host管理

新建virtual_host: rabbitmqctl add_vhost xxx
撤銷virtual_host:rabbitmqctl delete_vhost xxx

使用者管理

新建使用者:rabbitmqctl add_user usernamexxx pwdxxx
刪除使用者:rabbitmqctl delete_user usernamexxx
改密碼: rabbimqctl change_password {username} {newpassword}
設定使用者角色:rabbitmqctl set_user_tags {username} {tag ...}
Tag可以為 administrator,monitoring, management

許可權管理

rabbitmqctl set_permissions -p / username ".*" ".*" ".*"  //新增許可權
rabbitmqctl set_user_tags username administrator  //修改使用者角色

許可權設定說明:rabbitmqctl set_permissions [-pvhostpath] {user} {conf} {write} {read}
Vhostpath:Vhost路徑。
user:使用者名稱。
Conf:一個正則表示式match哪些配置資源能夠被該使用者訪問。
Write:一個正則表示式match哪些配置資源能夠被該使用者讀。
Read:一個正則表示式match哪些配置資源能夠被該使用者訪問。

獲取伺服器狀態資訊

獲取伺服器狀態:rabbitmqctl status

關閉應用:rabbitmqctl stop_app
啟動應用,和上述關閉命令配合使用,達到清空佇列的目的:rabbitmqctl start_app
清除所有佇列:rabbitmqctl reset

檢視所有佇列資訊:rabbitmqctl list_queues

獲取佇列資訊:rabbitmqctl list_queues[-p vhostpath] [queueinfoitem ...]
Queueinfoitem可以為:name,durable,auto_delete,arguments,messages_ready,messages_unacknowledged,messages,consumers,memory。

獲取Exchange資訊:rabbitmqctllist_exchanges[-p vhostpath] [exchangeinfoitem ...]
Exchangeinfoitem有:name,type,durable,auto_delete,internal,arguments。

獲取Binding資訊:rabbitmqctllist_bindings[-p vhostpath] [bindinginfoitem ...]       
Bindinginfoitem有:source_name,source_kind,destination_name,destination_kind,routing_key,arguments。

獲取Connection資訊:rabbitmqctllist_connections [connectioninfoitem ...]
Connectioninfoitem有:recv_oct,recv_cnt,send_oct,send_cnt,send_pend等。

獲取Channel資訊:rabbitmqctl  list_channels[channelinfoitem ...]
Channelinfoitem有consumer_count,messages_unacknowledged,messages_uncommitted,acks_uncommitted,messages_unconfirmed,prefetch_count,client_flow_blocked。

RabbitMQ訊息佇列WEB管理工具

目前處於技術癌早期,所以一般能圖形化還是要儘量圖形化的。RabbitMQ自帶的訊息佇列管理外掛就非常不錯(上一章已經講過安裝方法http://blog.csdn.net/super_rd/article/details/70241007)。
瀏覽器開啟HTTP://IP:15672

RabbitMQ WEB管理外掛

最上側的導航以此是:《概覽》、《連線》、《通道》、《交換機》、《佇列》、《使用者管理》
無論是伺服器監控還是日常的管理基本都可以解決,很方便。既然都圖形化了我就不贅述了,建議都點開看下,如果有什麼引數不明白可以加最下方的QQ群探討。

RabbitMQ日誌檔案

通過日誌檔案方便我們定位很多問題,同樣在WEB管理外掛中可以看到日誌檔案的路徑,我的是在/usr/local/rabbitmq/var/log/rabbitmq/,在該路徑下有兩個日誌檔案:[email protected][email protected]。saal(System Application Support libraries 系統應用支援庫)用來記錄Erlang相關的資訊,舉例來說可以通過這個檔案看到Erlang的崩潰報告。

另外也可以通過繫結監聽amq.rabbitmq.log交換機來訂閱日誌資訊來實現更多功能。

RabbitMQ技術交流QQ群:327034977(新增時請備註RabbitMQ)