构建开源可观测平台

企业始终面临着确保 IT 基础设施和应用程序全年可用的压力。现代架构(容器、混合云、SOA、微服务等)的复杂性不断增长,产生大量难以管理的日志。我们需要智能应用程序性能管理 (APM) 和可观察性工具来实现卓越生产并满足可用性和正常运行时间目标。其中包括分析应用程序运行状况、性能和用户体验。采用机器学习技术来识别异常和行为模式将有助于及早发现根本原因并满足客户服务级别协议 (SLA)。

APM和可观察性工具市场无疑是火热的。这些工具摄取多个遥测数据源,并且是强大的分析平台,提供对应用程序和基础设施健康状况(包括系统性能)的重要见解。采用可观察性的软件开发团队能够更好地迭代发布他们的应用程序代码。根据“MarketsandMarkets”的研究,可观测工具和平台的市场规模预计将从 2023 年的 24 亿美元增长到 2028 年的 4 亿美元以上,复合年增长率 (CAGR) 为 11.7%。

什么是可观察性?

可观察性是指收集有关分布式应用程序、基础设施以及其内部和外部组件和服务之间的通信的数据的能力,使团队能够勤奋地调试他们的系统。它使站点可靠性工程 (SRE)、软件工程和运营团队能够分析客户影响并对服务中断进行分类。可观察性和监控有时可以互换使用。可观察性(主动)使数据可访问,并允许您提出任何系统问题以更深入地了解代码的行为方式。监控(反应式)是收集和显示数据以及确定系统整体状态的能力的任务。
可观察性可以进一步细分为三个关键支柱:日志、跟踪和指标,这对于 SRE 可观察性至关重要。

• 日志帮助我们诊断问题并告诉我们问题发生的原因。
• 跟踪帮助我们隔离问题并告诉我们问题发生的位置。
• 指标帮助我们发现问题并告诉我们发生了什么。

市场工具、能力和挑战

Gartner 的 APM 和可观察性魔力象限已识别出 20 多个提供 APM 和可观察性功能的供应商产品,包括自托管、供应商管理或 SaaS 部署。这些产品提供多种功能,包括应用程序性能指标、事件监控和警报、可追溯性、异常检测和漏洞等。

企业业务应用程序包括自主开发的应用程序(例如.NET、Java、Python、SQL、NoSQL DB 等)、第三方/现成产品(例如 Salesforce、HubSpot 等)和集成(例如 Stripe、PayPal 等)。自行开发的应用程序托管在本地数据中心或由 AWS、GCP 或 Azure 等云供应商托管。现成的产品基于 SaaS 或通过 API 集成。高度分布式的应用程序跨越数十个和数百个节点、服务和实例。

• 工具过多:企业应用程序使用各种工具来监控应用程序运行状况和性能(例如New Relic、Data Dog 等)、错误日志记录(例如Splunk)以及云供应商提供的工具(例如CloudWatch)。这些产品在功能上重叠,维护和管理这些工具(采购、学习曲线等)可能很麻烦。

• 不可预测的数据量:想象一下根据应用程序流量、使用情况、对外部产品的依赖性等收集的可观察性数据(日志、跟踪、指标)的数量。整合这些数据源所需的数据存储量可能会快速增长。控制。

• 定价复杂:这些供应商产品还提供不同的定价模型,例如按主机收费(例如Splunk、Data Dog、Dynatrace)、按用户收费(例如New Relic)、按摄取收费(例如SumoLogic、AppDynamics)。定价模型的复杂性使得比较供应商之间的总拥有成本 (TCO) 并确定适合您的要求和预算的正确工具具有挑战性。

为什么选择开源可观测平台?

基于开源的可观测性工具旨在提供一种标准的、与供应商无关的方法,用于摄取、转换数据并将数据发送到可观测性后端。开源可观察性工具可以作为节省许可成本的替代方案,并将多个 APM 工具与适合您的要求和预算的工具整合在一起。

但是,维护开源系统可能需要付出努力来设置和维护,并且会增加您的初始运营成本。但从长远来看,您将节省许可费用并避免供应商锁定和合同协议。

Gartner 预测,到 2025 年,70% 的新云原生应用监控将使用开源工具而不是特定于供应商的代理来提高互操作性,并且 70% 的新云原生应用将采用 OpenTelemetry 来实现可观察性而不是供应商。特定代理和软件开发工具包 (SDK)。

使用开源生态系统扩展可观测性

可观察性的开源格局非常动态。有多个云原生计算基金会 (CNCF) 开源工具用于可观察和监控。这篇文章将主要关注 OpenTelemetry 框架和 LGTM 技术堆栈。

OpenTelemetry
上述“工具太多”的挑战给遥测数据收集带来了新的挑战。每个工具供应商都有自己的 API、SDK、日志、指标和跟踪代理和收集器。我们需要使用 OpenTelemetry 框架的统一遥测收集来创建和管理遥测数据,例如日志、跟踪和指标。

CNCF 赞助的 OTEL 项目提供了一套统一的与供应商无关的 API、SDK 和工具,用于生成和收集遥测数据并将其导出到各种分析工具。您可以获得每种编程语言的一个 API 和 SDK 来提取应用程序的可观测性数据、一个标准收集器、一个传输协议 (OTLP) 等。

LGTM:
最流行的基于开源的可观测性和监控是使用 LGTM 技术堆栈实现的。

在LGTM 堆栈中,我们利用:
• Loki 用于日志聚合
• Grafana 仪表板用于遥测可视化
• Tempo(或 Jaeger)用于跟踪聚合
• 托管 Prometheus 用于指标聚合

结论

可观察性是指整个系统的完整可见性以及将业务指标与技术数据联系起来。监控是为了了解事情是否正常工作,而 AIOps 是为了从这种可见性中获取意义。可观察性和监控对于确保应用程序顺利运行并满足客户 SLA 至关重要。总之,通过投资开源 OTel 框架和 LGTM 工具,SRE 团队可以有效监控其应用程序并深入了解系统行为和潜在问题。这些工具提供成本效益和定制以满足特定要求。它促进供应商中立,这对于避免供应商锁定至关重要。

上一篇:IBPS快速开发框架开源:赋能数字化转型,助力流程化办公!


下一篇:CSS面试题常用知识总结day02