课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
数据收集能够让程序员更好的对软件运行状况有一个大概的了解,而今天我们就通过案例分析来了解一下,数据收集常用的方法都有哪些。
1、手动埋点
手动埋点比较简单,我们需要在一些操作前后可以手动包裹我们的埋点代码,比如Http,RPC,DB,MQ等调用,非常灵活,可以在任意的地方添加我们的埋点信息,然后汇总数据,按批发送,缺点是对程序的侵入性较高,不太优雅。
2、Middleware中间件&过滤器Filter
得益于.NETCore优秀的框架设计,它具有一个极具扩展性的请求处理管道,我们可以通过这个管道的定制来满足各种场景下的HTTP处理需求。ASP.NETCore应用的很多特性,比如路由、认证、会话、缓存等,也同时定制消息处理管道来实现的,所以我们需要编写自定义的拦截中间件InterceptMiddleware,获取到请求上下文HttpContext,来拦截所有的Http请求收集数据,注意这里中间件的位置要放到UseEndpoints()的上面,同样可以借助过滤器AcitonFilter,来完成同样的效果,但是这种方式可获取的信息有限,只能拦截到Http请求的一些信息
3、引用AOP
额,面向切面编程,这个需要在我们的.NET程序中引用AOP框架,如果是内部系统的话,我觉的还是可以接受的,常见的框架AspectCore,Castle.Core,通过AOP的特性,我们可以拦截需要获取数据的方法,如果你在项目中,普遍使用依赖注入的话,可以达到方法级别的监控,获取到的信息非常可观,另外需要注意的是,获取的信息越详细,数据量也越大,是全量采集数据还是抽样采集也是要考虑的点
4、EWT(EventTracingforWindows)
ETW是EventTracingforWindows的简称,它是Windows提供的原生的事件跟踪日志系统。由于采用内核(Kernel)层面的缓冲和日志记录机制,所以ETW提供了一种非常高效的事件跟踪日志解决方案。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。