本文约有字,浏览全文预计需要10分钟。
随着移动互联网、云计算、大数据、物联网等技术的迅猛发展,各种业务应用不断出现,IT应用复杂度呈现爆炸式增长,数据获取的高实时化、业务需求的快速迭代、以及产品和服务的即刻落地,这些高要求使运维团队所承受的责任更加沉重。
运维工程师既要保证服务和产品的可靠性、稳定性,优化服务、快速定位故障、提升用户体验等,同时还要为业务决策提供数据支撑,引领业务创新。应对上述挑战关键在于业务监控时能否获取全量、实时、精确的数据。获取数据有多种方式,本文对目前主流的两种获取数据方式——探针埋点与互联数据,进行深入对比分析。
1.Agent获取数据实现Agent也就是常说的探针埋点,通过对生产服务器上的应用部署或者嵌入探针进行应用性能数据采集。这种方式能够提供非常完整与细粒度的监控数据采集,提供代码级的问题定位。但此方式对应用有侵入性,如果埋点代码异常,会对应用本身的性能和稳定性产生影响。
探针埋点的方式主要分为两类:
以Zipkin为代表的代码侵入式埋点;
以PinPoint为代表的字节码增强式埋点。
1.1代码入侵式埋点1.1.1简介代码侵入式埋点是指提供应用开发的SDK,或者提供集成埋点代码的框架供应用开发者调用。像Google这类具备框架研发能力的企业将植入点选在开发框架或通信框架中,确保基于统一框架开发或通信的应用天然具备埋点能力,开发团队除框架外无需