什么是无服务器监测?
无服务器监测的定义
无服务器监测是一项允许企业监测、开发和优化其无服务器应用程序的服务。无服务器监测的事件驱动型架构 (EDA) 要求拥有专门针对此环境设计的监测。无服务器监测使用已知指标来为团队指明问题。
无服务器监测是整体可观测性的一个重要组成部分。无服务器可观测性提供有关系统输出的更优可见性,这样所涉团队就能更加高效地解决和修复潜在问题。
企业可以利用无服务器监测评估其系统的运行状况,配置告警以在问题一出现时就加以解决,进而优化性能。无服务器监测同时也是一项重要的成本管理工具,可帮助实现性能优化。
什么是无服务器?
无服务器计算是一个云计算模型,可允许开发人员构建和运行应用程序,而无需管理服务器或后端基础架构。云服务提供商为开发人员运行和管理服务器基础架构,并可按需大规模地提供服务器。计算模型采用基于使用量的定价,从成本角度来说,对企业非常有利。无服务器的按需付费结构使得企业能够以更低的基础架构成本部署应用程序和进行扩展。
所有领先的云服务提供商都以功能即服务 (FaaS) 的形式提供无服务器计算。
- AWS Lambda 是 AWS 的无服务器功能。它允许开发人员无需考虑服务器或集群即可运行代码。
- Google Cloud Functions 会管理您的云服务器,支持您开发和部署可扩展应用程序和功能。
- Azure 的无服务器 FaaS 可支持您构建、部署和运维应用程序,而无需管理基础架构。
同时还有一个无服务器框架,企业可以在其自有基础架构上借助 OpenLambda 和 OpenFaas 等使用此框架。
但是,在观测无服务器服务中的系统和应用程序操作时,存在挑战。无服务器监测弥补了可见性差距,因为它支持您监测所运行的功能、这些功能所在的容器、应用程序以及整体的无服务器环境。
无服务器监测的运行原理是什么?
无服务器监测解决方案会从您的整个无服务器基础架构采集数据,汇总资源使用情况统计数据,并提供日志和指标。无服务器监测还能允许您查看无服务器功能活动,监测资源使用情况,并设置自动告警以获得行之有效的见解。
借助无服务器监测仪表板,您可以通过监测功能运行状况和内存使用情况消除盲点,并找出哪里是应用程序瓶颈。
为什么无服务器监测很重要?
无服务器监测允许开发人员解决在无服务器计算中对系统运行状况和用户体验都十分关键的性能问题。
有了无服务器,云服务提供商承担起了管理服务器的责任,所以您的开发人员只需专注于运行代码。尽管这带来了很多优势,但也意味着企业对其环境的控制力和可见性变低了。结果就是,识别故障或问题会很困难。
无服务器监测为这些挑战提供了一套解决方案,方法就是允许团队有效地识别和管理在复杂的数字生态系统中频繁出现的问题。
无服务器监测同时也是一个至为关键的工具,可允许 ITDM 和 BDM 监测无服务器支出。由于能够理解在特定时间点使用了多少资源,这使得企业能够按需缩放规模并控制支出。
无服务器监测的优点有哪些?
无服务器监测能够提升效率并让您获得有关无服务器环境的可见性。您可以主动缓解和解决性能问题并精简各项运维工作。
- 改善延迟
功能执行速度缓慢(又称作延迟)会对用户体验产生负面影响。大型数据集会影响您精准确定延迟问题的能力。离群数据可以为您提供有关延迟的线索,但您通过从大型数据集拉取中获得的平均指标通常很难找到它们。监测工具为您提供了可定制仪表板来解决这些挑战。 - 预防冷启动
无服务器计算的事件驱动型架构意味着它仅会在事件需要某功能的时候才会使用功能对应的容器。无服务器计算应用程序可以让最近使用的功能在一段时间内保持“温热”,但是如果此功能在这段时间内没有被调用,它还是会变“冷”。如果某功能在变冷了一段时间之后被重新调用,就会发生冷启动。这可能会导致延迟并要求使用更多的计算能力。无服务器监测工具可以确定何时使用了哪个功能,以便您优化性能。 - 识别调用错误
调用错误是对链条中任何损坏链接的回应。如果调用请求在您的功能收到此请求之前被拒绝,就会出现这种错误。
借助监测解决方案,获得有关无服务器环境的可见性,进而识别并解决调用错误。
- 监测使用情况
内存使用情况是无服务器计算服务的一个可配置组件。您可以设置为每个功能分配多少专用内存空间,具体因供应商而已。这一决定会影响您需要多少处理能力来在调用功能时运行功能。 - 预测成本
无服务器服务提供商仅会针对所使用的功能和计算资源向您收费。通常来说,这相对于其他架构而言是一种节省成本的方案,因为您只需为使用的部分付款。但是如果您扩展运维规模,成本上升的可预测性会下降。例如,错误配置的功能可能会消耗不必要的计算资源。借助总体拥有成本 (TCO) 无服务器模型,您可以更好地预测成本,因为该模型已将基础架构、开发和维护成本都考虑在内。 - 更好的可扩展性
通过无服务器监测解决方案,您可以监测功能和使用情况,并更好地预测成本,所以您可以更好地进行扩展。通过监测使用情况和预测成本,企业能够在不超出预算的前提下更有效地进行扩展。
无服务器监测的最佳实践有哪些?
粒度信息:良好的无服务器监测工具应该能够为您提供具体数据,包括请求日志和分布式跟踪。您要寻找的解决方案既要为您提供全景,还要能够让您精准定位到存在问题的点。
数据可用性:监测数据应该即时可用。您要寻找的解决方案不仅要适合您的规模需求,而且还能在您扩张业务的同时进行扩展。
日志收集:日志收集不应该导致延迟,也不应该干扰应用程序性能。您要寻找的解决方案应该与您的系统兼容,不需要任何附加产品或插件。
告警:您寻找的无服务器监测工具要能够允许您配置与您的既有检测和告警机制相匹配的告警。跨系统的统一策略有助于节省时间和相关成本。
无服务监测面临什么挑战?
无服务器监测面临的第一个挑战是透明度。在无服务器计算模型中,服务器由诸如 AWS 等云服务提供商进行管理。尽管无服务器意味着您无需操心服务器可用性,可以专注于开发和发布代码,但您对服务器的可见性也变低了。这就要求专门针对无服务器环境的监测服务,以便您获得整体可观测性。
无服务监测面临的其他挑战包括:
- 无服务器性质:无服务器模型仅会在调用功能时才会使用功能对应的容器。只有当系统调用功能时,服务器才是可用的。
- 瞬时功能:无服务器架构很难监测,因为它的构建基础是会触发功能的事件。取决于云服务提供商的运行时限制,监测会变得更加复杂。
- 分布式架构:无服务器应用程序本质上是分布式的,而且其组件会分布在多项服务中,既包括有服务器架构,也包括无服务器架构。这让您很难获得有关应用程序运行状况和性能的全景。
- 快速扩展:无服务器架构可以根据需要快速缩放规模,这使得您很难预测和管理监测这些无服务器应用程序所需的资源。
- 成本优化:监测无服务器应用程序可能会成本高昂,尤其是您使用基于使用量的第三方监测工具时。
为了应对这些挑战,企业应该拥有一套全面的可观测性解决方案来同时处理有服务器和无服务器监测。全面的可观测性解决方案有助于弥合监测类型之间的差距,以便您体验无服务器架构的所有优点。
无服务器监测工具
无服务器监测对于在无服务器环境中进行运维是不可或缺的。在最理想情况下,它们应该能够打造无缝体验,提升您的整体运维效率。但是,并非所有工具都是一样的。
无服务器功能提供商,例如 AWS,会提供原生监测工具。AWS Cloud Watch 和 AWS X-Ray 是能履行不同功能的无服务器监测解决方案。将二者结合在一起,您能够获得更佳的无服务器可见性,前提是您只使用 AWS。如果您的运维工作依赖多家云服务提供商,您则需要能够将这些提供商集成在一起的无服务器监测工具。
选择适用于贵公司的正确无服务器监测工具时,需要考虑下面几点:
- 统一的可见性:能够使用单一工具获得全栈视图,这可以改善您的故障排查工作流。考虑通过一个界面实现这些功能,而不是使用多个 UI 和工具;因为如果使用多个,这会让您的故障排查流程变得更复杂。
- 实时跟踪:实时告警和指标数据能够允许您获得完整可见性。立即告知您的团队任何潜在问题。
- 语言支持:确保您的无服务器监测工具支持您的所有编程语言。
- 设置简单:无服务器监测应该让您的系统变得更简单,而不是更复杂。寻找易于使用和部署的解决方案。
- 集成:您的无服务器监测工具还应该兼容其他云集成,例如 AWS、Azure 和 Google Cloud。选择的工具要能够无缝支持整体运维环境。
无服务器采集
无服务器采集是通过无代理方式从 AWS 内的多个来源提取大型数据集的方式。借助 Elastic 无服务器转发器(一款由 Elasticsearch 提供支持的、用于采集数据的内置工具),您可以无比轻松地提取、转换和扩充数据,并将数据发送到无服务器监测工具或可观测性工具。
借助 Elastic 进行无服务器监测
Elastic 可观测性基于 Elasticsearch 构建而成,能提供全堆栈体验,让您监测和观测无服务器架构之外的环境,既包括在地部署也包括云端。识别 AWS Lambda 延迟问题、冷启动和其他调用问题。日志会和您的其他遥测数据一起予以收集,所以您在一处就可以结合上下文查看全部数据。