【问题标题】:Using a Continuous Integration Server as a watchdog使用持续集成服务器作为看门狗
【发布时间】:2025-12-27 19:30:16
【问题描述】:

我目前正在实施一个系统来检查我的服务器的状态,最终应用一些修复程序并在出现错误时提醒管理员(基本上是一个看门狗)。

我曾经在带有计划任务的 Java 容器中执行此操作。另一方面,我有我的构建服务器(Teamcity),它非常强大,但每天最多使用 1 小时。我正在考虑将我的看门狗实现为构建任务。

令人惊讶的是,我还没有找到任何谈论这个的好文章。有没有人对此有一些反馈?在这样做之前我应该​​考虑什么?有什么缺点吗?

到目前为止,我的优点/缺点是:

优点

  • CI 服务器功能强大,但这种能力每天仅使用 1 小时
  • 如果 Watchdog 知道构建服务器上正在运行什么并且在重新部署项目时不会被触发,那么它会更智能
  • CI 服务器具有集成的通知系统
  • CI 服务器跟踪构建日志,并有一个很好的界面来显示正确/错误
  • 任务可以手动运行,也可以按计划运行

缺点

  • 部署卡住可能意味着监控卡住
  • 更难跟踪以前检查中发生的情况

请丰富这个列表!

谢谢

【问题讨论】:

  • 您是否考虑过在Programmers 上提问?这个问题听起来可能更热门。

标签: java continuous-integration teamcity watchdog


【解决方案1】:

您可以使用 teamcity 实现您想做的任何事情。但是,您真正需要的是像 nagios/icinga 这样的监控服务。我们在团队中使用这两种工具,我通常发现

  • nagios/icinga 的触发速度要快得多
  • 可以以非常快的间隔重复运行(在某些情况下为 2-3 秒)
  • 也可以设置为在失败的任务上运行事件处理程序。我在 teamcity 中看到的唯一问题是您可以设置构建步骤以随时运行/“上一步成功”,但没有挂钩可以“仅在上一步失败时”运行构建步骤
  • teamcity 的收入模式也是基于代理的。因此,您受限于在任何给定时间可以运行的最大代理数。监控系统没有这样的限制。事实上,它们是免费的

【讨论】:

  • 我不认为 N​​agios/icinga 真的适合我。我的服务很少。我已经使用 New relic 来监控我的基础设施。我并没有真正尝试监控我的基础架构,而是更多地监控应用程序本身,主要是 amqp 队列、数据库状态、错误日志,并在需要时应用一些修复。