ReportPortal analyzer服务无法连接RabbitMQ问题求助
ReportPortal自动分析功能失效(analyzer服务无法启动)
问题现象
通过K8s部署ReportPortal(Helm Chart版本25.5.30),整体运行正常,但自动分析功能失效,核心原因是analyzer服务无法启动。
相关日志
API Pod日志
2025-06-03 15:32:47.705 2025-06-03 13:32:47,609 - [un8qThWMTjKjDSy8SF4-4Q] - INFO - analyzerApp.amqp - Trying to connect to amqp://reportportal-rabbitmq.reportportal.svc.cluster.local:5672/analyzer?heartbeat=30 2025-06-03 15:32:47.706 2025-06-03 13:32:47,609 - [xy61hSzYS9-D13MzhYNnNA] - INFO - analyzerApp.amqp - AMQP connection established. 2025-06-03 15:32:47.706 2025-06-03 13:32:47,604 - [ofVyUEV-QzapYgMIoePE7w] - ERROR - analyzerApp.amqp - Connection/channel lost. Reconnecting. Exchange: 'analyzer-default'. Queue: 'index_suggest_info'. 2025-06-03 15:32:47.706 Traceback (most recent call last): 2025-06-03 15:32:47.706 File "/backend/app/amqp/amqp.py", line 187, in receive 2025-06-03 15:32:47.706 self._bind_queue(channel, queue, self._config.amqpExchangeName) 2025-06-03 15:32:47.706 File "/backend/app/amqp/amqp.py", line 147, in _bind_queue 2025-06-03 15:32:47.706 channel.queue_bind(exchange=exchange_name, queue=name, routing_key=name) 2025-06-03 15:32:47.706 File "/venv/lib64/python3.11/site-packages/pika/adapters/blocking_connection.py", line 2570, in queue_bind 2025-06-03 15:32:47.706 self._flush_output(bind_ok_result.is_ready) 2025-06-03 15:32:47.706 File "/venv/lib64/python3.11/site-packages/pika/adapters/blocking_connection.py", line 1339, in _flush_output 2025-06-03 15:32:47.706 raise self._closing_reason # pylint: disable=E0702 2025-06-03 15:32:47.706 ^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-06-03 15:32:47.706 pika.exceptions.ChannelClosedByBroker: (404, "NOT_FOUND - no exchange 'analyzer-default' in vhost 'analyzer'")
RabbitMQ Pod日志
2025-06-03 16:00:36.600 2025-06-03 14:00:36.117476+00:00 [error] <0.8690128.0> Channel error on connection <0.8690983.0> (10.19.172.218:43084 -> 10.19.227.194:5672, vhost: 'analyzer', user: 'rabbitmq'), channel 1: 2025-06-03 16:00:36.600 2025-06-03 14:00:36.117476+00:00 [error] <0.8690128.0> operation queue.bind caused a channel exception not_found: no exchange 'analyzer-default' in vhost 'analyzer'
排查信息
已确认analyzer-default交换机未被创建,未修改analyzer服务的任何默认配置。
解决方案
1. 检查RabbitMQ初始化Job状态
ReportPortal部署时,RabbitMQ的交换机、队列等资源由rabbitmq-init-job负责初始化。先确认该Job是否成功执行:
# 查看Job状态 kubectl get jobs -n reportportal # 查看Job执行日志 kubectl logs <rabbitmq-init-job-pod-name> -n reportportal
如果Job执行失败,根据日志修复问题后,重新执行该Job:
kubectl delete job <rabbitmq-init-job-name> -n reportportal # 等待Helm自动重建Job或手动触发
2. 手动创建缺失的交换机
若初始化Job无法正常修复,可直接在RabbitMQ的analyzer虚拟主机中创建analyzer-default交换机:
方式一:通过RabbitMQ管理界面
- 访问RabbitMQ管理控制台,切换到
analyzer虚拟主机 - 进入Exchanges页面,点击Add a new exchange
- 填写名称为
analyzer-default,类型选择topic,勾选Durable,点击Add exchange
方式二:通过命令行操作
# 进入RabbitMQ Pod kubectl exec -it <rabbitmq-pod-name> -n reportportal -- bash # 授予用户权限(若未授权) rabbitmqctl set_permissions -p analyzer rabbitmq ".*" ".*" ".*" # 创建交换机 rabbitmqadmin declare exchange name=analyzer-default type=topic durable=true vhost=analyzer
3. 重启analyzer服务
交换机创建完成后,重启analyzer Pod:
kubectl rollout restart deployment/reportportal-analyzer -n reportportal
4. 验证功能恢复
等待analyzer Pod启动完成后,查看Pod日志确认无AMQP连接错误,同时测试ReportPortal的自动分析功能是否正常运行。
内容的提问来源于stack exchange,提问作者makeiteasy
相关产品推荐
相关产品推荐

