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 从管理页面获取
- 打开
rabbitmq_management
,访问15672管理页面,方法见rabbitmq集群的各种运维操作 4.2 打开15672网页管理端,访问mq - 访问 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
系统操作
用户管理操作
- 新增一个用户
rabbitmqctl add_user Username Password
rabbitmqadmin declare user name=wyl password=password tags=administrator
- 删除一个用户
rabbitmqctl delete_user Username
- 修改用户的密码
rabbitmqctl change_password Username Newpassword
- 查看当前用户列表
rabbitmqctl list_users
rabbitmqadmin list users # 查看 users
rabbitmqadmin list users name # 查看 users的时候限制字段
- 设置用户角色
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,具体自己试
用户角色
- 超级管理员(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:删除虚拟主机
未完待续-催更请留言
评论