.NET基于 OpenTelemetry 开发的 APM 系统

项目简介

Mocha 是一个基于 .NET 开发的 APM 系统,同时提供可伸缩的可观测性数据分析和存储平台。项目地址:https://github.com/dotnetcore/mocha

项目进度

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

v0.1.0 发布内容

  • 支持 OTel Trace 数据上报

  • 支持通过 Grafana 展示 Trace 数据

  • 提供 Docker Compose 本地体验方案

510ed817c87d6e3459eaef67cfd1f251.png

平台功能

c66c91ded17764818b6fc886bc06c54d.pngMocha 将要提供的功能集合:

  • APM 和 分布式追踪

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

服务拓扑

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

调用链路查询和检索

  • 基础设施监控

主机监控

容器和 Kubernetes 监控

主流中间件监控

  • 日志

日志查询

日志聚合分析

  • 报警

报警规则管理

报警通知

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

技术架构

c14c5d08d51cf3b17c497814b8ef3412.png

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.1.0 快速体验

启动项目

在项目根目录下的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。

b4d2637c51890f427530c94c0902c053.png6e3bb499d3e9b873505406e11d3e5e49.png

选择 Jaeger。

b4a104ffd92343dab1419764af1417c0.png

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

4b3e7236a6707e884f3dd5f125721173.png

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

cc9b0f06643c2d68263232d5f2dff237.png

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

33b29df13fd61009b956ba871d3e8fef.png
Trace 数据的查询

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

fb387f577e45c39bc30e561cce604988.png

c47bd8716a335c0d04b83fc79d72dcb9.png

转自:黑洞视界

链接:cnblogs.com/eventhorizon/p/17979677

- EOF -

技术群:添加小编微信dotnet999

公众号:Dotnet讲堂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值