Appearance
RabbitMQ 健康检查
1. 过时的方法
RabbitMQ 官方自 3.8.x 版本起,将 node_health_check 命令及 /api/healthchecks/node 端点标记为过时(deprecated),并在 3.13.0 版本彻底移除(变为无操作 no-op)。
2. 推荐的方式
2.1. 命令行
RabbitMQ 提供 rabbitmq-diagnostics 命令用于健康检查:
| 命令 | 作用 | 资源消耗 |
|---|---|---|
rabbitmq-diagnostics check_running | 检查节点是否运行 | 极低 |
rabbitmq-diagnostics check_local_alarms | 检查本地告警(内存/磁盘) | 较低 |
rabbitmq-diagnostics check_port_connectivity | 检查端口连通性 | 中等 |
2.2. HTTP API
RabbitMQ 提供了三种健康检查端点,各自适用于不同的场景:
| 端点 | 作用 | 资源消耗 | 示例 |
|---|---|---|---|
/api/health/checks/running | Liveness Probe(存活性检测) | 极低 | 200: {"status": "ok"} |
/api/health/checks/local-alarms | Readiness Probe(就绪检测) | 较低 | 503: {"status": "failed", "reason": "memory alarm triggered"} |
/api/aliveness-test/{vhost} | 业务可用性检查 | 中等 | 200: {"status": "ok"} |
3. 选择建议
- 只关心进程是否运行:
check_running或/api/health/checks/running - 需要确保节点资源健康:
check_local_alarms或/api/health/checks/local-alarms - 需要检查 RabbitMQ 的完整功能:
check_port_connectivity或/api/aliveness-test/{vhost}
4. 示例
假设使用默认虚拟主机 / 和 /api/aliveness-test/{vhost} 端点进行健康检查:
- 因
/需要 URL 编码为%2F,所以对应的路径为/api/aliveness-test/%2F; - 需要注意的是
/api/aliveness-test/{vhost}要求用户有写权限(其它健康检查端点不用);