architecture - 微服务中的监控:如何在微服务架构中检测内部/外部服务是否出现故障
问题描述
在微服务架构中,我想在服务出现故障时根据阈值检测并生成警报。我想为每个客户端微服务使用断路器以在电路切换时发送信息并创建与目标状态“关闭”相关的警报。但如果这是一个好的模式,我不会。此外,我有两个问题,第一个是监控微服务并聚合它们的数据以在达到阈值时生成警报,第二个是对网关使用的微服务使用的第三方服务(外部服务)做同样的事情. 根据您的说法,监控微服务的最佳方式是什么?谢谢
解决方案
当您需要允许失败的服务恢复时,应该使用断路器,而不是不断地用请求打击它,尽管它不能为它们服务。这是一篇不错的文章,您可以查看有关如何使用此模式的更多详细信息。
因此,如果您的服务可能会在短时间内恢复,您可以使用断路器。
否则,我认为这里就是这种情况(因为您希望在服务关闭时触发警报),我将更多地关注该微服务失败的原因,并且我会尽量减少发生的机会。
如果你使用 Kubernetes,你可以使用 Prometheus 监控微服务。这是一篇不错的文章,可以帮助您入门。Prometheus 抓取 Kubernetes API 并公开与 pod 相关的指标。您可以根据这些创建警报。
要监控外部服务,您也可以使用 Prometheus。如果外部服务能够通过 Prometheus 公开指标,那么您只需将其插入即可。否则,您必须编写一些代码来检查该服务的运行状况并基于此公开一个指标。
推荐阅读
- amazon-ec2 - 如何使用 gitlab yml 文件发布我的 .net 核心代码并在 AWS Windows 实例中部署
- python - 如何使用 Python 将边界框坐标转换为 Yolo 坐标?
- c# - 使用asp.net mvc将html foreach循环数据转换为webgrid
- python - 使用 Python 绘制交互式地图的问题
- r - 如何解决 R Shiny 中的这个错误?
- javascript - 忽略掉毛和格式化中的线条 - VSC EsLint + Prettier
- ios - iOS Swift 通过 UITableView 获取 CGPoint 并带有以下单元格内容
- flutter - 从实时数据库中获取更多数据
- javascript - 使用 node.js Lambda 函数查询 Amazon Redshift 返回 null
- python - 给定具有特定年份的开始日期和结束日期,填充仅包含日期和月份的数据框的日期列的最佳方法是什么?