浅谈全链路监控

在性能测试领域,近几年全链路压测能够说是愈来愈火热,但据我了解,真正玩得转的,就那么几家知名的大厂或者有大厂背景的公司。html

缘由无非这几点:愈加复杂的业务和庞大的数据量倒逼技术,以及技术建设到了必定程度须要创造更多的价值。以前的博客也介绍过,前端

传送门:聊聊全链路压测再谈全链路压测java

而伴随全链路压测一路成长但不为大多数测试童鞋所知的,还有全链路监控这篇博客,简单介绍下关于全链路监控的一些知识。。。数据库

 

1、基础知识服务器

一、调用链是全链路追踪监控的核心概念。架构

二、定义:从请求源头(前端页面、移动端)到最后的底层服务(好比DB、Redis)的全部中间调用环节。异步

三、常见全链路监控工具对比分布式

除了上述几种全链路监控工具,还有skywalking等,但不一样工具各自的优缺点不一样,还须要根据技术团队的技术特色和需求合理选型。工具

 

2、全链路监控特质性能

一、低侵入性

监控系统应尽量减小对业务系统的侵入,保持对使用方的透明性,减小开发人员的负担,下降接入门槛和难度。

二、低性能影响

因为全链路监控系统须要对各类应用中间件进行日志数据采集,大多都须要在业务系统内进行“埋点”或放置agent,通常都是在核心业务流程。

所以应尽量下降对业务系统形成的性能影响,通常来讲,对CPU的耗用低于2%能够做为一个参考阈值。

三、灵活全面的接入策略

为了尽量下降接入成本,应该提供灵活的监控配置策略,让业务方决定是否接入,以及收集数据的范围和粒度,并提供对应的技术方案保障监控策略生效。

四、时效性

实时有效的监控数据展现功能,帮助相关人员理解系统行为,为流程、架构、代码优化,以及扩容缩容、服务限流降级提供正确客观的数据参考。

 

3、注意事项

一、异步调用

经过java字节码加强方式植入加强逻辑, 经过对JDK线程(Thread)对象进行加强完成。

二、提升日志输出的技术方案

在应用服务器开辟专门的内存区域,虚拟为虚拟磁盘,日志输出采样经过异步方式写入磁盘,当日志量过大(设定阈值)时丢弃日志,并Count丢弃的日志。

步骤:达到采样条件,产生日志并记录;批量日志数知足条件,写入I/O缓冲区(Buffer);等待缓冲区满,写入存储块设备。

三、采样率&TP数

采样率:每N次调用采集一次数据,极大下降采集的日志数量;

TP数:记录每次调用的TP值,便于技术TP50%、TP99%的指标;

PS:关于TP50/TP99,可参考这里:指标数据TP5五、TP90、TP9九、TP999

 

4、扩展知识

基于全链路监控的思想出现了不少新的知识,好比说:APM。

一、定义:APM(Application Performance Management)对应用程序性能和可用性的监控管理。

二、说明:狭义上的APM:单指应用程序的监控,如应用的各接口性能和错误监控,分布式调用链路跟踪,以及其余各种用于诊断(内存,线程等)的监控信息等。

     广义上的APM:除了应用层的监控意外,还包括手机App端监控,页面端监控,容器、服务器监控,以及其余平台组件如中间件容器,数据库等层面的监控。

 

以上内容只是我的总结记录的笔记,仅供参考。。。