0

我们正在从在单体应用服务器上构建应用程序过渡到在 Spring Boot 上更多面向微服务的应用程序。我们将通过 HTTP 或 JMX 使用 SB Actuator 发布健康信息。

监控服务的选项/最佳实践是什么,总共大约 30-50 个?感谢您的输入!

4

1 回答 1

2

由于不了解您的架构和服务的太多细节,这里有一些建议代表了我在生产中工作过的系统中已经证明的策略(一部分)。为此,我假设您为每个微服务使用一个容器/VM:

  • 如果您的服务是无状态的(它们应该是 :-) 并且您有冗余(应该有:-) 那么您设置负载均衡器以在每个实例上调用您的 /health 并且如果运行状况检查失败则负载均衡器应该使实例停止旋转。根据您的系统的容忍程度,您可以设置各种规则来定义故障,而不仅仅是单个故障(例如 3 次连续等)
  • 在每个实例上运行一个 Nagios 代理,该代理在 localhost 上调用您的健康检查 (/health)。如果此操作失败,则生成一个警报以指定哪个实例失败。
  • 如果您的实例对于给定服务都不是健康的,您还希望确保生成更高级别的警报。您可能可以在负载均衡器中进行设置,或者您可以在负载均衡器外部设置一个监控进程,定期调用您的服务,如果它没有得到任何响应(即没有实例响应),那么它应该听起来所有警报。希望这种情况永远不会在生产中触发,因为您处理了其他警报。
  • 高级:在云环境中,您可以将警报与自动缩放功能连接起来。这样,每当监控系统认为服务实例不健康时,不健康的实例就会被拆除,健康的实例会自动启动
于 2016-02-25T19:44:04.100 回答