首页 > 其他分享 >NCC Mocha v0.10 发布,.NET 开发的基于 OpenTelemetry 的 APM 系统

NCC Mocha v0.10 发布,.NET 开发的基于 OpenTelemetry 的 APM 系统

时间:2024-01-22 11:34:48浏览次数:39  
标签:Trace 数据源 Jaeger Mocha OpenTelemetry APM NET 数据

目录

项目简介

Mocha 是一个基于 .NET 开发的 APM 系统,同时提供可伸缩的可观测性数据分析和存储平台。

项目地址:https://github.com/dotnetcore/mocha

注意:使用 git clone --recursive 克隆本仓库以及子模块。

项目进度

目前项目处于早期阶段,已经完成了对 Trace 的基础支持,可以通过 OTel SDK 上报数据到 Mocha Distributor,然后通过 Grafana 展示。

v0.10 发布内容

  • 支持 OTel Trace 数据上报
  • 支持通过 Grafana 展示 Trace 数据
  • 提供 Docker Compose 本地体验方案

项目背景

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

  1. 使用 Jaeger、Prometheus、Loki 等不同的后端系统搭配,但引入了相当的复杂度
  2. 或者引入 SkyWalking 、ElasticAPM 等 APM 系统
  3. 或者使用 Datadog、SLS 等 SaaS 可观测性平台,需要支付昂贵的流量和数据存储费用

同时上述提到的开源 APM 后端,除 SkyWalking [Java实现]外,其余无一例外使用 Golang 实现。
而从 .NET 5 以来,到目前的 .NET 8,每一个版本都对 CLR 和 BCL做了大量性能优化和提供了面向高性能场景的新语言特性,.NET 的演进很适合开发高性能的云原生中间件。所以我们发起 mocha 项目,使用 .NET 实现一个面向大规模可观测性数据分析和存储的平台。

平台功能


Mocha 将要提供的功能集合:

  • APM 和 分布式追踪
    • 服务概览、R.E.D 指标和可用性监控
    • 服务拓扑
    • 调用监控,包括 HTTP、RPC、Cache、DB、MQ 等
    • 调用链路查询和检索
  • 基础设施监控
    • 主机监控
    • 容器和 Kubernetes 监控
    • 主流中间件监控
  • 日志
    • 日志查询
    • 日志聚合分析
  • 报警
    • 报警规则管理
    • 报警通知
  • M.T.L 数据探索 [Data Explore / Inspect]

技术架构

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

  • Mocha Distributor Cluster:作为 mocha 系统的数据入口,负责接收 OTel SDK 和 Collector 上报的数据,并通过一致性Hash 将数据路由到对应的 aggregator 节点上。为了保证数据不丢失,最终 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和ETCE组件,集群元数据和 M.T.L 数据分析规则存储。
  • OTel SDK / Collector : 开源 OpenTelemetry 采集套件。

v0.10 快速体验

启动项目

在项目根目录下的docker目录中,执行以下命令启动项目:

docker-compose up -d

启动成功后,可以看到以下容器:

  • distributor: 提供用于接收 OTLP 数据的 gRPC API
  • jaeger-query: 提供用于接收 Jaeger 查询协议的 HTTP API
  • mysql: 用于存储数据
  • grafana: 用于展示数据

Trace 数据的发送

将 SDK 的 OTLP exporter 配置为 http://localhost:4317 即可将数据发送到 distributor。

配置 Jaeger 数据源

我们实现了支持 Jaeger 查询协议的 API,因此可以直接在 Grafana 中配置 Jaeger 数据源。

访问 http://localhost:3000/ 即可看到grafana的登录页面。用户名和密码都是admin。

登录后,点击左侧的菜单,选择 Data Sources,然后点击 Add data source。

选择 Jaeger。

配置 Jaeger 数据源的 URL 为 http://jaeger-query:5775

点击 Save & Test,如果显示如下信息,则说明配置成功。

如果还没往 distributor 发送过数据,会显示如下警告信息。

Trace 数据的查询

点击左侧的菜单,选择 Explore,然后选择 Jaeger 数据源,即可看到 Trace 数据。

标签:Trace,数据源,Jaeger,Mocha,OpenTelemetry,APM,NET,数据
From: https://www.cnblogs.com/eventhorizon/p/17979677

相关文章

  • 当 OpenTelemetry 遇上阿里云 Prometheus
    作者:逸陵背景在云原生可观测蓬勃发展的当下,想必大家对OpenTelemetry&Prometheus并不是太陌生。OpenTelemetry是CNCF(CloudNativeComputingFoundation)旗下的开源项目,它的目标是在云原生时代成为应用性能监控领域的事实标准,它提供了一套统一的API和SDK,用于生成、收集和处......
  • dremio + grafana/tempo opentelemetry监控集成
    昨天我写过一个基于signoz的dremioopentelemetry集成,实际上grafana/tempo也是一个很不错的选择,主要是部署简单,以下是一个简单测试环境准备docker-compose文件version:"3"services:tempo:image:grafana/tempo:latestcommand:["-config......
  • dremio opentelemetry监控试用
    标准的系统监控应该包含metrics,trace,log这个三大类,metrics部分,包含了一个promethues的扩展,当然官方也支持jmx以及slf4j的opentelemetry是一个直接内置的trace功能,很不错,以下是一个简单的测试环境准备dremio默认就支持opentelemetrytrace,对于opentelemetrycollector......
  • 探索服务网格与 OpenTelemetry 的协同之分布式跟踪
    背景分布式跟踪分布式跟踪是监控和诊断微服务请求流程的关键技术,也是可观测性的关键组成部分,提供了对微服务架构中复杂交互和性能问题的深入洞察。它通过提供服务间请求链路的清晰视图来管理复杂性,并帮助识别性能瓶颈、优化资源分配、快速定位和解决故障,提高系统的整体可靠性。服务......
  • 使用 OpenTelemetry 和 Loki 实现高效的应用日志采集和分析
    在之前的文章陆续介绍了如何在Kubernetes中使用Otel的自动插桩以及Otel与服务网格协同实现分布式跟踪,这两篇的文章都将目标聚焦在分布式跟踪中,而作为可观测性三大支柱之一的日志也是我们经常使用的系统观测手段,今天这篇文章就来体验下应用日志的操作闭环。背景OpenTele......
  • 使用 OpenTelemetry 和 Loki 实现高效的应用日志采集和分析
    在之前的文章陆续介绍了如何在Kubernetes中使用Otel的自动插桩以及Otel与服务网格协同实现分布式跟踪,这两篇的文章都将目标聚焦在分布式跟踪中,而作为可观测性三大支柱之一的日志也是我们经常使用的系统观测手段,今天这篇文章就来体验下应用日志的操作闭环。背景OpenTel......
  • Mapmost Alpha,一款非常好用且强大的三维城市创建工具~!
    一、MapmostAlpha介绍Hello,各位铁铁,今天给大家推荐一款好用的三维城市场景创建工具。这款产品主要用于创建三维的城市场景,一款快速构建空间场景轻应用的在线创作平台。原生兼容云上云下多源异构数据,具备丰富的可视化组件、海量城市底板、便捷的配置管理工具、全面的可定义对象属......
  • 探索服务网格与 OpenTelemetry 的协同之分布式跟踪
    在上一篇文章中,介绍了如何在k8s中无侵入安装Otel探针并实现了无侵入(某些语言还无法实现,比如Go的eBPF对内核的苛刻要求)的分布式跟踪。这篇文章发出后有读者评论javaagent的“无侵入”一说,这里有必要解释下。“无侵入”主要指的是不需要修改应用程序的业务逻辑代码就......
  • 在 Kubernetes 中无侵入安装 OpenTelemetry 探针
    背景OpenTelemetry探针OpenTelemetry(简称Otel,最新的版本是1.27)是一个用于观察性的开源项目,提供了一套工具、APIs和SDKs,用于收集、处理和导出遥测数据(如指标、日志和追踪信息)。应用程序遥测数据(如追踪、指标和日志)的收集是通过探针来完成的,探针通常以库的形式集成到应用......
  • Nodejs APM监控实战分享
    如何对线上的nodejs做监控,了解相关的GC、内存使用情况、性能,如何更好的了解相关的指标,我们需要做一个采集线上数据的方案,但是又不希望侵入性太强,首先收集的指标。内存相关指标说明堆内存rss:常驻内存,node进程分配的总内存大小external:v8管理的C++所占用的内存大小arra......