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 可以添加查询字符串参数 sort
和 sort_reverse
。sort
允许您选择要排序的主字段,如果将 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_sha256
、rabbit_password_hashing_sha512
和 rabbit_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-connections
,max-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}
清除(移除)虚拟主机限制。
GET /api/federation-links
提供集群中所有虚拟主机的所有联合链接的状态。
此端点仅在启用 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” 时,检查使用的到期期限将是未来两个月。
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 来请求特定时间段,则 avg
、avg_rate
和 samples
才会出现。为此,您需要为所需的样本设置 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 |
|
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 | 整个集群的名称,使用 |
contexts | 集群中的 Web 应用程序上下文列表。 |
erlang_full_version | 一个字符串,其中包含有关 Erlang VM 以及如何为连接到的节点编译它的扩展详细信息。 |
erlang_version | 一个字符串,其中包含连接到的节点的 Erlang 版本。由于集群应全部运行相同的版本,因此可以将其视为代表集群。 |
exchange_types | 所有可用的交换机类型列表。 |
listeners | 集群中所有节点的所有(非 HTTP)网络监听器。(有关 HTTP,请参阅 |
management_version | 正在使用的管理插件的版本。 |
message_stats | 用户可以看到的所有内容的 message_stats 对象 - 对于 |
node | 此管理插件实例正在其上运行的集群节点的名称。 |
object_totals | 一个对象,其中包含所有连接、通道、交换机、队列和消费者的全局计数,受与 |
queue_totals | 一个对象,其中包含所有队列的 |
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 发送消息,则列表中也会报告 “ |
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 中附加 |
binary | 二进制内存所有者的详细分类。仅当在 URL 中附加 |
/api/connections
/api/connections/(name)
请参阅 rabbitmqctl list_connections
的文档。没有其他字段,尽管 pid
被 node
替换。
另请注意,虽然非 AMQP 连接将出现在此列表中(与 rabbitmqctl list_connections
不同),但它们将省略许多连接级统计信息。
/api/connections/(name)/channels
/api/channels
请参阅 rabbitmqctl list_channels
的文档,其中 pid
被 node
替换,加上
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_stats
和 enable_queue_totals
的查询参数组合时,此查询返回以下字段
name | 队列的名称。 |
vhost | 虚拟主机的名称。 |
type | 队列的类型。 |
node | 根据队列的类型,这是保存队列或托管领导者的节点。 |
state | 队列的状态。 |
arguments | 队列的参数。 |
auto_delete |
|
durable |
|
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
中的所有字段(即 name
和 tracing
)加上
message_stats | 此虚拟主机的全局 message_stats。请注意,即使对于没有 |
messages messages_ready messages_acknowledged | 虚拟主机中所有队列的这些字段的总和。 |
recv_oct send_oct | 虚拟主机的所有连接的这些字段的总和。 |
分页参数
分页可以应用于列出以下内容的端点
- 队列
- 交换机
- 连接
- 通道
如果没有分页,这些端点可能会生成非常大的 JSON 响应,并浪费大量带宽和 CPU 资源。
默认页面大小为 100,最大支持页面大小为 500。
以下是可以使用的查询参数。
参数名称数据类型描述page | 正整数 | 页码 |
page_size | 正整数 | 每页元素数(默认值:100,最大支持值:500) |
name | String | 按名称过滤,例如队列名称、交换机名称等。 |
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" 过滤名称 |