跳到主要内容
版本:4.1

rabbitmqadmin v2,HTTP API 的命令行工具

rabbitmqadmin v2 是一个使用 HTTP API 的命令行工具。

它支持管理 UI 中提供的许多操作

  • 列出对象(虚拟主机、用户、队列、流、权限、策略等等)
  • 创建对象
  • 删除对象
  • 访问集群和节点指标
  • 运行 健康检查
  • 列出 功能标志 状态
  • 列出集群中使用的 已弃用功能
  • 定义 导出、转换和导入
  • shovel 的操作
  • federation upstream 和链接的操作
  • 关闭连接
  • 跨集群节点重新平衡队列领导者

请注意,rabbitmqadmin 不能替代 rabbitmqctlrabbitmq-plugins,因为 HTTP API 有意不公开某些操作。

rabbitmqadmin v2

这一代 rabbitmqadmin 是一个独立的项目,它有自己的开发周期,独立于 RabbitMQ 的开发周期。

它作为原生二进制文件分发。

下载

x86-64 Linux、aarch64 Linux、aarch64 macOS 和 x86-64 Windows 的二进制文件通过 GitHub 发布 分发。

用法

探索可用的命令组和子命令

要探索可用的命令组,请使用

rabbitmqadmin help

这将输出命令组的列表

Usage: rabbitmqadmin [OPTIONS] <command>

Commands:
show Overview, memory footprint breakdown, and more
list Lists objects
declare Creates or declares objects
delete Deletes objects
purge Purges queues
policies Operations on policies
health_check Runs health checks
close Closes connections
rebalance Rebalancing of leader replicas
definitions Operations on definitions (everything except for messages: virtual hosts, queues, streams, exchanges, bindings, users, etc)
export See 'definitions export'
import See 'definitions import'
feature_flags Operations on feature flags
deprecated_features Operations on deprecated features
publish Publishes (inefficiently) message(s) to a queue or a stream. Only suitable for development and test environments.
get Fetches message(s) from a queue or stream via polling. Only suitable for development and test environments.
shovels Operations on shovels
federation Operations on federation upstreams and links
tanzu Tanzu RabbitMQ-specific commands
help Print this message or the help of the given subcommand(s)

要探索特定组中的命令,请使用

rabbitmqadmin {group name} help

使用 help--help 探索 CLI

要了解可用的命令组和特定命令,请运行

rabbitmqadmin help

此标志可以附加到命令或子命令,以获取特定于命令的文档

rabbitmqadmin declare queue --help
# => creates or declares things
# =>
# => Usage: rabbitmqadmin declare [object]
# => ...

或者,help 子命令可以给定一个命令名称。它等同于在命令名称末尾标记 --help

rabbitmqadmin declare help queue
# => creates or declares things
# =>
# => Usage: rabbitmqadmin declare [object]
# => ...

更具体的示例将在下面的“示例”部分中介绍。

交互式与在脚本中使用

与原始版本一样,rabbitmqadmin v2 首先是为人类交互式使用而构建的。许多命令将输出格式化的表格,例如

rabbitmqadmin show overview

将输出如下所示的表格

┌──────────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Overview │
├──────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────┤
│ key │ value │
├──────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Product name │ RabbitMQ │
├──────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Product version │ 4.0.8 │
├──────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────┤
│ RabbitMQ version │ 4.0.8 │
├──────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Erlang version │ 26.2.5.8 │
├──────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Erlang details │ Erlang/OTP 26 [erts-14.2.5.7] [source] [64-bit] [smp:10:10] [ds:10:10:10] [async-threads:1] [jit] │
└──────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────┘

正如容易观察到的,在脚本中解析此类输出将具有挑战性。

因此,如果传递 --non-interactive 标志,rabbitmqadmin v2 可以以更友好的方式呈现结果以供脚本使用。它是一个全局标志,因此必须在命令和子命令名称之前传递

rabbitmqadmin --non-interactive show overview

上述命令的输出将不包含任何表格边框,并且因此更容易解析

 key
Product name RabbitMQ
Product version 4.0.8
RabbitMQ version 4.0.8
Erlang version 26.2.5.8
Erlang details Erlang/OTP 26 [erts-14.2.5.5] [source] [64-bit] [smp:10:10] [ds:10:10:10] [async-threads:1] [jit]

检索基本节点信息

rabbitmqadmin show overview

将以表格形式显示必要的节点信息。

检索连接、队列/流、通道搅动信息

帮助评估集群中的连接、队列/流、通道 搅动指标

rabbitmqadmin show churn

列出集群节点

rabbitmqadmin list nodes

列出虚拟主机

rabbitmqadmin list vhosts

列出用户

rabbitmqadmin list users

列出队列

rabbitmqadmin list queues
rabbitmqadmin --vhost "monitoring" list queues

列出交换机

rabbitmqadmin list exchanges
rabbitmqadmin --vhost "events" list exchanges

列出绑定

rabbitmqadmin list bindings
rabbitmqadmin --vhost "events" list bindings

创建虚拟主机

rabbitmqadmin declare vhost --name "vh-789" --default-queue-type "quorum" --description "Used to reproduce issue #789"

删除虚拟主机

rabbitmqadmin delete vhost --name "vh-789"
# --idempotently means that 404 Not Found responses will not be  considered errors
rabbitmqadmin delete vhost --name "vh-789" --idempotently

声明队列

rabbitmqadmin --vhost "events" declare queue --name "target.quorum.queue.name" --type "quorum" --durable true
rabbitmqadmin --vhost "events" declare queue --name "target.stream.name" --type "stream" --durable true
rabbitmqadmin --vhost "events" declare queue --name "target.classic.queue.name" --type "classic" --durable true --auto-delete false

清除队列

rabbitmqadmin --vhost "events" purge queue --name "target.queue.name"

删除队列

rabbitmqadmin --vhost "events" delete queue --name "target.queue.name"
# --idempotently means that 404 Not Found responses will not be considered errors
rabbitmqadmin --vhost "events" delete queue --name "target.queue.name" --idempotently

声明交换机

rabbitmqadmin --vhost "events" declare exchange --name "events.all_types.topic" --type "topic" --durable true
rabbitmqadmin --vhost "events" declare exchange --name "events.all_type.uncategorized" --type "fanout" --durable true --auto-delete false
rabbitmqadmin --vhost "events" declare exchange --name "local.random.c60bda92" --type "x-local-random" --durable true

删除交换机

rabbitmqadmin --vhost "events" delete exchange --name "target.exchange.name"
# --idempotently means that 404 Not Found responses will not be  considered errors
rabbitmqadmin --vhost "events" delete exchange --name "target.exchange.name" --idempotently

检查节点内存细分

有两个命令用于推理目标 节点的内存占用

# displays a breakdown in bytes
rabbitmqadmin show memory_breakdown_in_bytes --node 'rabbit@hostname'
# displays a breakdown in percent
rabbitmqadmin show memory_breakdown_in_percent --node 'rabbit@hostname'

show memory_breakdown_in_percent 的示例输出

┌────────────────────────────────────────┬────────────┐
│ key │ percentage │
├────────────────────────────────────────┼────────────┤
│ total │ 100% │
├────────────────────────────────────────┼────────────┤
│ Binary heap │ 45.10% │
├────────────────────────────────────────┼────────────┤
│ Allocated but unused │ 23.45% │
├────────────────────────────────────────┼────────────┤
│ Quorum queue ETS tables │ 23.05% │
├────────────────────────────────────────┼────────────┤
│ Other processes │ 5.32% │
├────────────────────────────────────────┼────────────┤
│ Other (used by the runtime) │ 4.98% │
├────────────────────────────────────────┼────────────┤
│ Code │ 4.54% │
├────────────────────────────────────────┼────────────┤
│ Client connections: others processes │ 3.64% │
├────────────────────────────────────────┼────────────┤
│ Management stats database │ 3.48% │
├────────────────────────────────────────┼────────────┤
│ Client connections: reader processes │ 3.22% │
├────────────────────────────────────────┼────────────┤
│ Plugins and their data │ 3.12% │
├────────────────────────────────────────┼────────────┤
│ Other (ETS tables) │ 1.55% │
├────────────────────────────────────────┼────────────┤
│ Metrics data │ 0.66% │
├────────────────────────────────────────┼────────────┤
│ AMQP 0-9-1 channels │ 0.40% │
├────────────────────────────────────────┼────────────┤
│ Message store indices │ 0.27% │
├────────────────────────────────────────┼────────────┤
│ Atom table │ 0.24% │
├────────────────────────────────────────┼────────────┤
│ Client connections: writer processes │ 0.19% │
├────────────────────────────────────────┼────────────┤
│ Quorum queue replica processes │ 0.10% │
├────────────────────────────────────────┼────────────┤
│ Stream replica processes │ 0.07% │
├────────────────────────────────────────┼────────────┤
│ Mnesia │ 0.02% │
├────────────────────────────────────────┼────────────┤
│ Metadata store │ 0.02% │
├────────────────────────────────────────┼────────────┤
│ Stream coordinator processes │ 0.02% │
├────────────────────────────────────────┼────────────┤
│ Classic queue processes │ 0.00% │
├────────────────────────────────────────┼────────────┤
│ Metadata store ETS tables │ 0.00% │
├────────────────────────────────────────┼────────────┤
│ Stream replica reader processes │ 0.00% │
├────────────────────────────────────────┼────────────┤
│ Reserved by the kernel but unallocated │ 0.00% │
└────────────────────────────────────────┴────────────┘

请注意,有 两种不同的支持策略 用于计算节点的内存占用。在计算每个类别的相对百分比份额时,rabbitmqadmin 将使用较大的值作为 100%。

可能影响报告的百分比值精度的其他因素是 运行时分配器 行为的细微差别和 内核页面缓存

列出功能标志及其状态

rabbitmqadmin feature_flags list
# same command as above
rabbitmqadmin list feature_flags

启用功能标志

rabbitmqadmin feature_flags enable rabbitmq_4.0.0

启用所有稳定功能标志

rabbitmqadmin feature_flags enable_all

列出集群中使用的已弃用功能

rabbitmqadmin deprecated_features list_used

列出所有已弃用功能

rabbitmqadmin deprecated_features list
# same command as above
rabbitmqadmin list deprecated_features

配置文件

rabbitmqadmin v2 支持基于 TOML 的配置文件,这些文件在别名下存储 HTTP API 连接设置组(原始 rabbitmqadmin 术语中的“节点名称”)。

这是一个 rabbitmqadmin v2 配置文件的示例

[local]
hostname = "localhost"
port = 15672
username = "lolz"
password = "lolz"
vhost = '/'

[staging]
hostname = "192.168.20.31"
port = 15672
username = "staging-2387a72329"
password = "staging-1d20cfbd9d"

[production]
hostname = "(redacted)"
port = 15671
username = "user-2ca6bae15ff6b79e92"
password = "user-92ee4c479ae604cc72"

无需在命令行上指定 --hostname--username 来连接到名为 staging 的集群(或特定节点),而是可以指定 --node 别名

# will use the settings from the section called [staging]
rabbitmqadmin --node staging show churn

默认配置文件路径位于 $HOME/.rabbitmqadmin.conf,与原始版本的 rabbitmqadmin 相同。可以在命令行上覆盖它

# will use the settings from the section called [staging]
rabbitmqadmin --config $HOME/.configuration/rabbitmqadmin.conf --node staging show churn

与 v1 相比的破坏性或潜在破坏性更改

一些非必要功能已被删除

rabbitmqadmin v2 不支持

  • 结果排序。请改为使用 --non-interactive 并解析空格分隔的输出。许多用于处理数据的现代工具会将其解析为表格,对数据集进行排序,过滤结果等等。实际上,这些用于数据处理的功能在 某些 shell 中已经可用
  • 列选择。此功能可能会重新引入
  • 任意命令的 JSON 输出(definitions 命令除外)。如果您需要使用 JSON,请直接使用 HTTP API
  • 任意命令的 CSV 输出。此格式可能会重新引入

命令选项的 --snake-case 风格

rabbitmqadmin v1 对命名命令参数使用 lower_case,例如

# Note: auto_delete
rabbitmqadmin-v1 --vhost "vh-2" declare queue name="qq.1" type="quorum" durable=true auto_delete=false

rabbitmqadmin v2 对相同的参数使用更典型的 --snake-case 格式

# Note: --auto-delete
rabbitmqadmin --vhost "vh-2" declare queue --name "qq.1" --type "quorum" --durable true --auto-delete false

全局参数优先

rabbitmqadmin v2 中的全局标志必须位于命令类别(例如 list)和命令本身之前,即各种 HTTP API 端点选项和 --vhost

rabbitmqadmin --vhost "events" declare queue --name "target.quorum.queue.name" --type "quorum" --durable true

--prefix 覆盖 API 路径前缀

rabbitmqadmin v1 中,--path-prefix 附加到默认的 API 路径前缀。在此版本中,传递给 --path-prefix 的值将按给定值使用,换句话说,它替换了默认前缀 /api

配置文件格式已移至 TOML

rabbitmqadmin v1 支持 ini 配置文件,允许用户将多个命令行值分组在一个名称下,例如集群或节点昵称。

由于 rabbitmqadmin v1 的“除了 Python 之外没有其他依赖项”的设计目标,此功能并没有真正经过测试,并且特定的语法(ini 文件的语法,由 Python 的 ConfigParser 支持)linting、解析或生成工具并没有真正可用。

rabbitmqadmin v2 将此格式替换为 TOML,这是一种流行的配置标准,具有 验证和 linting 工具,以及非常成熟的解析器,它完全不特定于 rabbitmqadmin v2。

这是一个 rabbitmqadmin v2 配置文件的示例

[local]
hostname = "localhost"
port = 15672
username = "lolz"
password = "lolz"
vhost = '/'

[staging]
hostname = "192.168.20.31"
port = 15672
username = "staging-2387a72329"
password = "staging-1d20cfbd9d"

[production]
hostname = "(redacted)"
port = 15671
username = "user-efe1f4d763f6"
password = "(redacted)"

rabbitmqadmin v1

rabbitmqadmin v1 是 HTTP API 的原始 CLI 工具,历史上作为 管理插件 的一部分开发并随其分发。

它不再处于积极开发中。

获取 rabbitmqadmin v1

重要提示

考虑切换到 rabbitmqadmin v2。原始的 rabbitmqadmin 不再处于积极开发中。

rabbitmqadmin v1 可以从任何启用了管理插件的 RabbitMQ 节点下载。导航到 http://{hostname}:15672/cli/rabbitmqadmin 下载它。该工具需要安装受支持的 Python 版本。

或者,可以 从 GitHub 下载 rabbitmqadmin v1。

© . All rights reserved.