You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Capistrano部署时Honeybadger突然无法上报的问题求助

Honeybadger部署上报失败排查与解决方案(RoR + Capistrano环境)

问题背景

埃默里大学有三个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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 12:18:18