跳到主要内容
版本:4.1

HTTP API 参考

简介

这是 RabbitMQ HTTP API 的参考页面。

HTTP API 的客户端库

有几个成熟的 HTTP API 客户端库可用,请参阅开发者工具

基于 HTTP API 的 CLI 工具

除了客户端库之外,还有一个 HTTP API 特定的 CLI 工具,可用于交互式和脚本使用。

请参阅rabbitmqadmin v2,HTTP API 的命令行工具以了解更多信息。

概述

所有 HTTP API API 端点都将仅服务于 application/json 类型的资源,并将需要 HTTP 基本身份验证(使用标准的 RabbitMQ 用户数据库)。默认用户是 guest/guest。

许多 URI 需要虚拟主机名称作为路径的一部分,因为名称仅在虚拟主机内唯一标识对象。由于默认虚拟主机名为 "/",因此需要将其编码为 "%2F"。

PUT 资源会创建它。您上传的 JSON 对象必须具有某些强制性键(如下所述),并且可能具有可选键。其他键将被忽略。缺少强制性键将构成错误。

由于绑定在 AMQP 中没有名称或 ID,我们基于其所有属性合成一个。由于在一般情况下预测此名称很困难,因此您也可以通过 POST 到工厂 URI 来创建绑定。请参阅下面的示例。

许多 URI 返回列表。此类 URI 可以添加查询字符串参数 sortsort_reversesort 允许您选择要排序的主字段,如果将 sort_reverse 设置为 true,则将反转排序顺序。sort 参数可以包含用点分隔的子字段。这允许您按列出项目的嵌套组件进行排序;它不允许您按多个字段排序。请参阅下面的示例。

您还可以使用 columns 参数限制每个项目返回的信息。这是一个用逗号分隔的子字段列表,用点分隔。请参阅下面的示例。

可以禁用 GET 请求中的统计信息,而仅获取每个对象的基本信息。这大大减少了返回的数据量以及系统中每个查询的内存和资源消耗。对于某些监控和操作目的,这些查询更合适。

要选择不使用其他指标,请将 disable_stats 查询参数设置为 true

端点参考

GET /api/overview

描述整个系统的各种随机信息片段。

GET /api/cluster-name

返回标识此 RabbitMQ 集群的名称。

PUT /api/cluster-name

更新标识此 RabbitMQ 集群的名称。

GET /api/nodes

列出集群中的所有节点及其指标。

GET /api/nodes/{name}

返回单个集群节点的指标。

GET /api/nodes/{name}/memory

返回特定集群节点的内存使用情况细分

GET /api/extensions

管理插件的已注册扩展列表。

GET /api/definitions

导出集群范围的定义:所有交换机、队列、绑定、用户、虚拟主机、权限、主题权限和参数。也就是说,除了消息之外的所有内容。

相关文档指南:定义导出和导入

POST /api/definitions

服务器定义:交换机、队列、绑定、用户、虚拟主机、权限、主题权限和参数。除了消息之外的所有内容。POST 用于上传现有的一组定义。请注意

  • 集群范围的定义使用与虚拟主机特定的定义不同的格式。虚拟主机特定的定义不能使用此端点导入。请改用 POST /api/definitions/{vhost} 端点。

  • 定义已合并。服务器上已存在但在上传的定义中不存在的任何内容都将保持不变。

  • 不可变对象(交换机、队列和绑定)上的冲突定义将被忽略。现有定义将被保留。

  • 可变对象上的冲突定义将导致服务器中的对象被定义中的对象覆盖。

  • 如果发生错误,您将获得一组部分应用的定义。

此端点支持 multipart/form-data 以及标准的 application/json 内容类型用于上传。在前一种情况下,定义文件应作为名为“file”的表单字段上传。

相关文档指南:定义导出和导入

GET /api/definitions/{vhost}

导出单个虚拟主机的定义。

虚拟主机特定的定义不包含有关虚拟主机名称的任何详细信息,并且可以导入到任何虚拟主机中。也就是说,当导入定义时,虚拟主机的原始名称不必与目标虚拟主机的名称匹配。

相关文档指南:定义导出和导入

POST /api/definitions/{vhost}

导入(上传)来自单个虚拟主机的定义:该虚拟主机中的交换机、队列、绑定、用户、权限、主题权限和参数。

请注意

  • 集群范围的定义不能使用此端点导入。请改用 POST /api/definitions/ 端点。

  • 虚拟主机特定的定义不包含有关虚拟主机名称的任何详细信息,并且可以导入到任何虚拟主机中。也就是说,当导入定义时,虚拟主机的原始名称不必与目标虚拟主机的名称匹配。

  • 定义已合并。服务器上已存在但在上传的定义中不存在的任何内容都将保持不变。

  • 不可变对象(交换机、队列和绑定)上的冲突定义将被忽略。现有定义将被保留。

  • 可变对象上的冲突定义将导致服务器中的对象被定义中的对象覆盖。

  • 如果发生错误,您将获得一组部分应用的定义。

此端点支持 multipart/form-data 以及标准的 application/json 内容类型用于上传。在前一种情况下,定义文件应作为名为“file”的表单字段上传。

相关文档指南:定义导出和导入

GET /api/feature-flags

列出所有功能标志及其状态。

相关文档指南:功能标志

GET /api/deprecated-features

列出所有已弃用的功能及其状态。

相关文档指南:已弃用的功能

GET /api/deprecated-features/used

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

相关文档指南:已弃用的功能

GET /api/connections

所有打开的连接的列表。

使用分页参数列出连接,否则此端点可能会产生非常大的 JSON 响应,并浪费大量带宽和 CPU 资源。默认页面大小为 100,最大支持的页面大小为 500。

GET /api/vhosts/{vhost}/connections

特定虚拟主机中所有打开的连接的列表。

使用分页参数列出连接,否则此端点可能会产生非常大的 JSON 响应,并浪费大量带宽和 CPU 资源。默认页面大小为 100,最大支持的页面大小为 500。

GET /api/connections/{name}

返回单个连接的指标。

DELETE /api/connections/{name}

关闭连接。可选地设置“X-Reason”标头以提供原因。

GET /api/connections/username/{username}

使用特定用户名进行身份验证的所有打开的连接的列表。

DELETE /api/connections/username/{username}

关闭用户的所有连接。

可选地设置“X-Reason”标头以提供原因。

GET /api/connections/{name}/channels

给定连接的所有通道的列表。

使用分页参数列出通道,否则此端点可能会产生非常大的 JSON 响应,并浪费大量带宽和 CPU 资源。默认页面大小为 100,最大支持的页面大小为 500。

GET /api/channels

所有打开的通道的列表。

使用分页参数列出通道,否则此端点可能会产生非常大的 JSON 响应,并浪费大量带宽和 CPU 资源。默认页面大小为 100,最大支持的页面大小为 500。

GET /api/vhosts/{vhost}/channels

特定虚拟主机中所有打开的通道的列表。

使用分页参数列出通道,否则此端点可能会产生非常大的 JSON 响应,并浪费大量带宽和 CPU 资源。默认页面大小为 100,最大支持的页面大小为 500。

GET /api/channels/{id}

有关单个通道的详细信息。

GET /api/consumers

所有消费者的列表。

使用分页参数列出消费者,否则此端点可能会产生非常大的 JSON 响应,并浪费大量带宽和 CPU 资源。默认页面大小为 100,最大支持的页面大小为 500。

GET /api/consumers/{vhost}

给定虚拟主机中所有消费者的列表。

GET /api/exchanges

所有交换机的列表。使用分页参数列出交换机。

GET /api/exchanges/{name}

给定虚拟主机中所有交换机的列表。使用分页参数列出交换机。

GET /api/exchanges/{vhost}/{name}

返回单个交换机的指标。

PUT /api/exchanges/{vhost}/{name}

声明交换机。

有效负载示例

{
"type": "direct",
"auto_delete": false,
"durable": true,
"internal": false,
"arguments": {}
}

DELETE /api/exchanges/{vhost}/{name}

删除交换机。将 if-unused 查询参数设置为 true,以使操作在交换机绑定到队列或作为另一个交换机的源时不起作用

GET /api/exchanges/{vhost}/{name}/bindings/source

给定交换机作为源的所有绑定的列表。

GET /api/exchanges/{vhost}/{name}/bindings/destination

给定交换机作为目标的所有绑定的列表。

PUT /api/exchanges/{vhost}/{name}/publish

将消息发布到给定交换机。有效负载示例

{
"properties": {},
"routing_key": "my key",
"payload": "my body",
"payload_encoding": "string"
}

所有键都是强制性的。

payload_encoding 键应为 “string”(在这种情况下,有效负载将被视为 payload 字段的 UTF-8 编码)或 “base64”(在这种情况下,payload 字段将被视为 base64 编码)。

如果消息发布成功,则响应将如下所示

{"routed": true}

如果消息已发送到至少一个队列,则 routed 将为 true。

危险

请注意,HTTP API 是发布消息的一种非常低效的选择;

首选 AMQP 1.0、AMQP 0-9-1、RabbitMQ 流协议或 RabbitMQ 支持的任何其他消息传递协议。

GET /api/queues

跨所有虚拟主机的所有队列的列表,返回一组缩减的字段。

使用分页参数列出队列,否则此端点可能会产生非常大的 JSON 响应,并浪费大量带宽和 CPU 资源。默认页面大小为 100,最大支持的页面大小为 500。

enable_queue_totals=true 参数可以与 disable_stats=true 参数结合使用,以返回一组缩减的字段,并显着减少此端点返回的数据量。反过来,这可以显着减少此类请求的 CPU 和带宽占用。

GET /api/queues/detailed

包含有关队列的所有可用信息(每个队列超过 50 个字段)的所有队列的列表。

使用分页参数列出队列,否则此端点可能会产生非常大的 JSON 响应,并浪费大量带宽和 CPU 资源。默认页面大小为 100,最大支持的页面大小为 500。

GET /api/queues/{vhost}

给定虚拟主机中包含有关队列的所有可用信息(每个队列超过 50 个字段)的所有队列的列表。

使用分页参数列出队列,否则此端点可能会产生非常大的 JSON 响应,并浪费大量带宽和 CPU 资源。默认页面大小为 100,最大支持的页面大小为 500。

GET /api/queues/{vhost}/{name}

返回队列的指标。

PUT /api/queues/{vhost}/{name}

声明队列。

示例有效负载

{
"auto_delete": false,
"durable": true,
"arguments": {},
"node": "rabbit@node.hostname"
}

DELETE /api/queues/{vhost}/{name}

删除队列。

两个查询字符串参数 if-empty=true 和/或 if-unused=true 可用于条件删除。

GET /api/queues/{vhost}/{name}/bindings

给定队列上所有绑定的列表。

DELETE /api/queues/{vhost}/{name}/contents

清除队列(删除其中处于就绪状态的所有消息)。

POST /api/queues/{vhost}/{name}/get

从队列获取消息。(这不是 HTTP GET,因为它会更改队列的状态。)您应该发布如下所示的正文

{
"count": 5,
"ackmode": "ack_requeue_true",
"encoding": "auto",
"truncate": 50000
}

count 控制一次可以返回(提取)的最大消息数。

ackmode 参数控制如何确认已消费的消息。支持的值为

  • ack_requeue_true
  • :重新排队提取的消息
  • reject_requeue_true
  • :重新排队提取的消息
  • ack_requeue_false
  • :肯定地确认消息并将其标记为删除
  • reject_requeue_false
  • :否定地确认消息并将其标记为删除

encoding 可以是 "auto"(如果有效负载是有效的 UTF-8,则有效负载将作为 UTF-8 编码的字符串返回)或 “base64”(Base64 编码的有效负载)。

如果将 truncate 键设置为字节值,则长度超过该值的消息将被截断。

危险

此端点仅用于开发和故障排除,不适用于生产环境。在生产环境中,请改用消息传递或流协议客户端库。

GET /api/bindings

所有绑定的列表。

使用分页参数列出绑定,否则此端点可能会产生非常大的 JSON 响应,并浪费大量带宽和 CPU 资源。默认页面大小为 100,最大支持的页面大小为 500。

GET /api/bindings/{vhost}

使用分页参数列出绑定,否则此端点可能会产生非常大的 JSON 响应,并浪费大量带宽和 CPU 资源。默认页面大小为 100,最大支持的页面大小为 500。

GET /api/bindings/{vhost}/e/{exchange}/q/{queue}

返回交换机和队列之间所有绑定的列表。

交换机和队列可以多次绑定在一起,因此此列表可以包含同一对的多个绑定。

POST /api/bindings/{vhost}/e/{exchange}/q/{queue}

将队列绑定到交换机。

请求正文应为 JSON 对象,可选择包含两个字段 routing_key(字符串)和 arguments(可选参数的映射)

{
"routing_key": "my_routing_key",
"arguments": {"x-optional-arg": "optional-value"}
}

两个有效负载键都是可选的。

响应将包含带有新声明的绑定的 URI 的 Location 标头。

GET /api/bindings/{vhost}/e/{exchange}/q/{queue}/{props}

检索交换机和队列之间的单个绑定。

URI 的 {props} 部分是绑定的“名称”,由其路由键及其参数的哈希组成。

{props} 是来自绑定列表响应的名为 properties_key 的字段。

DELETE /api/bindings/{vhost}/e/{exchange}/q/{queue}/{props}

删除交换机和队列之间的单个绑定。

URI 的 {props} 部分是绑定的“名称”,由其路由键及其参数的哈希组成。

{props} 是来自绑定列表响应的名为 properties_key 的字段。

GET /api/bindings/{vhost}/e/{source}/e/{destination}

POST /api/bindings/{vhost}/e/{source}/e/{destination}

创建新的交换机到交换机的绑定

请求正文应为 JSON 对象,可选择包含两个字段 routing_key(字符串)和 arguments(可选参数的映射)

{
"routing_key": "my_routing_key",
"arguments": {
"x-arg": "value"
}
}

这两个键都是可选的。

响应将包含带有新声明的绑定的 URI 的 Location 标头。

GET /api/bindings/{vhost}/e/{source}/e/{destination}/{props}

返回特定交换机到交换机的绑定的详细信息。

DELETE /api/bindings/{vhost}/e/{source}/e/{destination}/{props}

删除交换机到交换机的绑定

GET /api/vhosts

返回集群中所有虚拟主机的列表。

分页:默认页面大小为 100,最大支持的页面大小为 500。

GET /api/vhosts/{name}

返回特定虚拟主机的指标。

PUT /api/vhosts/{name}

创建虚拟主机或更新现有虚拟主机的元数据。

有效负载示例

{
"description": "virtual host description",
"tags": "accounts,production",
"default_queue_type": "quorum",
"protected_from_deletion": false
}

tags 键必须是以逗号分隔的标签列表。这些元数据字段是可选的。

要启用或禁用跟踪,请使用 tracing

{"tracing":true}

DELETE /api/vhosts/{name}

删除虚拟主机,只要它不受删除保护即可。

GET /api/vhosts/{name}/permissions

给定虚拟主机的所有权限的列表。

GET /api/vhosts/{name}/topic-permissions

给定虚拟主机的所有主题权限的列表。

POST /api/vhosts/{name}/deletion/protection

保护虚拟主机免受删除。标记为受保护的虚拟主机在解除保护之前无法删除。

DELETE /api/vhosts/{name}/deletion/protection

从虚拟主机中删除删除保护,以便可以删除它。

POST /api/vhosts/{name}/start/{node}

在节点上启动或重新启动虚拟主机。

显式执行此操作几乎从不是必需的。RabbitMQ 节点确保在集群形成后的最初几分钟内(更具体地说是在每个集群成员的启动时间之后),所有虚拟主机都在所有集群节点上启动。

GET /api/users

列出集群中的所有用户。这仅包括内部数据存储中的用户。例如,如果使用LDAP 后端,则此命令将不包括任何 LDAP 用户。

GET /api/users/without-permissions

列出没有任何权限(无法访问任何虚拟主机)并且可以安全删除的用户。

POST /api/users/bulk-delete

批量删除用户列表。有效负载必须包含 users 键,该键是用户名数组

{"users" : ["user1", "user2", "user3"]}

GET /api/users/{name}

返回有关内部数据存储中用户的信息。

PUT /api/users/{name}

创建用户。密码或密码哈希必须在有效负载中提供

{"password":"secret","tags":"administrator"}
{"password_hash":"2lmoth8l4H0DViLaK9Fxi6l9ds8=", "tags":["administrator"]}

password_hash 必须使用密码指南中描述的算法生成。

tags 键采用逗号分隔的标签列表。

如果两者均未设置,则用户将无法使用密码登录,但可以使用其他机制(如客户端证书)。

password_hash 设置为空字符串 ("") 将确保用户无法使用密码登录。

可以使用 hashing_algorithm 键覆盖哈希函数。当前识别的算法为 rabbit_password_hashing_sha256rabbit_password_hashing_sha512rabbit_password_hashing_md5

DELETE /api/users/{name}

删除用户。

GET /api/users/{user}/permissions

给定用户的所有权限的列表。

GET /api/users/{user}/topic-permissions

给定用户的所有主题权限的列表。

GET /api/user-limits

列出所有用户的每用户限制。

GET /api/user-limits/{user}

列出特定用户的每用户限制。

PUT /api/user-limits/{user}/{name}

user 设置或删除每用户限制。name URL 路径元素指的是限制的名称(max-connectionsmax-channels)。

限制是使用正文中的 JSON 文档设置的

{"value": 100}

使用 curl 的示例请求

curl -4u 'guest:guest' -H 'content-type:application/json' -X PUT localhost:15672/api/user-limits/guest/max-connections -d '{"value": 100}'

DELETE /api/user-limits/{user}/{name}

清除每用户限制。

GET /api/whoami

返回已验证用户的用户名。

GET /api/permissions

集群中所有用户权限的列表。

GET /api/permissions/{vhost}/{user}

返回给定虚拟主机中用户的权限。

PUT /api/permissions/{vhost}/{user}

授予(创建)或更新给定虚拟主机中用户的权限。

有效负载示例

{"configure":".*","write":".*","read":".*"}

所有三个权限都必须显式提供。

DELETE /api/permissions/{vhost}/{user}

撤销给定虚拟主机中用户的权限。

GET /api/topic-permissions

列出集群中所有主题交换权限

GET /api/topic-permissions/{vhost}/{user}

返回给定虚拟主机中用户的主题交换权限

PUT /api/topic-permissions/{vhost}/{user}

授予或更新用户的主题交换权限

{
"exchange": "amq.topic",
"write": "^a",
"read":".*",
"configure":".*"
}

以上示例中的所有键都是必需的。

DELETE /api/topic-permissions/{vhost}/{user}

撤销用户的主题交换权限

GET /api/parameters

返回集群中所有虚拟主机的运行时参数列表。

GET /api/parameters/{component}

GET /api/parameters/{component}/{vhost}

GET /api/parameters/{component}/{vhost}/{name}

PUT /api/parameters/{component}/{vhost}/{name}

创建或更新运行时参数

示例请求体

{
"vhost": "vh-2",
"name": "policies.1",
"pattern": "^cq",
"apply-to": "queues",
"definition": {
"max-length": 1000000
}
}

DELETE /api/parameters/{component}/{vhost}/{name}

删除运行时参数

GET /api/global-parameters

列出集群中所有全局运行时参数

GET /api/global-parameters/{name}

返回给定全局运行时参数的值(定义)。

PUT /api/global-parameters/{name}

设置给定的全局运行时参数。

示例负载

{
"name": "cluster_name",
"value": "prod-456"
}
{
"name": "cluster_tags",
"value": {
"environment": "production",
"az": "us-east-3",
"region": "us-east"
}
}

DELETE /api/global-parameters/{name}

清除全局运行时参数。

GET /api/policies

列出集群中所有虚拟主机的策略

GET /api/policies/{vhost}

列出给定虚拟主机中的策略

GET /api/policies/{vhost}/{name}

返回策略定义。

PUT /api/policies/{vhost}/{name}

声明或更新策略

示例有效负载

{"pattern":"^amq.", "definition": {"federation-upstream-set":"all"}, "priority": 10, "apply-to": "queues"}

示例中的所有键都是必需的。

重要提示

一次只能对一个队列、流或交换机应用一个策略。

当多个策略具有冲突的优先级时,将随机应用一个策略。因此,这种情况必须避免

DELETE /api/policies/{vhost}/{name}

删除策略。

GET /api/operator-policies

列出集群中所有虚拟主机的操作员策略

GET /api/operator-policies/{vhost}

返回操作员策略定义。

GET /api/operator-policies/{vhost}/{name}

返回操作员策略定义。

PUT /api/operator-policies/{vhost}/{name}

示例有效负载

{"pattern":"^amq.", "definition": {"federation-upstream-set":"all"}, "priority": 10, "apply-to": "queues"}

示例中的所有键都是必需的。

重要提示

一次只能对一个队列、流或交换机应用一个策略。

当多个策略具有冲突的优先级时,将随机应用一个策略。因此,这种情况必须避免

DELETE /api/operator-policies/{vhost}/{name}

删除操作员策略。

GET /api/vhost-limits

列出集群中配置的所有虚拟主机限制

PUT /api/vhost-limits/{vhost}/{name}

vhost 设置或删除每个虚拟主机的限制。name URL 路径元素指的是限制的名称 (max-connections, max-queues)。

限制是使用正文中的 JSON 文档设置的

{"value": 100}

示例请求

curl -4u 'guest:guest' -H 'content-type:application/json' -X PUT localhost:15672/api/vhost-limits/my-vhost/max-connections -d '{"value": 50}'

相关文档指南:虚拟主机

DELETE /api/vhost-limits/{vhost}/{name}

清除(移除)虚拟主机限制

提供集群中所有虚拟主机的所有联合链接的状态。

此端点仅在启用 rabbitmq_federation_management 插件后可用。

相关文档指南:联合

GET /api/federation-links/{vhost}

提供给定虚拟主机中所有联合链接的状态。

此端点仅在启用 rabbitmq_federation_management 插件后可用。

相关文档指南:联合

GET /api/auth/attempts/{node}

节点注册的客户端身份验证尝试列表。

GET /api/auth/attempts/{node}/source

按远程地址和用户名分组的客户端身份验证尝试列表。

GET /api/auth/hash_password/{password}

根据当前配置的密码哈希算法哈希提供的密码

GET /api/stream/connections

列出集群中所有虚拟主机的流协议连接。

使用分页参数列出连接,否则此端点可能会产生非常大的 JSON 响应,并浪费大量带宽和 CPU 资源。默认页面大小为 100,最大支持的页面大小为 500。

需要启用 rabbitmq_stream_management 插件。

GET /api/stream/connections/{vhost}

特定虚拟主机中所有打开的流协议连接的列表。

使用分页参数列出连接,否则此端点可能会产生非常大的 JSON 响应,并浪费大量带宽和 CPU 资源。默认页面大小为 100,最大支持的页面大小为 500。

需要启用 rabbitmq_stream_management 插件。

GET /api/stream/connections/{vhost}/{name}

返回特定流协议连接的指标。

需要启用 rabbitmq_stream_management 插件。

DELETE /api/stream/connections/{vhost}/{name}

关闭特定的流协议连接。

可选地设置“X-Reason”标头以提供原因。

需要启用 rabbitmq_stream_management 插件。

GET /api/stream/connections/{vhost}/{name}/publishers

列出流协议连接上已知的发布者。

需要启用 rabbitmq_stream_management 插件。

GET /api/stream/connections/{vhost}/{name}/consumers

列出流协议连接上已知的消费者。

使用分页参数列出消费者,否则此端点可能会产生非常大的 JSON 响应,并浪费大量带宽和 CPU 资源。默认页面大小为 100,最大支持的页面大小为 500。

需要启用 rabbitmq_stream_management 插件。

GET /api/stream/publishers

所有流协议连接上已知的发布者列表。

需要启用 rabbitmq_stream_management 插件。

GET /api/stream/publishers/{vhost}

给定虚拟主机中所有流协议连接的已知发布者列表。

需要启用 rabbitmq_stream_management 插件。

GET /api/stream/publishers/{vhost}/{stream}

所有流协议连接上给定流的已知发布者列表。

需要启用 rabbitmq_stream_management 插件。

GET /api/stream/consumers

使用分页参数列出消费者,否则此端点可能会产生非常大的 JSON 响应,并浪费大量带宽和 CPU 资源。默认页面大小为 100,最大支持的页面大小为 500。

需要启用 rabbitmq_stream_management 插件。

GET /api/stream/consumers/{vhost}

特定虚拟主机中的流消费者列表。

需要启用 rabbitmq_stream_management 插件。

健康检查端点

GET /api/health/checks/alarms

如果集群中没有生效的警报,则响应 200 OK;否则响应 503 Service Unavailable。

相关文档指南:资源警报

GET /api/health/checks/local-alarms

如果集群中没有生效的警报,则响应 200 OK;否则响应 503 Service Unavailable。

相关文档指南:资源警报

GET /api/health/checks/certificate-expiration/{within}/{unit}

检查节点上所有启用 TLS 的监听器使用的 PEM 证书捆绑包中找到的每个证书的到期日期,无论证书的“类型”(叶/服务器身份、中间证书或任何 CA)如何。

如果所有证书都有效(未过期),则响应 200 OK;否则响应 503 Service Unavailable。

此健康检查假设

  • 节点上 PEM 捆绑包中包含的所有证书都与 RabbitMQ 客户端、插件或加密的节点间通信相关
  • 过期的证书不是正常的运行状况,任何找到的过期证书都必须通过检查失败报告

如果这些假设中的某些假设不成立,请不要使用此健康检查。

有效单位:days、weeks、months、years。{within} 参数的值是单位数。因此,当 {within} 为 2 且 {unit} 为 “months” 时,检查使用的到期期限将是未来两个月。

相关文档指南:TLS加密的节点间通信

GET /api/health/checks/port-listener/{port}

如果给定端口上有活动的监听器,则响应 200 OK;否则响应 503 Service Unavailable。

相关文档指南:网络

GET /api/health/checks/protocol-listener/{protocol}

如果给定协议有活动的监听器,则响应 200 OK;否则响应 503 Service Unavailable。

有效协议名称为:amqp091, amqp10, mqtt, stomp, web-mqtt, web-stomp

GET /api/health/checks/virtual-hosts

如果所有虚拟主机都在目标节点上运行,则响应 200 OK;否则响应 503 Service Unavailable。

GET /api/health/checks/node-is-quorum-critical

检查是否有最小在线仲裁的仲裁队列(如果目标节点关闭,这些队列将失去其仲裁和可用性)。如果没有此类仲裁队列,则响应 200 OK;否则响应 503 Service Unavailable。

相关文档指南:仲裁队列

GET /api/rebalance/queues

重新平衡所有虚拟主机中的所有队列。

此操作是异步的。检查RabbitMQ 日志以获取有关操作成功或失败的消息。

curl -4u 'guest:guest' -XPOST localhost:15672/api/rebalance/queues/

GET /api/auth

有关 OAuth 2 配置的详细信息。它将返回 HTTP 状态 200,并带有以下格式的正文

{"oauth_enabled":"boolean", "oauth_client_id":"string", "oauth_provider_url":"string"}

HTTP API 返回的指标

您可以向 HTTP API 发出的大多数 GET 请求都会返回包含大量键的 JSON 对象。虽然其中一些键表示您自己在 PUT 请求或 AMQP 命令中设置的内容(例如,队列持久性或参数),但大多数键表示与所讨论对象相关的统计信息。此页面尝试记录它们。

它应与 rabbitmqctl 的手册页结合阅读(如果您在 Unix / Linux 上,请参阅您的安装,或者对于最新版本,请参阅 RabbitMQ 网站)。

任何可以由以下形式的命令返回的字段

rabbitmqctl list_{object}
rabbitmqctl list_{object}

也将在 HTTP API 的等效部分中返回,因此此处未记录所有这些键。但是,与标准 CLI 工具rabbitmqadmin v2 等工具相比,HTTP API 返回了额外的指标。

_details 对象

许多字段表示某种计数:队列长度、已确认的消息、接收的字节数等等。HTTP API 返回的此类绝对计数通常会有一个对应的 _details 对象,该对象提供有关此计数如何变化的信息。例如,来自队列

"messages": 123619,
"messages_details": {
"avg": 41206.333333333336,
"avg_rate": 1030.1583333333333,
"rate": 24723.8,
"samples": [
{
"sample": 123619,
"timestamp": 1400680560000
},
{
"sample": 0,
"timestamp": 1400680500000
},
{
"sample": 0,
"timestamp": 1400680440000
}
]
}

在这里,我们有一个 messages 计数(队列中的消息总数),以及一些附加数据

avg

请求时间段的平均值(见下文)。

avg_rate

请求时间段的平均速率。

rate

最近采样间隔内每秒计数的变化量。

samples

快照显示值在请求时间段内的变化情况。

如果您通过将查询参数附加到 URL 来请求特定时间段,则 avgavg_ratesamples 才会出现。为此,您需要为所需的样本设置 age 和 increment。返回范围的末尾将始终对应于当前。

不同类型的数据采用不同的查询参数来返回样本,如下表所示。如果请求的资源可以生成多种类型的样本(例如,队列可以返回消息速率和队列长度),则可以指定多组参数。

发送和接收的消息msg_rates_age / msg_rates_incr
发送和接收的字节data_rates_age / data_rates_incr
队列长度lengths_age / lengths_incr
节点统计信息(例如,文件描述符、可用磁盘空间)node_stats_age / node_stats_incr

例如,附加 ?lengths_age=3600&lengths_incr=60 将返回过去一小时的队列长度数据,每分钟一个样本。

message_stats 对象

许多对象(包括队列、交换机和通道)将返回通过它们的消息计数。这些计数包含在 message_stats 对象中(该对象反过来将包含每个计数的 _details 对象,如上所述)。

它们可以包含

publish

已发布的消息计数。

publish_in

“发布到”交换机的消息计数,即不考虑路由。

publish_out

“发布出”交换机的消息计数,即考虑路由。

confirm

已确认的消息计数。

deliver

以确认模式传递给消费者的消息计数。

deliver_no_ack

以非确认模式传递给消费者的消息计数。

get

响应 basic.get 以确认模式传递的消息计数。

get_no_ack

响应 basic.get 以非确认模式传递的消息计数。

deliver_get

以上四项的总和。

redeliver

deliver_get 中设置了 redelivered 标志的消息子集计数。

drop_unroutable

作为不可路由消息丢弃的消息计数。

return_unroutable

作为不可路由消息返回给发布者的消息计数。

只会显示发生过某些活动的字段。

详细的消息统计对象

此外,队列、交换机和通道可以返回其每个邻居(即链中的相邻对象:通道 -> 交换机 -> 队列 -> 通道)的消息统计细分。只有在 rates_mode 配置项从默认值 basic 切换到 detailed 时才会发生这种情况。

由于这可能会构成大量数据,因此它也仅在查询单个通道、队列或交换机而不是列表时返回。另请注意,默认的样本保留策略意味着这些详细的消息统计信息不会保留超过几秒钟的历史数据。

详细的消息统计对象具有不同的名称,具体取决于它们的位置(如下所述)。每组详细统计信息都包含一个对象列表,其中包含两个字段,一个字段标识合作伙伴对象,另一个字段 stats 是如上所述的 message_stats 对象。

这是一个示例代码段

"incoming": [
{
"stats": {
"publish": 352593,
"publish_details": {
"rate": 100.2
}
},
"exchange": {
"name": "my-exchange",
"vhost": "/"
}
}
{
"stats": {
"publish": 543784,
"publish_details": {
"rate": 54.6
}
},
"exchange": {
"name": "amq.topic",
"vhost": "/"
}
}
],

此队列当前正在从两个交换机接收消息:来自 “my-exchange” 的 100.2 msg/s 和来自 “amq.topic” 的 54.6 msg/s。

/api/overview

这具有以下字段

cluster_name

整个集群的名称,使用 rabbitmqctl set_cluster_name 设置。

contexts

集群中的 Web 应用程序上下文列表。

erlang_full_version

一个字符串,其中包含有关 Erlang VM 以及如何为连接到的节点编译它的扩展详细信息。

erlang_version

一个字符串,其中包含连接到的节点的 Erlang 版本。由于集群应全部运行相同的版本,因此可以将其视为代表集群。

exchange_types

所有可用的交换机类型列表。

listeners

集群中所有节点的所有(非 HTTP)网络监听器。(有关 HTTP,请参阅 /api/nodes 中的 contexts)。

management_version

正在使用的管理插件的版本。

message_stats

用户可以看到的所有内容的 message_stats 对象 - 对于 monitoringadministrator 用户,无论权限如何,都适用于所有虚拟主机,对于其他用户,则适用于用户有权访问的所有虚拟主机。

node

此管理插件实例正在其上运行的集群节点的名称。

object_totals

一个对象,其中包含所有连接、通道、交换机、队列和消费者的全局计数,受与 message_stats 相同的可见性规则约束。

queue_totals

一个对象,其中包含所有队列的 messagesmessages_readymessages_unacknowledged 字段的总和,同样受与 message_stats 相同的可见性规则约束。

rabbitmq_version

处理此请求的节点上的 RabbitMQ 版本。

rates_mode

‘none’、‘basic’ 或 ‘detailed’。

statistics_db_event_queue

数据库尚未处理的未完成统计事件数。

statistics_db_node

托管管理统计数据库的集群节点的名称。

/api/nodes

这具有以下字段

applications

节点上运行的所有 Erlang 应用程序的列表。

auth_mechanisms

节点上安装的所有 SASL 身份验证机制的列表。

cluster_links

集群中其他节点的列表。对于每个节点,都有用于连接到它的 TCP 连接的详细信息以及已传输数据的统计信息。

config_files

节点读取的配置文件列表。

contexts

List of all HTTP listeners on the node.

db_dir

节点使用的持久性存储位置。

disk_free

可用磁盘空间(以字节为单位)。

disk_free_alarm

磁盘警报是否已触发。

disk_free_limit

磁盘警报将触发的点。

enabled_plugins

显式启用和运行的插件列表。

exchange_types

Exchange types available on the node.

log_files

节点使用的日志文件列表。如果节点还向 stdout 发送消息,则列表中也会报告 “<stdout>”。

mem_used

已使用的内存(以字节为单位)。

mem_alarm

内存警报是否已触发。

mem_limit

内存警报将触发的点。

name

节点名称。

net_ticktime

节点当前的内核 net_ticktime 设置。

os_pid

此节点正在其下运行的操作系统进程标识符。

partitions

此节点正在查看的网络分区列表。

proc_total

Erlang 进程的最大数量。

proc_used

正在使用的 Erlang 进程数。

rates_mode

‘none’、‘basic’ 或 ‘detailed’。

run_queue

等待运行的 Erlang 进程的平均数量。

running

指示此节点是否启动的布尔值。显然,如果为 false,则大多数其他统计信息将丢失。

type

‘disc’ 或 ‘ram’。

uptime

自 Erlang VM 启动以来的时间(以毫秒为单位)。

processors

RabbitMQ 使用的逻辑 CPU 核心数。

/api/nodes/(name)

以上所有内容,加上

memory

详细的内存使用统计信息。仅当在 URL 中附加 ?memory=true 时才会显示。

binary

二进制内存所有者的详细分类。仅当在 URL 中附加 ?binary=true 时才会显示。请注意,如果系统中有许多小二进制文件,则这可能是一个开销很大的查询。

/api/connections

/api/connections/(name)

请参阅 rabbitmqctl list_connections 的文档。没有其他字段,尽管 pidnode 替换。

另请注意,虽然非 AMQP 连接将出现在此列表中(与 rabbitmqctl list_connections 不同),但它们将省略许多连接级统计信息。

/api/connections/(name)/channels

/api/channels

请参阅 rabbitmqctl list_channels 的文档,其中 pidnode 替换,加上

connection_details

有关拥有连接的一些基本详细信息。

message_stats

请参阅上面关于 message_stats 的部分。

/api/channels/(name)

以上所有内容,加上

publishes

详细的消息统计信息(请参阅上面的部分),用于发布到交换机。

deliveries

来自队列的传递的详细消息统计信息。

consumer_details

此通道上的消费者列表,以及每个消费者的一些详细信息。

/api/exchanges

/api/exchanges/(vhost)

请参阅 rabbitmqctl list_exchanges 的文档,加上

message_stats

请参阅上面关于 message_stats 的部分。

/api/exchanges/(vhost)/(name)

以上所有内容,加上

incoming

详细的消息统计信息(请参阅上面的部分),用于从通道发布到此交换机。

outgoing

从该交换机发布到队列的详细消息统计信息。

/api/queues

当使用 disable_statsenable_queue_totals 的查询参数组合时,此查询返回以下字段

name

队列的名称。

vhost

虚拟主机的名称。

type

队列的类型。

node

根据队列的类型,这是保存队列或托管领导者的节点。

state

队列的状态。

arguments

队列的参数。

auto_delete

auto_delete 参数的值。

durable

durable 参数的值。

exclusive

exclusive 参数的值。

messages

队列中的消息总数。

messages_ready

队列中准备好传递的消息数。

messages_unacknowledged

队列中等待确认的消息数。

/api/queues/(vhost)

请参阅 rabbitmqctl list_queues 的文档,其中所有对 pid 的引用都替换为 node,加上

message_stats

请参阅上面关于 message_stats 的部分。

/api/queues/(vhost)/(name)

以上所有内容,加上

incoming

详细的消息统计信息(请参阅上面的部分),用于从交换机发布到此队列。

deliveries

从此队列传递到通道的详细消息统计信息。

consumer_details

此通道上的消费者列表,以及每个消费者的一些详细信息。

/api/vhosts/

/api/vhosts/(name)

rabbitmqctl list_vhosts 中的所有字段(即 nametracing)加上

message_stats

此虚拟主机的全局 message_stats。请注意,即使对于没有 monitoring 标记的用户,会显示此虚拟主机中其他用户的活动。

messages messages_ready messages_acknowledged

虚拟主机中所有队列的这些字段的总和。

recv_oct send_oct

虚拟主机的所有连接的这些字段的总和。

分页参数

分页可以应用于列出以下内容的端点

  • 队列
  • 交换机
  • 连接
  • 通道

如果没有分页,这些端点可能会生成非常大的 JSON 响应,并浪费大量带宽和 CPU 资源。

默认页面大小为 100,最大支持页面大小为 500。

以下是可以使用的查询参数。

参数名称数据类型描述
page正整数

页码

page_size正整数

每页元素数(默认值:100,最大支持值:500)

nameString

按名称过滤,例如队列名称、交换机名称等。

use_regex布尔值

为参数名称启用正则表达式

示例

http://localhost:15672/api/queues?page=1&page_size=50

获取包含 50 个元素的第一个队列页面

http://localhost:15672/api/queues/my-vhost?page=1&page_size=100&name=&use_regex=false&pagination=true

为虚拟主机 "my-vhost" 筛选第一个队列页面

http://localhost:15672/api/exchanges?page=1&page_size=100&name=%5Eamq&use_regex=true&pagination=true

筛选第一个交换机页面,包含 100 个元素,并使用正则表达式 "^amq" 过滤名称

© . All rights reserved.