我们使用 Resque 在大量机器上运行 Ruby 工作程序。每隔一段时间,我们就会在 Resque 工作进程中看到分段错误。很难调试这些,因为它们相当罕见,我们必须运行数以万计的分布式作业才能触发崩溃。
理想情况下,我们希望在每次崩溃后捕获回溯和核心文件,并自动将它们上传到中央服务器。换句话说,我们正在寻找类似于 Gnome 的“Bug Buddy”的东西,但是完全自动化并且能够在 Ruby 解释器转储核心时捕获错误。(类似的基于 GUI 的产品包括 MacOS X Crash Reporter、Windows Error Reporting、KDE 的 Dr. Konqi 和 Mozilla 的 Breakpad。但我们需要在无头、无人值守的服务器上运行的东西。)
到目前为止,最有希望的选择似乎是 Ubuntu 的 Appport,它可以拦截服务器进程中的崩溃并将其保存到磁盘。Apport 通常会将崩溃上传到 Ubuntu 的 Launchpad,但它也带有 Python 库。
有没有人有使用这些库的任何建议或第一手经验?我在这里而不是在服务器故障上问,因为解决方案可能涉及编程或代码更改。