rabbitmq管理利器——rabbitmqadmin

2020年2月24日 评论 283 views 3693字阅读12分18秒

rabbitmq管理利器——rabbitmqadmin

摘要:在运维rabbitmq集群的过程中,发生了队列的严重堆积,我们在可以容忍mq消息丢失的情况下,使用常用的purge_queue queue命令等好长时间都清理不成功,在管理页面上直接purge导致页面卡住不动,最终都没有办法达到清理成功的效果。这个时候发现了一个python的rabbitmq管理工具,非常的好用且迅速,在此记录。

如何获取rabbitmqadmin

方法1. 直接复制出来

cp -a /var/lib/rabbitmq/mnesia/rabbit@localhost-plugins-expand/rabbitmq_management-3.3.5/priv/www/cli/rabbitmqadmin /usr/local/bin/rabbitmqadmin

方法2 从管理页面获取

  1. 打开rabbitmq_management,访问15672管理页面,方法见rabbitmq集群的各种运维操作 4.2 打开15672网页管理端,访问mq  
  2. 访问 ip:15672/rabbitmqadmin

下载页面,另存为rabbitmqadmin.py,放到此目录:/usr/local/bin/rabbitmqadmin,授权chmod +x /usr/local/bin/rabbitmqadmin

多一句废话:可以使用wget直接下载页面上的东西

常用命令

查看

rabbitmqadmin list users                #查看用户列表
rabbitmqadmin list vhosts               #查看vhosts
rabbitmqadmin list connections          ###查看 connections
rabbitmqadmin list exchanges            ##查看 exchanges
rabbitmqadmin list bindings             ##查看 bindings
rabbitmqadmin list permissions          ##查看 permissions
rabbitmqadmin list channels             ##查看 channels
rabbitmqadmin list parameters           ##查看 parameters
rabbitmqadmin list consumers            ##查看consumers
rabbitmqadmin list queues               ##查看queues
rabbitmqadmin list policies             ##查看policies
rabbitmqadmin list nodes                ##查看nodes
rabbitmqadmin show overview             ##查看overview

系统操作

用户管理操作

  1. 新增一个用户
rabbitmqctl  add_user  Username  Password
rabbitmqadmin declare user name=wyl password=password tags=administrator
  1. 删除一个用户
rabbitmqctl  delete_user  Username
  1. 修改用户的密码
rabbitmqctl  change_password  Username  Newpassword
  1. 查看当前用户列表
rabbitmqctl  list_users
rabbitmqadmin list users    # 查看 users
rabbitmqadmin list users name # 查看 users的时候限制字段
  1. 设置用户角色
rabbitmqctl  set_user_tags  User  Tag

User为用户名, Tag为角色名(对应于administrator,monitoring,policymaker,management,或其他自定义名称见用户角色)。

也可以给同一用户设置多个角色,例如

rabbitmqctl  set_user_tags  hncscwc  monitoring policymaker

队列操作

添加queue

rabbitmqadmin declare queue name=test durable=true    ## durable=true 代表持久化打开  declare是宣布的意思
rabbitmqadmin --vhost=test --username=admin --password=admin  declare queue name=test durable=true #指定vhost添加队列

查看queues

[root@rabbitmq1 sbin]# rabbitmqadmin list queues
#查看bindings
[root@rabbitmq1 sbin]# rabbitmqadmin list bindings

添加消息到test queue

rabbitmqadmin publish routing_key=test payload="this is a testing"     ##未指定exchange默认 exchange name为空

再次查看对列发现test有一条消息

[root@rabbitmq1 sbin]# rabbitmqadmin list queues

从test queue消费一条信息

rabbitmqadmin get queue=test requeue=true   #requeue=true 这条消息消费后还在,反之如果为false消费后消息就不在了。

删除队列

rabbitmqadmin delete queue name=test

清除队列消息内容

rabbitmqadmin purge queue name=队列名

其他

指定输出格式

使用 -f 可以指定格式

有如下几种格式 raw_json, long, pretty_json, kvp, tsv, table, bash 默认为 table,具体自己试

用户角色

  1. 超级管理员(administrator)

可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。
2. 监控者(monitoring)

可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
3. 策略制定者(policymaker)

可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。

与administrator的对比,administrator能看到这些内容
4. 普通管理者(management)

仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。
5. 其他

无法登陆管理控制台,通常就是普通的生产者和消费者。

了解了这些后,就可以根据需要给不同的用户设置不同的角色,以便按需管理。

rabbitmqctl 命令

rabbitmqctl list_queues:查看所有队列信息

rabbitmqctl stop_app:关闭应用(关闭当前启动的节点)

rabbitmqctl start_app:启动应用,和上述关闭命令配合使用,达到清空队列的目的

rabbitmqctl reset:从管理数据库中移除所有数据,例如配置过的用户和虚拟宿主, 删除所有持久化的消息(这个命令要在rabbitmqctl stop_app之后使用)

rabbitmqctl force_reset:作用和rabbitmqctl reset一样,区别是无条件重置节点,不管当前管理数据库状态以及集群的配置。如果数据库或者集群配置发生错误才使用这个最后的手段

rabbitmqctl status:节点状态

rabbitmqctl add_user username password:添加用户

rabbitmqctl list_users:列出所有用户

rabbitmqctl list_user_permissions username:列出用户权限

rabbitmqctl change_password username newpassword:修改密码

rabbitmqctl add_vhost vhostpath:创建虚拟主机

rabbitmqctl list_vhosts:列出所有虚拟主机

rabbitmqctl set_permissions -p vhostpath username ".*" ".*" ".*":设置用户权限

rabbitmqctl list_permissions -p vhostpath:列出虚拟主机上的所有权限 

rabbitmqctl clear_permissions -p vhostpath username:清除用户权限

rabbitmqctl -p vhostpath purge_queue blue:清除队列里的消息

rabbitmqctl delete_user username:删除用户

rabbitmqctl delete_vhost vhostpath:删除虚拟主机

未完待续-催更请留言

参考

通过rabbitmqadmin管理rabbitmq,【吴业亮】云计算开发工程师

RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决)

weinxin
公众号
在号内与我交流,回复【资源】获取技术大礼包
小熊