dot Redis 8 已发布,且它是开源的

了解更多

如何选择微服务监控工具

微服务允许开发人员将应用程序分解为更小、松耦合的服务,这些服务可以独立开发、部署和扩展。但你需要一个监控工具来跟踪软件是否正常工作——这意味着你需要一套有用的标准来选择这样的工具。

你可能习惯于跟踪应用程序性能以确认其是否正常运行,但微服务增加了一个新的复杂性。监控是管理任何微服务架构的关键方面。顾名思义,它包含许多独立的部件。 

但是,如何为您的业务选择最佳的微服务监控工具呢?我们不在此偏袒任何工具,也不对特定工具进行背书。然而,我们在这个领域拥有丰富的经验,乐于与您分享。

明确你的期望

在选择工具之前,先思考你获取它的动机。你的团队应该讨论:“我们试图解决或预防什么问题?”这引出了:“我们需要检查哪些数据来确定我们是否正在解决或预防这些问题?”这些问题的答案有助于你确定需要监控什么——以及可以忽略(或少关注)什么。 

有意识地选择你监控的内容,要有理由。不要采取“以防万一有用,所以监控所有东西”的态度。大多数团队资源有限,这意味着无论如何都不可能监控所有东西;最好的结果是最终导致警报疲劳

话虽如此:你的期望可能与现实不符。当意料之外的事情发生时,很难提前知道什么会有用。直到一切都乱套了,你试图弄清楚发生了什么,才会明白需要监控什么。你需要“仔细思考”和“根据经验调整”相结合的方式。

微服务监控工具标准

任何类型的应用程序监控工具都有一系列功能,你可能不需要所有这些功能。最好从 Redis 专家和经验丰富的从业者(那些身经百战的人)提出的首要标准入手。

它应该能够扩展(Scale)。随着你的微服务架构的增长,你的监控需求也会增长。你最不想看到的就是一个无法跟上负载的工具。确保你的监控系统即使发生故障,也不会拖垮你的微服务!

它需要收集正确的数据并进行分析。仔细查看工具收集的数据以及如何呈现这些信息。 

一个强大的监控工具能够从分布式系统的每个角落收集和分析数据——但它不应该用嘈杂、无关紧要的信息淹没你。它应该为你提供配得上“洞察”之名的全面洞察,包括性能指标、日志和跟踪。 

对于微服务架构,优先考虑分布式追踪。调试跨多个微服务的问题可能是一场噩梦。分布式追踪帮助你跟踪请求在服务间的流向,这有助于识别性能瓶颈并理解复杂的交互。例如,确保每条日志消息/记录/行都附加了可追溯的 traceid,并使用一个允许你聚合视图的系统。

它应该与你使用的其他工具集成,无需繁琐的设置或自定义代码。或许比任何其他应用程序都更重要的是,监控工具应该能与其他工具很好地协同工作。 

同样,考察从现有提供商迁移到新的监控工具的过程,包括数据结构化的要求。研究如果当前工具不合适,切换到另一个工具需要做些什么。 了解它的 API 是怎样的,因为你肯定会在某个时候需要它。考虑未来标准的支持,例如 OpenTelemetry。 

拜托,它应该易于学习且易于使用(这两者并不相同)。谁想费力学习另一个工具呢?在分布式系统中导航已经够复杂的了;你的监控工具应该简化事情,而不是增加系统的复杂性。配置不应该让人头痛。仔细查看它的仪表盘和可视化效果,判断它们是否像供应商承诺的那样直观。

它应该设置合理的警报和通知。当风暴即将来临时,你需要立即知道!你的监控工具应该提供强大的警报和通知功能,以便你在小问题演变成大问题之前采取行动。

它必须符合你的预算。虽然你想要最适合你的分布式系统的工具,但你不想和首席财务官进行令人不舒服的谈话。任何 IT 开支都是如此,但在这里尤为重要,因为成本和定价模式差异很大。意外的使用量有时会导致所谓的“意外超支”事件。按用户付费模式有时会引发关于谁能获得访问权限的尴尬决定。 

这些工具实际上监控什么?

微服务监控工具应能提供整个微服务生态系统的可见性,包括性能指标、资源利用率、服务网格数据、自定义指标和错误率。

理想的工具应擅长收集、存储和分析来自分布式系统的数据,为每个微服务的健康状况和性能提供可操作的洞察。它应能与日志系统、警报工具和事件管理平台等其他工具和系统无缝集成。

  • 性能指标:监控工具收集和监控来自各种组件的性能指标,例如 CPU 使用率、内存利用率、网络流量以及单个微服务的响应时间。这有助于跟踪整体健康状况和系统性能。
  • 资源利用率:监控工具密切关注微服务和基础设施组件的资源消耗。这包括监控 CPU、内存、磁盘使用情况和网络带宽,以确保资源分配效率。
  • 错误率和故障分析:工具跟踪来自微服务的错误率、状态码和错误消息。这使得快速检测异常和潜在问题成为可能,帮助开发人员及时定位故障并进行故障排除。
  • 延迟和吞吐量:监控工具衡量微服务处理微服务请求所需的时间以及处理这些请求的速率。 
  • 警报和阈值:如果任何指标超过指定的阈值,系统会触发警报,以便 IT 团队可以立即采取行动。
  • 日志和跟踪:一些监控工具与日志系统集成,捕获和分析来自多个服务的日志。跟踪功能允许开发人员跟踪请求在不同微服务中的流向。
  • API 监控:这些工具可以监控不同微服务和 API 之间的交互,确保 API 调用成功(并在失败时通知你),并识别 API 通信中的潜在瓶颈。
  • 容器监控:监控工具可以捕获容器健康状况中的独特环境问题,例如资源利用率和性能。
  • 服务网格可观察性:对于使用服务网格的微服务架构,监控工具可以提供对网格内微服务之间通信和交互的洞察。
  • 应用程序性能监控(APM):APM 工具关注单个微服务的代码级性能,使开发人员更容易识别性能瓶颈。
  • 自定义指标:高级监控工具认识到,有时所有这些类别还不够。它们允许你定义和收集特定于你的微服务架构的自定义指标。

实际上,如果你使用 Redis——无论是用于微服务还是其他用途——这都是一套很好的入门监控项。你的仪表盘可以包含这些项目,并配置为在任何指标显著飙升时向你发出警报。

  • 命令量,按命令、服务和/或脚本/函数分类
  • 命令失败率,按命令、服务和/或脚本/函数分类
  • 命令延迟,按命令、服务和/或脚本/函数分类
  • 内存使用量
  • 键数量 (DBSIZE) 

微服务监控工具

你有很多选择。这些微服务监控工具都提供了独特的功能。也许这些链接可以帮助你开始制定你的选择清单——尽管选项比我们列出的要多得多。

  • Prometheus:这个开源监控和警报工具包专为分布式系统设计,因此适用于微服务监控。
  • Grafana:Grafana 以其可视化和仪表盘功能而闻名,有助于浏览数据集合,并将其以人类可理解的形式呈现出来。
  • Datadog:Datadog 提供实时警报、分布式跟踪和 APM 功能,承诺对微服务生态系统提供全面的可见性。
  • Dynatrace:这款监控工具为微服务环境提供自动应用程序发现和可观察性。
  • Architect.io:这款工具是大型组织中进行强大测试和监控的首选,提供微服务架构的全面视图。
  • Lumigo:Lumigo 提供端到端可见性、实时调试和成本监控,并特别关注无服务器架构。
  • AppDynamics:凭借其实时可见性、异常检测、网络性能监控以及 Docker 和 Kubernetes 监控功能,它可能适用于跟踪大型复杂架构中的事件。
  • Instana:这款工具承诺为整个微服务环境提供完整的可观察性。
  • Uptrace:Uptrace 专注于性能数据的可见性以及与流行编程语言和框架的集成,帮助开发人员在微服务生态系统中识别、诊断和解决性能问题;我们最近写了一篇关于我们使用 Uptrace 的经验的文章

哪个适合你?这由你决定。

增强微服务监控

 与任何其他软件选择一样,最终唯一重要的是它是否适合你。 

没有绝对正确或错误的选项。关键问题是:“这是适合我的特定项目的工具吗?”关键因素是找到一个与你项目当前和未来需求一致的工具,并做出明智的选择。理想情况下,你选择的工具应能帮助你维护一个健康高效的微服务环境,最终交付可靠、高性能的应用程序。Redis 与所有这些工具都能协同工作。

而且,我们相信,通过 Redis Enterprise,你可以将你的微服务应用程序提升到新的水平。阅读《面向微服务的缓存和消息代理》解决方案简介,了解如何使用 Redis Enterprise 进行缓存,探索主要的缓存模式,以及如何使用 Redis Streams 作为轻量级消息代理进行服务间通信。