项目简介
Mocha 是一个基于 .NET 开发的 APM 系统,同时提供可伸缩的可观测性数据分析和存储平台。项目地址:https://github.com/dotnetcore/mocha
项目进度
目前项目处于早期阶段,已经完成了对 Trace 的基础支持,可以通过 OTel SDK 上报数据到 Mocha Distributor,然后通过 Grafana 展示。
v0.1.0 发布内容
支持 OTel Trace 数据上报
支持通过 Grafana 展示 Trace 数据
提供 Docker Compose 本地体验方案
平台功能
Mocha 将要提供的功能集合:
APM 和 分布式追踪
服务概览、R.E.D 指标和可用性监控
服务拓扑
调用监控,包括 HTTP、RPC、Cache、DB、MQ 等
调用链路查询和检索
基础设施监控
主机监控
容器和 Kubernetes 监控
主流中间件监控
日志
日志查询
日志聚合分析
报警
报警规则管理
报警通知
M.T.L 数据探索 [Data Explore / Inspect]
技术架构
![c14c5d08d51cf3b17c497814b8ef3412.png](https://i-blog.csdnimg.cn/blog_migrate/30c1d6e0c3a9acdf4d273e96aed30ed2.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。
选择 Jaeger。
![b4a104ffd92343dab1419764af1417c0.png](https://i-blog.csdnimg.cn/blog_migrate/7d28fa3c00d3be143ede9e088b3c3db8.png)
配置 Jaeger 数据源的 URL 为 http://jaeger-query:5775
。
![4b3e7236a6707e884f3dd5f125721173.png](https://i-blog.csdnimg.cn/blog_migrate/0acd1018cbf5c451fd0d205d6cafd94c.png)
点击 Save & Test,如果显示如下信息,则说明配置成功。
![cc9b0f06643c2d68263232d5f2dff237.png](https://i-blog.csdnimg.cn/blog_migrate/e2a76e908dcfe784d5c5a82d3ec6af54.png)
如果还没往 distributor 发送过数据,会显示如下警告信息。
![33b29df13fd61009b956ba871d3e8fef.png](https://i-blog.csdnimg.cn/blog_migrate/d2fc272ae7f0fafd000b23e4cedbdc8f.png)
Trace 数据的查询
点击左侧的菜单,选择 Explore,然后选择 Jaeger 数据源,即可看到 Trace 数据。
![c47bd8716a335c0d04b83fc79d72dcb9.png](https://i-blog.csdnimg.cn/blog_migrate/e990a7e9c786cde7dccb5c0c134f4370.png)
转自:黑洞视界
链接:cnblogs.com/eventhorizon/p/17979677
- EOF -
技术群:添加小编微信dotnet999
公众号:Dotnet讲堂