Capistrano部署时Honeybadger突然无法上报的问题求助
问题背景
埃默里大学有三个Rails应用,自2025年4月1日起,无法通过官方推荐配置向Honeybadger上报部署信息。三个应用的环境配置如下:
- Ruby v2.7.4 + Capistrano v3.17.1
- Ruby v3.1.4 + Capistrano v3.14.1
- Ruby v3.1.2 + Capistrano v3.17.3
所有应用均使用Honeybadger gem v4.12.2,且Capistrano与Honeybadger相关代码长期未变更,最后一次成功部署在2025年4月1日。
报错详情
初始警告
执行部署命令时出现以下警告:
BRANCH=adds_image_width_height_alto_processor bundle exec cap arch deploy 00:00 honeybadger:env WARN Unable to notify Honeybadger: could not find app server for notification. Try setting honeybadger_server.
设置honeybadger_server后的错误
按照提示在环境部署文件中添加set :honeybadger_server, 'api.honeybadger.io'后,出现SSH连接错误:
1: from /home/*******/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/sshkit-1.21.3/lib/sshkit/runners/parallel.rb:11:in `block (2 levels) in execute' /home/*******/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/sshkit-1.21.3/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute': Exception while executing on host api.honeybadger.io: Network is unreachable - connect(2) for [****:****:****:****:****:****:****:****]:22 (SSHKit::Runner::ExecuteError) (Backtrace restricted to imported tasks) cap aborted! SSHKit::Runner::ExecuteError: Exception while executing on host api.honeybadger.io: Network is unreachable - connect(2) for [****:****:****:****:****:****:****:****]:22
尝试关闭上报后的问题
注释掉Capfile中的require 'capistrano/honeybadger'以及环境部署文件中的set :honeybadger_env, 'curate-arch',尝试关闭Honeybadger部署上报功能,但部署操作仍无正常响应。
解决方案建议
1. 修正honeybadger_server配置错误
报错显示Capistrano尝试通过SSH连接api.honeybadger.io的22端口,这是因为honeybadger_server参数被错误识别为SSH服务器地址,而非Honeybadger API的HTTP端点。正确的配置应该指定API的HTTPS地址,且需使用插件的正确参数:
# 替换原honeybadger_server配置,改用以下参数 set :honeybadger_api_key, '你的应用API密钥' set :honeybadger_endpoint, 'https://api.honeybadger.io/v1/deploys'
注意:旧版本的Honeybadger Capistrano插件对honeybadger_server参数的处理存在歧义,避免直接使用该参数指向API域名。
2. 检查网络与防火墙规则
部署服务器无法连接api.honeybadger.io的22端口,说明服务器出站规则可能限制了SSH访问,但Honeybadger部署通知实际只需要HTTPS(443端口)访问:
- 在部署服务器上执行
curl -I https://api.honeybadger.io,确认能否正常访问API端点 - 检查服务器防火墙/安全组是否允许出站HTTPS(443)流量到api.honeybadger.io
3. 升级Honeybadger Gem到兼容版本
当前使用的v4.12.2可能存在与Capistrano版本的兼容性问题,或无法适配2025年4月1日后Honeybadger API的变更。尝试升级到对应Ruby版本支持的最新v4.x版本:
bundle update honeybadger --conservative
升级后重新测试部署上报功能。
4. 彻底禁用Honeybadger部署任务
如果不需要部署上报,确保完全禁用相关任务:
- 除了注释Capfile中的
require 'capistrano/honeybadger',在部署配置文件中添加:# 清除Honeybadger部署任务的所有动作 Rake::Task['honeybadger:deploy'].clear_actions if Rake::Task.task_defined?('honeybadger:deploy') # 或者直接跳过整个Honeybadger命名空间的任务 skip 'honeybadger'
5. 验证Honeybadger API权限与状态
- 登录Honeybadger后台,确认应用的API密钥是否有效,且具备部署通知的权限
- 检查Honeybadger官方状态页面,确认2025年4月1日后是否有API服务变更或故障
内容的提问来源于stack exchange,提问作者Brad Watson

