关于如何监控(微服务?
Advice on how to monitor (micro)services?
我们正在从在单体应用服务器上构建应用程序过渡到在 Spring Boot 上构建更多面向微服务的应用程序。我们将通过 HTTP 或 JMX 发布与 SB Actuator 的健康信息。
监控服务的 options/best 做法是什么,总共大约 30-50 个?感谢您的输入!
不太了解您的体系结构和服务的详细信息,这里有一些建议代表了我在生产中使用的系统中已经证明的(部分)策略。为此,我假设您每个微服务使用一个 container/VM:
- 如果您的服务是无状态的(它们应该是 :-) 并且您有冗余(您应该有 :-) 那么您设置负载均衡器以在每个实例上调用您的 /health 并且如果运行状况检查失败,那么负载均衡器应该停止轮换实例。根据您的系统的容忍度,您可以设置各种规则来定义故障,而不仅仅是单个故障(例如连续 3 次等)
- 在每个实例上 运行 调用本地主机上的健康检查 (/health) 的 Nagios 代理。如果失败,则生成一个警报,指定哪个实例失败。
- 如果您的 none 个实例对于给定服务而言是健康的,您还希望确保生成更高级别的警报。您可以在您的负载均衡器中设置它,或者您可以在负载均衡器外部设置一个监视进程,该进程会定期调用您的服务,如果它没有得到任何响应(即 none 个实例正在响应)然后它应该发出所有警报。希望这种情况永远不会在生产中触发,因为您处理了其他警报。
- 高级:在云环境中,您可以连接具有自动缩放功能的警报。这样,每当监控系统认为服务实例不健康时,不健康的实例就会被拆除并自动启动健康的实例
我们正在从在单体应用服务器上构建应用程序过渡到在 Spring Boot 上构建更多面向微服务的应用程序。我们将通过 HTTP 或 JMX 发布与 SB Actuator 的健康信息。
监控服务的 options/best 做法是什么,总共大约 30-50 个?感谢您的输入!
不太了解您的体系结构和服务的详细信息,这里有一些建议代表了我在生产中使用的系统中已经证明的(部分)策略。为此,我假设您每个微服务使用一个 container/VM:
- 如果您的服务是无状态的(它们应该是 :-) 并且您有冗余(您应该有 :-) 那么您设置负载均衡器以在每个实例上调用您的 /health 并且如果运行状况检查失败,那么负载均衡器应该停止轮换实例。根据您的系统的容忍度,您可以设置各种规则来定义故障,而不仅仅是单个故障(例如连续 3 次等)
- 在每个实例上 运行 调用本地主机上的健康检查 (/health) 的 Nagios 代理。如果失败,则生成一个警报,指定哪个实例失败。
- 如果您的 none 个实例对于给定服务而言是健康的,您还希望确保生成更高级别的警报。您可以在您的负载均衡器中设置它,或者您可以在负载均衡器外部设置一个监视进程,该进程会定期调用您的服务,如果它没有得到任何响应(即 none 个实例正在响应)然后它应该发出所有警报。希望这种情况永远不会在生产中触发,因为您处理了其他警报。
- 高级:在云环境中,您可以连接具有自动缩放功能的警报。这样,每当监控系统认为服务实例不健康时,不健康的实例就会被拆除并自动启动健康的实例