随着各个企业在数字化转型的浪潮中不断翻涌前进,IT业务复杂程度与规模体积爆发式增长,可观测性工具成为发展刚需。在Gatner发布的2023年需要探索的十大战略技术趋势中,“可观测性”被列为其中之一。
那么,为什么可观测性如此重要?有哪些值得关注的演进趋势?如何设计落地方案?本文将围绕可观测性为大家一一解答。
Q1、什么是可观测性?
在IT和云计算中,可观测性是基于系统生成的数据(如指标、调用链、日志)来测量系统内部状态的能力。
可观测性依赖于源自多云计算环境中端点和服务的仪器的遥测。在这些现代环境中,每个硬件、软件和云基础设施组件以及每个容器、开源工具和微服务都会生成每个活动的记录。可观测性的目标是了解所有这些环境和技术之间发生了什么,从而检测并解决问题,以保持系统高效可靠的运行。
可观测性解决方案可以帮助企业检测和分析事件对其运营、软件开发生命周期、应用程序安全和最终用户体验的重要性。
近年来,随着云本地环境变得更加复杂,故障或异常的潜在根本原因变得更加难以查明,收集和处理可观测性数据对业务的好处更加显而易见。
由于云服务依赖于一个独特的分布式动态体系结构,可观测性有时也可能指企业用来解释云性能数据的特定软件工具和实践。
Q2、可观测性的三要素是什么?
可观测性三要素即:Metrics、Trace、Log (指标、调用链、日志)。这三种要素在监控体系中单独去看也是有自身价值的。但如果只通过一种数据的模型,那就很难构建出寻找问题核心的能力。所以说,需要把这三种类型的数据有机的贯穿在一起,形成一个立体化的架构,使它们互相去发挥各自的专长,做到能够使用遥测数据来实现改善最终用户体验和业务成果的最终目标。
Q3:为什么可观测性很重要?
在企业环境中,可观测性有助于跨职能团队理解并回答有关高度分布式系统中发生的事情,能够了解什么是慢的或坏的,以及需要做什么来提高性能。有了可观测性解决方案,企业可以收到有关问题的警报,并在问题影响用户之前主动解决问题。
由于现代云环境是动态的,规模和复杂性不断变化,大多数问题既不已知也不受监控。可观测性解决了“未知的未知”这一常见问题,帮助企业在出现新问题时能够持续自动地理解它们。
可观测性也是AIOps的一项关键能力。随着越来越多的组织采用云本机架构,他们也在寻找实现AIOps的方法,利用AI在整个DevSecOps生命周期中自动化更多流程。通过将人工智能应用于一切——从收集遥测数据到分析整个技术堆栈中发生的事情——企业获得可靠的答案,这对于自动化应用程序监控、测试、连续交付、应用程序安全和事件响应至关重要。
可观测性的价值并不局限于IT案例。一旦开始收集和分析可观测性数据,企业就有了一个了解数字服务业务影响的宝贵窗口。这种可视性能够优化转换,验证软件版本是否满足业务目标,衡量用户体验SLO的结果,并根据最重要的内容确定业务决策的优先级。
当可观测性解决方案还使用合成和真实用户监控分析用户体验数据时,企业可以在用户之前发现问题,并基于真实、即时的反馈设计更好的用户体验。
Q4:可观测性的优势体现在哪些方面?
可观测性为IT团队、企业和最终用户带来了巨大的好处。举例来说:
1.应用程序性能监控:完全的端到端可观测性使企业能够更快地了解应用程序性能问题的根源,包括云本机和微服务环境中出现的问题。先进的可观测性解决方案还可用于更多自动化流程,提高运营和应用团队的效率和创新。
2.DevSecOps和SRE:可观测性是应用程序及其支持基础设施的一个基本属性。创建软件的架构师和开发人员必须将其设计为可观测的。同时DevSecOps和SRE团队可以在软件交付生命周期中利用和解释可观测到的数据,以构建更好、更安全、 更具弹性的应用程序。
3.基础设施、云和Kubernetes监控:基础设施和运营(I&O)团队可以利用可观测性解决方案提供的增强环境来提高应用程序的正常运行时间和性能,减少查明和解决问题所需的时间,检测云延迟问题,优化云资源利用率,并改善对Kubernetes环境和现代云架构的管理。
4.最终用户体验:良好的用户体验可以提高企业声誉,在竞争中取得优势。通过在最终用户注意到问题之前发现并解决问题,并在用户提出要求之前进行改进,企业可以提高用户满意度和保留率。还可以通过实时播放来优化用户体验,直接获得一个窗口,让最终用户的体验与他们看到的相同,从而很快在改进方面达成一致。
5.业务分析:企业可以将业务上下文与全堆栈应用程序分析和性能结合起来,以了解实时业务影响,改进转换优化,确保软件发布满足预期业务目标,并确认企业遵守内部和外部SLA。DevSecOps团队可以利用可观测性来获得对他们开发的应用程序的更多见解,并自动化测试和CI/CD过程,以便更快地发布质量更好的代码。
从生产力的角度来看,可观测性提高了企业的效率,加强了对有效合作至关重要的积极工作关系,进一步为企业创新和数字化转型打开了大门。更重要的是,最终用户将以高质量的用户体验的形式受益。
Q5:可观测性和监控之间有什么区别?
虽然可观测性和监控是相关的,并且可以相互补充,但它们实际上是不同的概念。
在监控场景中,通常会预先配置仪表盘,以提醒以后可能会看到的性能问题。然而,这些仪表盘依赖于一个关键假设,即能够在问题发生之前预测将遇到什么类型的问题。
云原生环境不适合这种类型的监控,因为它们是动态的、复杂的,这意味着无法提前知道可能会出现什么样的问题。
在可观测性场景中,环境已被完全检测以提供完整的可观测性数据,可以灵活地探索正在发生的事情,并快速找出可能无法预料的问题的根本原因。
Q6:可观测性所涉及到的环节有哪些?
可观测性涉及到的环节较多:
1.可观测性需要数据作为支撑,并且对于数据的质量有一定要求。数据需要经过标准化的处理过程,才能真正作为基座来使用。
2.可观测性需要海量的数据,并且涉及到不同的类型。要追求每一笔交易、每一个动作都能有完整的链条,所要面对的数据规模是十分庞大的。同时,可观测性技术本身就是一个大数据汇总的平台,因此需要高技术引擎和关系图谱引擎的支撑,来将数据有机的结合到一起。
3.若要真正发挥可观测性带来的价值,不能仅仅只把数据做一个简单的罗列,我们需要剖析数据,做关联分析。而这一过程需要 AI 的加持,这样才能让效率真正提升上来,这其中涉及到一整套的系统工程。
做好以上这些,才能体会到数据作为大脑引擎的驱动力,让企业的运维管理更智能、更便捷、更高效。
Q7:如何使系统具备可观测性?
前面我们提到了可观测性三要素:指标、调用链、日志。然而,仅从后端应用程序观测原始遥测数据并不能全面了解系统的运行情况。
忽略前端透视图可能会扭曲甚至歪曲应用程序和基础设施在现实世界中对真实用户的表现。为了扩展“三要素”方法,IT团队必须利用用户体验数据增强遥测收集,以消除盲点:
1.日志:这些是特定时间发生的离散事件的结构化或非结构化文本记录。
2.指标:这些值表示为计数或度量,通常在一段时间内计算或汇总。指标可以来自各种来源,包括基础设施、主机、服务、云平台和外部来源。
3.调用链:当事务或请求流经应用程序时,它显示事务或请求的活动,并显示服务如何连接,包括代码级别的详细信息。
4.用户体验:这扩展了传统的可观测性遥测,通过在应用程序上添加特定数字体验的由外而内的用户视角,即使在预生产环境中也是如此。
Q8:国内市场对于可观测性的认知与需求是怎样的?
从整个行业的使用客户中可以看出,不同行业对于可观测性的诉求也是不同的。比如金融行业,他们已经针对可观测性做了很多方面的尝试,不论是在数量亦或是质量方面都是比较可观的。这并不是说可观测性技术的渗透率有多高,而是说很多企业已经对此产生了共鸣。
可能很多企业依旧处于初实验阶段或者技术考察阶段,但在未来几年里,可观测性的发展速度可能会有指数级的变化,因为故障的产生是无可避免的,而可观测性技术可以覆盖到软件的整个的生命周期之中,形成完整的链条。同时可观测性技术还可以与自动化体系结合在一起,使企业的效率得到数倍的提升。
从目前的市场情况来看,可观测性已经有了一些落地的实践,之后也会有一个慢慢成长的过程。疫情过后,很多人对于数字化转型可能有了全新的认知,在新的系统架构和开发模型下,企业需要一种能力来规避问题的发生,降低问题的影响,所以可观测性恰好适应了现在整合技术的发展路径。
Q9:可观测性面临哪些挑战?
1.数据孤岛:多个代理、不同的数据源和孤岛式的监控工具使得很难理解应用程序、多个云和数字渠道(如web、移动和物联网)之间的相互依赖性。
2.容量、速度、多样性和复杂性:在不断变化的现代云环境(如AWS、Azure和谷歌云平台(GCP))中,从每个组件收集的大量原始数据几乎不可能得到答案。Kubernetes和容器也可以在几秒钟内上下旋转。
3.手动检测和配置:当IT资源被迫手动检测和更改每种新型组件或代理的代码时,他们大部分时间都在尝试建立可观测性,而不是根据可观测性数据进行创新。
4.缺乏预生产:即使在预生产阶段进行负载测试,开发人员仍然无法在将代码投入生产之前观察或理解真实用户将如何影响应用程序和基础设施。
5.浪费时间进行故障排除:应用程序、运营、基础设施、开发和数字体验团队被拉进来进行故障排除,并试图找出问题的根本原因,浪费宝贵的时间进行猜测,试图理解遥测并找出答案。
6.多个工具和供应商的问题:虽然一个工具可以让组织观察到其应用程序体系结构的一个特定领域,但一个工具可能无法在所有可能影响应用程序性能的应用程序和系统中提供完整的观测能力。
此外,并非所有类型的遥测数据对确定问题的根本原因或了解其对用户体验的影响都同样有用。因此,团队仍然需要在多个解决方案中挖掘答案,并费力地解释遥测数据,这是一项耗时的任务,而此时他们可以将自己的专业知识用于立即解决问题。然而,有了单一的真相来源,团队可以更快地获得答案和解决问题。
Q10:企业在实际落地可观测的过程中通常会陷入哪些误区?
首先是开源和商业化如何平衡的问题。不管是可观测性还是之前的监控技术,都有大量的开源能力在支持,有很多的免费方案供使用。对于任何一个企业来说,是否在专注地去做这样一个系统,还是说只是为了辅助主营业务来做系统叠加,前期的投入与最后的结果很可能是有较大落差的。
其次企业在可观测性的建设过程中,总是期望大而全,这就需要考虑到几点因素。第一点,系统需要人为去操作,组织架构中人的水平与素质很大程度上决定了系统的使用能力上限。第二点,技术栈的繁杂性导致了数据治理需要较长的时间,而到了数据的实际使用场景,我们会发现,这其中涉及运维、研发、测试、业务等各部门的人员,部门间的数据孤岛会对数据产生一定的割裂,导致数据无法真正统一在一起。
最后是成本问题。技术并不是一成不变的,从基础监控到网络监控,从 APM 到可观测性,技术是不停在发展的,包括研发的过程,经过了多次的更新迭代,才到了现在微服务的架构。因此要维护一个复杂的技术栈,后续的模型是不是能够真正跟得上就很重要,这需要一个团队持续去迭代,所以企业需要从综合成本方面去考虑可观测性的方案。