增加微信订阅号(在右侧),关注后,及时收到最新更新的文章。

RabbitMQ指南(4)-管理监控

MQ消息队列 智菲尔 5907℃ 0评论

1、管理插件

通过浏览器UI、命令行管理工具以及rabbitmqadmin,RabbitMQ的管理插件提供了基于HTTP API的方式来管理和监控服务。主要功能包括:

  • 定义、罗列和删除Exchange、队列、绑定(bingdings)、用户、虚拟主机(virtual hosts)和权限。
  • 监控队列长度、channel中和全局的消息速率、每个连接的数据速率、等。
  • 发送和接收消息。
  • 监控Erlang的进程、文件信息、内存使用情况。
  • 通过JSON将对象定义导入/导出。
  • 强制关闭连接、清空队列。

管理插件包含在RabbitMQ的发布包中,使用rabbitmq-plugins命令来开启它(会直接启动):

rabbitmq-plugins enable rabbitmq_management
  • Web UI的地址:http://server-name:15672/,如:http://localhost:15672/。
  • HTTP API和它的文档说明地址:http://server-name:15672/api/,如:http://localhost:15672/api/。
  • 从http://server-name:15672/cli/地址下载rabbitmqadmin工具。

注意:在RabbitMQ 3.0之前的版本,这个端口号为:55672。

管理界面的后台数据交互是基于HTTP API的。

1.1、权限控制

用户可以赋予Rabbit支持的标签(tag),主要有四种标签:management、policymaker、monitoring、administrator。以下是它们的区别:

标签 权限描述
(None) 无任何访问权限。
management 可以做任何经由AMQP协议的操作:

  • 罗列通过AMQP连接的虚拟主机列表。
  • 列出有权限虚拟主机下的所有队列、Exchange、和绑定。
  • 查看和关闭自己的channel和连接。
  • 查看虚拟主机的全局统计,包括其它用户的活跃情况。
policymaker 包含”management”的权限,并增加:

  • 查看、创建、删除虚拟主机的策略和参数。
monitoring 包含”management”的权限,并增加:

  • 列出所有的虚拟主机,包括不能通过AMQP协议访问的。
  • 列出所有用户的连接和channel。
  • 列出节点的内存使用情况和集群信息。
  • 查询所有虚拟主机的全局统计信息。
administrator 包含所有”policymaker” 和 “monitoring”权限,并增加:

  • 查询、创建和删除虚拟主机。
  • 查询、创建和删除用户。
  • 查询、创建和删除权限。
  • 关闭其它用户的连接。

所有的用户都只能同时列出一个虚拟主机下的对象。
如果由于没有用户,或只有非管理员用户而无法登录,可以使用rabbitmqctl add_user命令来增加一个非管理员用户,再使用rabbitmqctl set_user_tags给增加的用户指定为管理员用户。

1.2、配置相关

在RabbitMQ的主配置文件rabbitmq.config中,有一些选项会影响到管理插件。

1.2.1、在启动时加载定义对象

管理界面可以将所有的Broker对象(队列、Exchange、bindings、用户、虚拟主机、权限控制、参数)以JSON形式导出,在某些情况下,可能需要在启动后就包含所有对象的定义。

使用load_definitions参数可以设置启动时包含先前导出的JSON文件中的所有对象定义。

注意,使用这个参数将会覆盖Broker中相同的对象,但是是不会删除已经存在的不同对象。但是如果要完全重置Broker,使用这个选项将会阻止默认用户、虚拟主机、权限的创建。

1.2.2、消息速率

管理插件可以显示全局的、队列的、channel的、Exchange的、虚拟主机的消息速率。这是最基本的。

它也可以展示队列、channel、Exchange等的各种组合的消息速率,为了节约内存、CPU,该功能默认是关闭的。

消息速率的显示模式是通过参数rates_mode控制的,可选值:basic(默认)、detailed、none。

1.2.3、统计刷新间隔

默认管理插件的统计刷新间隔为5000ms,它可由参数collect_statistics_interval控制,单位为ms,重启生效。

1.2.4、HTTP请求日志配置

创建访问HTTP API的日志,使用http_log_dir参数来设置,注意它仅会记录HTTP API的日志,界面的静态文件的访问不会被记录,重启生效。

1.2.5、配置示例

[
  {rabbit,                    [ {tcp_listeners,               [5672]},
                                {collect_statistics_interval, 10000} ] },
  {rabbitmq_management,       [ {http_log_dir,  "/tmp/rabbit-mgmt"},
                                {message_rates, basic}] }
]

将统计刷新间隔设置为10000ms,HTTP请求日志目录为/tmp/rabbit-mgmt。
修改Web UI的端口号:

{rabbitmq_management, [{listener, [{port, 12345}]}]}

支持HTTPS:

[{rabbitmq_management,
  [{listener, [{port,     15671},
               {ssl,      true},
               {ssl_opts, [{cacertfile, "/path/to/cacert.pem"},
                           {certfile,   "/path/to/cert.pem"},
                           {keyfile,    "/path/to/key.pem"}]}
              ]}
  ]}
]

 1.3、集群相关

管理插件是支持集群的。可以在集群中的一个或者多个节点上开启它,就可以查看整个集群的信息。

如果要部署不需要全量开启管理插件的集群节点,但至少也应该在每个节点上开启rabbitmq-management-agent插件。

 

转载请注明:子暃之路 » RabbitMQ指南(4)-管理监控

喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址