Mocha:云原生 APM 和大规模可观测性数据处理平台

8f772f0d0491b68aa64fd57d16b327a4.png

3c9b38749ad15b29fb49c6d77d313e6a.png
背景

近年来,可观测性概念被提出和逐渐流行,OpenTelemetry 也逐渐成为最流行的可观测性框架,OTel 很好的解决了多语言系统中 Metrics / Trace / Log 的收集和标准化问题,但对于如何存储和分析使用收集到的 M.T.L 数据,业界并没有统一的方案,一般来说大家需要:

  • 使用 Jaeger、Prometheus、Loki 等不同的后端系统搭配,但引入了相当的复杂度

  • 引入 SkyWalking 、ElasticAPM 等 APM 系统

  • 使用 Datadog、SLS 等 SaaS 可观测性平台,需要支付昂贵的流量和数据存储费用

同时上述提到的开源 APM 后端,除 SkyWalking [Java实现] 外,其余无一例外使用 Golang 实现。

而从 .NET 5 以来,到目前的 .NET 8,每一个版本都对 CLR 和 BCL 做了大量性能优化和提供了面向高性能场景的新语言特性,.NET 的演进很适合开发高性能的云原生中间件。所以我们发起 Mocha 项目,使用 .NET 实现一个面向大规模可观测性数据分析和存储的平台。

Mocha 的定位:
基于 OpenTelemetry 的 APM 系统,同时提供可伸缩的可观测性数据分析和存储平台。

be43705d2952ca0e145687b07534aba2.png
平台功能

4a98bccf8fb7f68164596e9985fdaed4.pngMocha Functional Architecture

Mocha 将要提供的功能集合:

  • APM 和 分布式追踪

    • 服务概览、R.E.D 指标和可用性监控

    • 服务拓扑

    • 调用监控,包括 HTTP、RPC、Cache、DB、MQ 等

    • 调用链路查询和检索

  • 基础设施监控

    • 主机监控

    • 容器和 Kubernetes 监控

    • 主流中间件监控

  • 日志

    • 日志查询

    • 日志聚合分析

  • 报警

    • 报警规则管理

    • 报警通知

  • M.T.L 数据探索 [Data Explore / Inspect]

74186576c8c281474638e96abe893272.png
技术架构

678ff0b8b76ea2f4d9b86a06f3cb732d.pngMocha Technical Architecture

Mocha 整体架构由下面的部分组成

  • Mocha Distributor Cluster:作为 Mocha 系统的数据入口,负责接收 OTel SDK 和 Collector 上报的数据,并通过一致性 Hash 将数据路由到对应的 Mocha Streaming Cluster 节点上。为了保证数据不丢失,最终 Distributor 应该具备本地 FIFO 队列的能力。

  • Mocha Streaming Cluster:Mocha 的核心组件,通过读取预配置或者用户配置的 Aggr Rule DSL 生成对应的 Streaming Data Flow 并执行。Streaming 是具备分布式 Shuffle 的能力的有状态组件,需要将自身信息注册到 ETCD 中。

  • Storage:Mocha M.T.L 存储,可以选用开源存储组件,如 ClickHouse、ElasticSearch、VictoriaMetrics 等。

  • Mocha Querier + Grafana:从存储查询数据并提供给 Grafana 做展示。因此要兼容 PromQL / Jeager / Loki 等数据源的查询。

  • Mocha Manager:包括 Manager Server、Dashboard 和 ETCD 组件,集群元数据和 M.T.L 数据分析规则存储。

  • OTel SDK / Collector : 开源 OpenTelemetry 采集套件。

bccf24efffd8e36fc118c1d01da3ba4f.png
演进规划

我从大概 6 年前开始,分别参与过开源 APM、商业 APM 产品、超大规模的 Metrics/Log 底座等不同的可观测性相关系统,并且从多个视角对 APM 和可观测性体系都有深入的思考,深深知道要实现上面描述的功能和架构是非常不容易的。

所以根据我的经验,在建设 Mocha 的时候我们不能一蹴而就,我们可以遵循 最小可行性产品(Minimum Viable Product,MVP) 的模式,从先实现一个能跑通 OTel Trace 流程的最小功能集系统开始。

我对 Mocha 的演进思考大概分为三个阶段

  • v1.0 release 目标:借助开源存储组件 [如 ClickHouse,ES..] 基础上,实现基于 OTel Trace 的 APM 功能系统;

  • v2.0 release 目标:实现基于 DSL 的流式 M.T.L 分析平台,在这个阶段逐步增强 Mocha 的扩展能力,从 APM 演变为自定义的分析平台;

  • v3.0 release 目标:开始考虑大规模数据下的平台伸缩能力和存储成本,这个阶段会集中在架构性能和低成本 M.T.L 自定义存储上。

59f2b927f046f0f2a29b7c14819765e0.png

83237f34bb590659bcd3768bbf845408.png

欢迎给我们捐款
您的捐款将用于社区活动

eb8586d4c5a98c8d3ab1eb3a4b3cd55f.jpeg

82c2aaabfad5da5412abb6a34fcb464a.png

2c8386a92d721dd5530649864ccefeaf.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值