Service 关于如何监控(微型)服务的建议?

Service 关于如何监控(微型)服务的建议?,service,spring-boot,monitoring,microservices,spring-boot-actuator,Service,Spring Boot,Monitoring,Microservices,Spring Boot Actuator,我们正在从在monolith应用服务器上构建应用程序过渡到在Spring Boot上构建更多面向微服务的应用程序。我们将通过HTTP或JMX向SB启动器发布健康信息 监控服务的选项/最佳实践有哪些,总共大约30-50个?谢谢你的意见 由于不太了解您的体系结构和服务的详细信息,以下是一些建议,它们代表了我在生产环境中工作过的系统中经过验证的策略(其中的一个子集)。为此,我假设每个微服务使用一个容器/VM: 如果您的服务是无状态的(应该是:-),并且您有冗余(应该是:-),那么您可以设置负载平衡器

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


监控服务的选项/最佳实践有哪些,总共大约30-50个?谢谢你的意见

由于不太了解您的体系结构和服务的详细信息,以下是一些建议,它们代表了我在生产环境中工作过的系统中经过验证的策略(其中的一个子集)。为此,我假设每个微服务使用一个容器/VM:

  • 如果您的服务是无状态的(应该是:-),并且您有冗余(应该是:-),那么您可以设置负载平衡器来调用每个实例上的/health,如果运行状况检查失败,那么负载平衡器应该使该实例停止旋转。根据系统的容忍度,您可以设置定义故障的各种规则,而不仅仅是单个故障(例如连续3次等)
  • 在每个实例上运行一个Nagios代理,该代理在本地主机上调用运行状况检查(/health)。如果失败,则生成一个警报,指定哪个实例失败
  • 您还希望确保,如果给定服务的任何实例都不正常,则会生成更高级别的警报。您可以在负载平衡器中进行设置,也可以在负载平衡器外部设置一个监视进程,定期调用您的服务,如果它没有得到任何响应(即没有任何实例响应),那么它应该发出所有警报。希望在生产中不会触发这种情况,因为您处理了其他警报
  • 高级:在云环境中,您可以使用自动缩放功能连接警报。这样,每当监控系统认为某个服务实例不健康时,就会删除不健康的实例,并自动启动健康的实例

由于不太了解您的体系结构和服务的详细信息,以下是一些建议,它们代表了我在生产中使用过的系统中已经验证过的策略(部分)。为此,我假设每个微服务使用一个容器/VM:

  • 如果您的服务是无状态的(应该是:-),并且您有冗余(应该是:-),那么您可以设置负载平衡器来调用每个实例上的/health,如果运行状况检查失败,那么负载平衡器应该使该实例停止旋转。根据系统的容忍度,您可以设置定义故障的各种规则,而不仅仅是单个故障(例如连续3次等)
  • 在每个实例上运行一个Nagios代理,该代理在本地主机上调用运行状况检查(/health)。如果失败,则生成一个警报,指定哪个实例失败
  • 您还希望确保,如果给定服务的任何实例都不正常,则会生成更高级别的警报。您可以在负载平衡器中进行设置,也可以在负载平衡器外部设置一个监视进程,定期调用您的服务,如果它没有得到任何响应(即没有任何实例响应),那么它应该发出所有警报。希望在生产中不会触发这种情况,因为您处理了其他警报
  • 高级:在云环境中,您可以使用自动缩放功能连接警报。这样,每当监控系统认为某个服务实例不健康时,就会删除不健康的实例,并自动启动健康的实例

开发微服务时,良好的监控至关重要。我想要更具体地回答您的问题,最好对您的体系结构有一点了解。您是如何进行服务发现、负载平衡等工作的。?您是在公共云中还是在自己的数据中心中部署这些?您是否将您的服务实例分布在多台物理机器和多个地理区域?我们并没有完全降低到微服务级别,介于微服务和单一服务之间。我们没有服务发现,我们有一个硬件负载平衡器,专用VM数据中心,我们分布在多台物理机器上,但在一个地理区域内。在开发微服务时,良好的监控是必不可少的。我想要更具体地回答您的问题,最好对您的体系结构有一点了解。您是如何进行服务发现、负载平衡等工作的。?您是在公共云中还是在自己的数据中心中部署这些?您是否将您的服务实例分布在多台物理机器和多个地理区域?我们并没有完全降低到微服务级别,介于微服务和单一服务之间。我们没有服务发现,我们有一个硬件负载平衡器,专用VM数据中心,我们分布在多台物理机器上,但在一个地理区域内。您能否提供一些工具的名称,帮助实现您描述的目标?您能否提供一些工具的名称,帮助实现您描述的目标?