微服务允许开发者将他们的应用程序分解成更小的、松散耦合的服务,这些服务独立开发、部署、扩展。但是,您需要一个监控工具来追踪软件是否工作正常——这意味着您需要有用的标准来选择此类工具。
您习惯于追踪应用程序性能以确认其是否正常运行,但微服务增加了一些新花样。监控是管理任何微服务架构的关键方面。根据定义,其中包括大量独立的部分。
但是您如何为自己的业务选择最佳微服务监控工具?我们不是来偏心的,也不是来支持特定的工具。然而,我们在该领域确实有大量经验,很乐意与您分享。
在选择工具之前,要思考您获得它的动机。您的团队应该讨论,“我们尝试解决或防止什么问题?”由此产生,“我们需要检查哪些数据,才能确定我们是否正在解决或防止这些问题?”答案有助于您识别要监控哪些内容——以及您可以忽略哪些内容(或不那么关注哪些内容)。
对您监控的内容要深思熟虑。要有理由。不要采用这样的态度:“万一对我有用,那就监控所有事情吧”。大多数团队的资源有限,这意味着无论如何都不可能监控所有事情;最好的情况是,您最终会感到警报疲劳。
也就是说:您的期望可能与现实不符。很难提前知道意外事件发生时什么会有用。在一切都陷入混乱且您试图弄清楚正在发生什么之前,不清楚需要监控什么。您需要“深思熟虑”和“根据经验调整”相结合。
任何类型的应用程序监控工具都具有一系列功能。您可能不需要所有这些功能。最好从我们的 Redis 专家和经验丰富的从业人员(有过经历的人)确定的首要标准开始。
它应该可以扩展。随着微服务架构的增长,您的监控需求也会增长。您最不想要的是一个无法承受负载的工具。确保您的监控系统可以自行关闭,而不会导致微服务崩溃!
它需要收集正确的数据并对其进行分析。仔细查看该工具收集的数据以及它如何呈现该信息。
一个稳健的监控工具会收集和分析分布式系统中每个角落缝隙的数据——但它不应该用嘈杂、不相关的信息淹没您。它应为您提供全面的见解,包括性能指标、日志和跟踪等值得称为“见解”的内容。
对于微服务架构,优先考虑分布式追踪。调试跨多个微服务的问题可能是一场噩梦。分布式追踪有助于您追踪跨服务的请求流,有助于识别性能瓶颈并了解复杂的交互。例如,确保每个日志消息/记录/行都有一个可归因的 traceid 连接到它,并使用一个允许您聚合视图的系统。
它应当与您使用的其他工具轻松集成,无需繁琐的设置或自定义代码。或许比任何其他应用程序更重要的,监控工具应当与其他工具很好地配合使用。
类似地,查看从现有供应商迁移到新监控工具的过程,包括数据结构要求。研究一下,如果此工具无效,切换到其他工具需要做什么。了解 API 是什么,因为您在某个时刻肯定会需要它。考虑未来的标准支持,例如 OpenTelemetry。
请让它易于学习和易于使用(它们不是同一件事)。谁愿意努力学习另一个工具?浏览分布式系统已经足够复杂;您的监控工具应当简化事情,而不是增加系统的复杂性。配置不应该很痛苦。密切注意其仪表盘和可视化,以决定它们是否像供应商承诺的那样直观。
它应当设置明智的警报和通知。当风暴来临时,您需要立即知道!您的监控工具应当提供强大的警报和通知功能,这样您才能在小问题变成大问题之前采取行动。
它必须符合您的预算。虽然您为分布式系统想要最好的工具,但您不想与 CFO 有不舒服的对话。对于任何 IT 支出都是如此,但在这里尤其如此,因为成本和定价模式差异很大。众所周知,意外的使用会造成所谓意外超支的事故。按用户付费模式有时会产生尴尬的决定,即谁可以获得访问权限。
微服务监控工具应当提供跨整个微服务生态系统的可见性,包括性能指标、资源利用、服务网格数据、自定义指标和错误率。
理想的工具应当在收集、存储和分析分布式系统的数据方面表现出色,为每个微服务的健康和性能提供可操作的见解。它应当与其他工具和系统(如日志系统、警报工具和事件管理平台)无缝集成。
实际上,如果您使用 Redis(用于微服务或其他用途),那么以下内容是一个良好的入门套件,可用于监控。您的仪表板可能包括这些项目,这些项目会进行配置,以便在任何指标出现大幅度峰值时向您发出警报。
您可以自由选择。每种微服务监控工具都提供独特的功能。也许这些链接可以帮助您提前了解您的购物清单——尽管这里包含的选项还有很多。
哪款工具最适合你?由你来决定。
与选择任何其他软件一样,最终重要的是它能适合你。'nbsp;
没有明确的对错之分。关键问题是,“这是适合我具体项目的吗?” 关键是找到符合你项目的当前和未来需求的工具,并做出明智的选择。理想情况下,你选择的工具可以帮助你维护一个健康高效的微服务环境,最终交付可靠的高性能应用程序。Redis 与所有这些工具均兼容。
我们相信,你可以利用 Redis Enterprise 将你的微服务应用程序提升到一个新的水平。阅读面向微服务的缓存和消息代理解决方案简介,了解如何使用 Redis Enterprise 进行缓存,探索顶级缓存模式,以及使用 Redis Streams 作为轻量级消息代理进行服务间通信。