CentOS7上安装、配置、监控RabbitMQ

RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发。RabbitMQ据说具有良好的性能和时效性,同时还能够非常好的支持集群和负 载部署,非常适合在较大规模的分布式系统中使用,具体特性还在验证中,待检验。由于项目需要,安装并配置了RabbitMQ,服务器操作系统是CentOS7。

环境:CentOS7.2 

步骤

一、安装Erlang语言环境

#yum -y install epel-release

#yum -y --enablerepo=epel install erlang

测试是否安装成功

#erl

Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:2:2] [async-threads:10] [hipe] [kernel-poll:false]


Eshell V5.10.4  (abort with ^G)

1> 1+1.

2

2> halt().

二.安装RabbitMQ

# rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc

# rpm -ivh rabbitmq-server-3.6.1-1.noarch.rpm 

启动服务

#systemctl start rabbitmq-server

#chkconfig rabbitmq-server on


启用web管理监控插件rabbitmq-plugins

management plugin

Rabbitmq management plugin提供HTTP API来管理和监控RabbitMQ Server,具体包含如下功能:

删除、生成、列表,包括:exchanges,queues,bindings,users,virtual hosts and permissions。

监视 queue 长度,每个 channel的message rates ,每个连接的data rates,等等。

发送和接收messages。

监控Erlang processes,file descriptors,memory use。

导出/导出object definitions to JSON。

强制关闭 connections,清空 queues。

management plugin默认就在RabbitMQ的发布版本中,只需要enable就可以了,执行以下命令:

#rabbitmq-plugins enable rabbitmq_management


开放对应端口

#firewall-cmd --permanent --zone=public --add-port=5672/tcp

#firewall-cmd --permanent --zone=public --add-port=15672/tcp

#firewall-cmd --reload


此时可以登录RabbitMQ的管理监控界面了

打开浏览器,输入 http://[server-name]:15672/ 如 http://localhost:15672/  ,会要求输入用户名和密码,用默认的guest/guest即可





guest/guest用户只能从localhost地址登录,如果要配置远程登录,必须另创建用户

可以通过配置文件来实现从远程登录管理界面,只要编辑/etc/rabbitmq/rabbitmq.config文件(没有就新增),添加以下配置就可以了

# cat /etc/rabbitmq/rabbitmq.config 

[

{rabbit,[{tcp_listeners,[5672]},{loopback_users,["cyb"]}]}

].

# rabbitmqctl add_user cyb 123456      #添加用户名与密码

#rabbitmqctl set_user_tags cyb administrator  #用户设置为administrator角色

#rabbitmqctl set_permissions -p / cyb ".*" ".*" ".*"  #添加权限

重启服务

#systemctl restart rabbitmq-server.service 

就可以通过远程登录管理监控RabbitMQ

三、远程管理接口的命令行工具

Management command line tool(rabbitmqadmin)拥有跟Web UI同样的功能,可能还更便于脚本使用。rabbitmqadmin仅仅是一个定制的HTTP客户端,如果想在自己的程序中引入 rabbitmqadmin的话,可以直接使用HTTP API。rabbitmqadmin可以在http://server-name:15672/cli页面下载。 


下载rabbitmqadmin.txt后,将其重命名为rabbitmqadmin,拷贝到 /usr/local/bin 或者你想要的路径,并增加可执行权限。

# mv rabbitmqadmin.txt rabbitmqadmin

#chmod +x rabbitmqadmin 

# rabbitmqadmin --help

没有那个文件或目录

出现这个问题时需要在/usr/local/bin vim打开 rabbitmqadmin

输入:set ff 回车

出现fileformat=dos 

需要改为:set ff=unix 保存退出

rabbitmqadmin可以正常使用了

Declare an exchange

#rabbitmqadmin declare exchange name=cyb-exchange type=fanout

exchange declared

Declare a queue, with optional parameters

#rabbitmqadmin declare queue name=cyb-queue durable=false

queue declared

Get a list of queues, with some columns specified

#rabbitmqadmin list queues vhost name node messages message_stats.publish_details.rate

+-------+-----------+---------------+----------+------------------------------------+

| vhost |   name    |     node      | messages | message_stats.publish_details.rate |

+-------+-----------+---------------+----------+------------------------------------+

| /     | cyb-queue | rabbit@CentOS | 0        |                                    |

+-------+-----------+---------------+----------+------------------------------------+

Get a list of queues, with all the detail we can take

#rabbitmqadmin -f long -d 3 list queues

--------------------------------------------------------------------------------


                                    vhost: /

                                     name: cyb-queue

                              auto_delete: False

 backing_queue_status.avg_ack_egress_rate: 0.0

backing_queue_status.avg_ack_ingress_rate: 0.0

     backing_queue_status.avg_egress_rate: 0.0

    backing_queue_status.avg_ingress_rate: 0.0

               backing_queue_status.delta: ["delta", "undefined", 0, "undefined"]

                 backing_queue_status.len: 0