【问题标题】:Monitoring in Microservices : How to detect if a internal/external service goes down in Microservices Architecture微服务中的监控:如何检测微服务架构中的内部/外部服务是否出现故障
【发布时间】:2021-01-03 02:36:38
【问题描述】:

在微服务架构中,我想在服务出现故障时检测并根据阈值生成警报。我想为每个客户端微服务使用断路器以在电路切换时发送信息并创建与目标状态“关闭”相关的警报。但如果这是一个好的模式,我不会。此外,我有两个问题,第一个是监控微服务并聚合它们的数据以在达到阈值时生成警报,第二个是对网关使用的微服务使用的第三方服务(外部服务)做同样的事情.根据您的说法,监控微服务的最佳方式是什么?谢谢

【问题讨论】:

    标签: architecture microservices spring-cloud istio spring-cloud-gateway


    【解决方案1】:

    当您需要让失败的服务恢复时,应该使用断路器,而不是不断地向它发出请求,尽管它无法为它们服务。 This 是一篇不错的文章,您可以查看有关如何使用此模式的更多详细信息。

    因此,如果您的服务很可能在短时间内恢复,您可以使用断路器。

    否则,我认为这里就是这种情况(因为您希望在服务关闭时触发警报),我会更多地关注微服务失败的原因,我会尽量减少发生的机会。

    如果您使用 Kubernetes,则可以使用 Prometheus 监控微服务。 Here 是一篇不错的文章,可以帮助您入门。 Prometheus 抓取 Kubernetes API 并公开与 pod 相关的指标。您可以根据这些创建警报。

    要监控外部服务,您也可以使用 Prometheus。如果外部服务能够通过 Prometheus 公开指标,那么您只需将其插入即可。否则,您必须编写一些代码来检查该服务的健康状况并根据该指标公开一个指标。

    【讨论】:

    • 谢谢。关于内部服务,我确实认为使用 Prometheus 是个好主意。因此,关于外部服务,因为它不在我的控制范围内,我想在网关中使用断路器来检测发送到外部网络的失败请求,就像在某些负载均衡器中那样,但有可能吗?这是一个好习惯吗?
    • 是的,对于外部服务,您可以使用断路器来确保它们能够及时恢复。我不确定负载平衡器是否能够做到这一点。我想说最好的做法是在应用程序本身内部使用断路器。这样您就可以对其进行监控并获得更多的灵活性
    猜你喜欢
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 2017-12-31
    • 2020-11-14
    • 2021-08-02
    • 2021-11-02
    • 2020-08-17
    相关资源
    最近更新 更多