【摘要】 在不断探索和创新中,Serverless 和可观测性技术的结合将进一步提升云计算中的监控能力,为企业构建更强大、高效的 Serverless 应用提供了保障,为云计算技术带来更多可能性。
- 背景
随着云计算技术的不断进步和应用需求的多样化,Serverless 架构以其按需分配资源、无服务器管理、高伸缩性等特点,在应对突发流量和节省成本方面具有独特优势,在近年来迅速崛起。然而,尽管 Serverless 架构带来了诸多优势,但在实际应用中仍然存在着一些具有挑战性的问题,可观测性(Observability)就是其中的一个重要方面。可观测性是指在系统运行过程中能够清晰地了解系统的状态和性能指标,包括日志、指标、追踪和警报等,以便快速检测问题、调试故障和优化性能。在 Serverless 架构下,由于函数的动态性、异步性和分布式特点,使得可观测性变得更加复杂和困难。
- 技术难点
- 在实际应用中,Serverless可观测性的问题主要集中在以下几个方面:
1.日志管理的困难: 当涉及到Serverless架构时,日志管理可能会面临一些困难。这包括实例日志文件的分布性和日志采集的异步性,由于Serverless应用由多个函数和服务组成,导致日志分散且追踪请求路径复杂;另外,函数实例的短暂生命周期和动态扩展意味着及时地捕获和保存日志信息更为困难。
2.异步执行带来的监控困难: 在 Serverless 架构中,函数通过事件触发器进行异步调用,导致函数执行的顺序不确定。当函数之间存在依赖关系或顺序要求时,确保调用顺序的正确性和异步执行时序的监控变得复杂且困难。这种异步执行模式给函数调用的监控带来不确定性和挑战。
3.故障排查和调优的困难: 在 Serverless 应用中,由于函数的短暂性和动态性,故障排查和性能调优相较传统架构更加困难。当函数调用出现异常或性能下降时,如何快速定位问题的根源、进行故障排查和性能优化成为开发团队面临的重要挑战。
- 解决方案
华为云函数工作流FunctionGraph与华为云其他云服务紧密集成,为用户提供一体化的解决方案,旨在应对 Serverless 应用中的可观测性挑战。通过与华为云平台上的监控、日志、跟踪和分析等服务深度集成,用户能够轻松实现对函数执行时间、分布式跟踪、日志管理和成本的监测与优化。
1.联手华为云LTS打造一站式日志采集、存储能力:华为云函数工作流FunctionGraph支持函数一键式接入LTS。LTS能够满足Serverless应用的日志收集、存储、搜索和分析需求,能够轻松处理大规模日志,并提供实时日志告警机制。其广泛的日志加工和统计功能,有助于用户快速、有效地优化日志数据。利用LTS,Serverless应用能够更轻松地进行日志管理和监控,提升了日志运维效率和整体应用的稳定性。
2.基于华为云AOM构建丰富的指标和监控系统:华为云函数工作流FunctionGraph向AOM上报了20+丰富的指标,这些指标涵盖了调用结果、调用次数、调用时长等调用类指标以及实例数、异步堆积和内存占用等实例类指标,为用户提供全面、深入的函数运行状态感知。这一系列详尽的指标数据赋予用户全面了解其应用性能和运行状况的能力,可帮助用户进行精准的调优和优化,从而提升其在华为云平台上的运行效率和稳定性。通过提供实时、准确的数据支持,这一细致的监控系统有助于用户更好地了解和优化其应用的运行情况,提升整体的管理水平和运行效率。
3.通过华为云APM实现调用链路追踪:通过整合华为云APM的监控技术和OpenTelemetry的分布式跟踪功能,我们能够深入监控单个函数内部的调用链,追踪函数执行过程中的各个调用阶段和依赖关系,帮助我们精确捕获函数调用链上的关键信息,包括调用耗时、调用参数、调用成功与否等,为系统正常运行和故障诊断提供了重要数据支持。同时,当 Serverless 函数调用出现异常时,华为云APM的分析能力能够对某个请求进行数据汇聚,实现请求级别的数据聚合与分析,开发者可以直观地了解该请求在一段时间内的耗时变化、请求结果等信息,快速找出异常请求。通过对异常请求的深入分析,包括异常调用信息、异常触发时间点等,开发者可以精准定位问题根源,快速进行故障排查和修复操作。
华为云函数工作流FunctionGraph可观测体系
- 最佳实践
1.函数调用结果异常快速感知:函数调用结果异常快速感知对于系统的稳定性与可靠性至关重要。FunctionGraph基于指标和错误码日志,构建了对异常函数的监控和汇聚能力。基于监控数据的实时分析,能够快速推断异常的原因和可能的影响范围,按故障场景针对性的采取自动隔离、人工介入等处理措施,确保系统持续稳定运行,有助于最大限度地降低异常对业务的影响,为系统的稳定性和可靠性提供保障。
现网S局点某日突然出现告警,某个函数执行成功率小幅下降,我方运维人员基于函数调用看板,根据异常请求的的集群分布图、节点分布图和POD分布图,在秒级内锁定异常的函数调用集中在某个POD上,迅速将该POD置为不可调度,这一操作有效地恢复了函数成功率。后来通过定位,证实是当时该POD出现异常,影响业务运行。
华为云函数工作流FunctionGraph函数调用看板
2.函数调用时延追踪:在Serverless平台上,时延类问题一直是一个较为棘手的挑战。针对此问题,FunctionGraph针对函数调用时延展开了细致的追踪和分析,以解决这一痛点难题。首先,通过构建详尽的指标趋势图,华为云函数工作流FunctionGraph使用户能够全面了解函数调用时延的历史变化趋势和关键数据指标,为时延分析提供了丰富的数据支持。此外,FunctionGraph还结合了华为云的应用性能管理(APM)能力,在单次函数请求中无侵式开启调用链,完成对函数请求链路的全面追踪。通过对函数请求的细粒度监控和分析,用户可以深入了解函数调用过程中各环节的时延情况和性能指标,洞悉函数调用的具体执行路径,有助于客户更好地解决时延类问题,减少不必要的性能瓶颈和延迟问题的影响。
某车联网客户使用华为云函数工作流FunctionGraph对数据进行转储操作,某日发现函数的执行时间明显延长,超出了平时的预期。运维人员通过函数时延看板,排除FunctionGraph自身系统异常后,基于用户函数调用链分析,发现用户函数在访问OBS(对象存储服务)下载接口时,时延出现异常,后协调OBS负责人处理后,用户函数执行时间恢复正常。
华为云函数工作流FunctionGraph函数时延看板
函数调用链监控
3.函数资源监控:资源和成本也一直是用户非常关心的因素。FunctionGraph为用户提供了详细的资源监控看板,通过精确的监控数据,用户能够深入了解其云函数的性能状况,及时发现潜在瓶颈和性能问题,从而有针对性地对函数配置进行优化和调整,以提高应用性能并最大程度降低成本消耗。
某在线教育客户想要通过FunctionGraph节省成本,前期统一按照4096M内存,50个预留实例进行配置,降本效果并不明显。后通过函数资源看板,不断根据调用量、积压量、实例数量、内存使用量等指标,优化当前函数规格和预留实例数,最终实现每月节省30%的降本目标。
华为云函数工作流FunctionGraph函数资源看板
- 总结与展望
- Serverless 和监控技术的结合仍在不断发展与完善之中。未来,我们可以期待以下方面的进展:
1.智能异常检测和自愈:随着人工智能和机器学习的发展,预测性异常检测将得到加强,系统可以在异常发生前实时预警并自动触发自愈机制。同时,基于强大的调用链分析能力,系统将能够实时追踪事件流,并根据历史数据和模型进行智能决策,提升系统自愈的响应速度和准确性,助力构建更加弹性和可靠的智能化服务架构。
2.更高效、实时和精准的监控能力:随着云原生概念在开发者和企业中的逐渐流行,对于可观测性的追求也变得日益重要。传统的监控方式涉及侵入性修改和主动上报,不仅消耗业务资源,而且难以达到实时监控的要求。然而,随着新技术如eBPF等的崛起,监控领域也将迎来革命性进步。未来监控能力将朝着更高效、实时和精准的方向演进,为云原生应用提供更精准的数据和更快速的响应能力,助力企业实现更高水平的性能优化和故障排除。这一趋势将推动监控技术迈向全新的发展阶段,为行业带来更为智能和高效的监控解决方案。
在不断探索和创新中,Serverless 和可观测性技术的结合将进一步提升云计算中的监控能力,为企业构建更强大、高效的 Serverless 应用提供了保障,为云计算技术带来更多可能性。