需要为 RabbitMQ 监控用户分配的权限

Posted

技术标签:

【中文标题】需要为 RabbitMQ 监控用户分配的权限【英文标题】:Permissions that need to be assigned for a RabbitMQ monitoring user 【发布时间】:2018-08-24 19:05:09 【问题描述】:

我需要为监控我的 RabbitMQ 服务器的软件分配什么权限?软件代理应监控this document 中解释和推荐的大部分指标。

我想我必须创建一个用户,例如monitoring,然后授予此用户访问所有 virtual hosts 的访问权限,其中包含应监控的资源。

我认为在创建用户时,我必须为其分配 标签monitoring,这是一个预定义的标签。

了解的是,我需要分配给configurewriteread 的正则表达式。 documentation 包含一个具有资源权限的表。

我认为监控软件应该能够创建或删除资源configure 权限)也不应该能够添加 消息发送到队列或 READ 和 ACK 消息来自队列。但例如,它应该能够读取队列中等待的消息的 number 条,以便在队列中有大量未检索的增长消息时发出警报。

谁能解释一下,这样的监控用户需要什么权限和设置?

【问题讨论】:

【参考方案1】:

通过一些测试我自己想通了。如果有人感兴趣:

使用monitoring标签创建一个帐户 将该帐户添加到应监控的每个虚拟主机,并将空字符串(“”)添加到configurewriteread 权限。

通过一个不错的 bash 脚本,您可以获取每个队列中的消息数量:

curl -u username:password \
 --silent \
 http://<ServerOrIP>:15672/api/queues/<vhostname> | jq '.[] | .name, .messages'

【讨论】:

【参考方案2】:

这是设置 RabbitMQ 队列监控时从头到尾的快速指南。

1) 创建账户:

rabbitmqctl add_user monitoring password

2)添加监控标签(你可以在这里阅读更多关于RabbitMQ标签https://www.rabbitmq.com/management.html

rabbitmqctl set_user_tags monitoring monitoring

3) 现在获取虚拟主机的名称:

rabbitmqctl list_vhosts

4) 为虚拟主机添加监控用户权限:

rabbitmqctl set_permissions -p Some_Virtual_Host monitoring "" "" ""

5) 检查访问是否成功:

curl -s -u monitoring:password http://localhost:15672/api/queues | jq

"messages"参数

可选)您可以从命令行发布虚假消息:

rabbitmqadmin publish --vhost=Some_Virtual_Host exchange=some_exchange routing_key=outgoing_routing_key payload="hello world"

再看"messages"

提示:确保在您的 RabbitMQ 构建中启用 rabbitmq_management 插件,以便能够执行这些查询。

【讨论】:

【参考方案3】:

什么是jq?上面提供的答案中缺少解释。

jq 命令位于 EPEL 存储库中。

https://www.cyberithub.com/how-to-install-jq-json-processor-on-rhel-centos-7-8/

# yum --enablerepo=epel install jq

【讨论】:

以上是关于需要为 RabbitMQ 监控用户分配的权限的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMQ 消息队列学习

RabbitMQ:伪延时队列

私有云Rabbitmq 集群部署

金蝶客户端使用

RabbitMQ学习 (管理插件)

RabbitMQ - 用户'guest'拒绝访问虚拟主机'XXX'