大多数的开源APM项目都支持 Dapper 或者 OpenTracing 协议,如 Apache SkyWalking , ZipKin,pinpoint 等。 顺便说一句,我们 NCC开源项目组 的 Lemon 同学正在给 SkyWalking 写 C# 的 客户端驱动项目 ,这是一项非常具有挑战性的工作,感兴趣的同学可以 Star 一下。
相信阅读本篇文章也有不少的架构师,开源项目作者,框架开发者,甚至应用程序开发者,那么我建议可以从现在开始对你的项目提供 Diagnostics 支持,目前 .NET Core 中 CoreFx , ASP.NET Core, EntityFramework Core 都已经对 Diagnostics 提供了支持。
CAP 在 2.2 版本中已经对 Diagnostics 提供了支持。
CAP 中的 DiagnosticsCAP: https://github.com/dotnetcore/CAP
CAP 是我的一个开源项目,用来处理在微服务或者SOA架构中分布式事务的一个解决方案,你可以在这篇文章中看到更多关于 CAP 的介绍,喜欢的同学可以给个 Star ,也是我继续做的更好的动力,谢谢。
CAP 对外提供的事件监听者名称为: CapDiagnosticListener
CAP 中的 Diagnostics 提供对外提供的事件信息有:
消息持久化之前
消息持久化之后
消息持久化异常
消息向MQ发送之前
消息向MQ发送之后
消息向MQ发送异常
消息从MQ消费保存之前
消息从MQ消费保存之后
订阅者方法执行之前
订阅者方法执行之后
订阅者方法执行异常
相关涉及到的对象,你可以在 DotNetCore.CAP.Diagnostics 命名空间下看到。
基于这些对外的事件数据,我们可以来对接APM,下面这个是我对接的 ZipKin 的一个图:
总结通过本篇文章我们知道了 .NET Core 中为我们提供的一个新的事件数据记录对象DiagnosticSource ,通过这个对象,我们可以对外提供一些诊断信息,以便于在生产环境中对我们的应用程序进行性能问题排查和调用链跟踪,然后我们知道了一下CAP对外提供的一些Diagnostics事件。
如果你觉得本篇文章对您有帮助的话,感谢您的【推荐】。
如果你对 .NET Core 有兴趣的话可以关注我,我会定期的在博客分享我的学习心得。