需要为 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
,这是一个预定义的标签。
我不了解的是,我需要分配给configure
、write
和read
的正则表达式。 documentation 包含一个具有资源权限的表。
我认为监控软件应该不能够创建或删除资源(configure
权限)也不应该能够添加 消息发送到队列或 READ 和 ACK 消息来自队列。但例如,它应该能够读取队列中等待的消息的 number 条,以便在队列中有大量未检索的增长消息时发出警报。
谁能解释一下,这样的监控用户需要什么权限和设置?
【问题讨论】:
【参考方案1】:通过一些测试我自己想通了。如果有人感兴趣:
使用monitoring
标签创建一个帐户
将该帐户添加到应监控的每个虚拟主机,并将空字符串(“”)添加到configure
、write
和read
权限。
通过一个不错的 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 监控用户分配的权限的主要内容,如果未能解决你的问题,请参考以下文章