同步操作将从 煜/ztrace 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
[toc]
即埋点时的信息收集器,是所有数据的源头和触发点
Sampler提供初始样本信息,Collector则从这些样本信息中负责筛选和加工,具体筛选逻辑和加工方式由业务决定。
不论是采集到的样本,还是过滤加工后的数据,都需要进行一个存储(永久、缓存、转储到第三方服务)承载过程。
对于大多数系统来说,业务功能都是先行的,往往都是业务相对稳定时,数据埋点相关需求才逐渐浮现,而这种埋点需求明显滞后于业务功能。 也就意味着,埋点采集时不能够改变业务代码本身的功能逻辑以及代码结构。
目前方案上是基于AOP的方式显示声明的拦截于方法签名上,并提供基于方法入参和方法返回结果值的方式进行业务回调。
该方案带来的特点是,基于Spring AOP的实现,可以对接口进行动态代理,也可以直接基于CGLIB做类增强。
但对于业务代码上也存在对应的前置条件,即需要原有的业务功能设计应该要有良好的接口设计规范和基于面向接口约定的意识。
( Spring AOP 相关资料)
埋点采集或者样本采集,都是明确建立于业务目标之上,且与业务功能代码并行完成。 但由于业务功能代码的正常执行,不允许受到采样器异常的干扰。即采样器本身的处理异常,不能够对正常的业务功能有影响。
目前方案上对于采样过程默认是做了全局的异常捕获,并主动打印错误日志。
带来的效果是,不论框架上本身出现任何故障,都不会发生异常外抛.
但是,由于框架异常只能通过日志方式跟踪,开发者需要细心的跟踪异常日志。
采样的本身,就是在业务功能前后做一定的逻辑添加。这种逻辑添加多少会对主线的业务功能有一定的性能影响。 特别是采集的初始来源往往只有几个关键信息,比如来自于方法入参,或者方法返回值。 为了达到业务上的采样目的,则需要对采样源的关键信息做扩展,并汇总相关信息,而这种扩展可能涉及到大量的IO操作。
目前方案上,样本采集支持样本率的概念,即允许业务上间隙性的抽取样本。但默认上是全量抽取。
采集过程则提供了异步采集和同步采集二种方式。
对于异步采集主要是基于线程池,并支持线程池相关配置,以及一些采样时的过滤正则支持,合适的参数配置,可用于调整吞吐量。
对于已经获得的采样信息,需要**高效的转储到相应的存储介质或者后续的数据清洗流程 **
原始样本数据从采样到清洗加工,中间需要依赖一定的流通承载管道。
一般来说处理方式有二种:
a) 通过网络直接发送到收集器,比如:HTTP协议
b) (同步或者异步,实时或者批处理)写入样本池,再由收集器从样本池中读取并消费数据,比如:数据库或者文件
目前方案上提供了三种模式,即IEventStorage对应的三种实现策略:
a) HTTP。直接发送至收集器的endpoint
b) MQ。消息队列转储,比如:Kafka,ActiveMQ等
c) Redis。基于Redis List的简单MQ实现
d) Console或者文件日志打印。主要用于本机测试,请不要使用于生产环境。
其中MQ模式,为框架默认方式。
<dependency> <groupId>com.hyw</groupId> <artifactId>trace</artifactId> <version>0.0.1</version> </dependency>
由于默认采集到的样本数据是基本MQ转储的,故需要开发上配置相应的MQ信息。 此配置信息请参考Spring cloud Stream的相关配置参数即可。
TraceSampler 业务核心采样器
此为开发者需要根据业务需求自行扩展并注入到注解上下文,具体使用描述,请参考API说明文档
TraceSource 核心注解
用于定义采集的方式和相关分组类别,此注解必须要求注入TraceSampler的扩展实现
(注:对于注解使用,请务必遵循AOP原则,此不在本框架讨论范围)
MultiTraceSources 多TraceSource支持
考虑到同一个AOP业务上可能需要多种维护的逻辑采集,故提供一个多TraceSource的采集支持
由于默认读取的样本源是从MQ中消费的,故需要开发上配置相应的MQ信息。 此配置信息请参考Spring cloud Stream的相关配置参数即可。
属性 | 数据类型 | 描述 | 默认值 |
---|---|---|---|
ztrace.sampler.defalut.core.thread | Integer | Thread pool core size when sampling data if run aync task,dafault 200 | 200 |
ztrace.sampler.defalut.max.thread | Integer | Thread pool max size when sampling data if run aync task,dafault 400 | 400 |
ztrace.sampler.defalut.max.queue | Integer | Thread pool max queue size when sampling data if run aync task,dafault 5000 | 5000 |
ztrace.sampler.group.skip-pattern | String | Regx expression for Group property filter,default 'null' | null |
ztrace.sampler.type.skip-pattern | String | Regx expression for type property filter,default 'null' | null |
ztrace.client.meta.send.type | String | Approach of storage if sampling data. Support type: 'MQ' ,'HTTP',‘REDIS’ | MQ |
ztrace.client.meta.send.uri | String | Applicable if ztrace.client.meta.send.type=HTTP. Target receiver to collect trace event | http://localhost:8080/ztrace/collect |
ztrace.client.meta.send.dubug | Boolean | Applicable if ztrace.client.meta.send.type=HTTP. System will print out all request to the target URI | true |
ztrace.sampler.defalut.thread.keepalive | Long | when the number of threads is greater than the core, this is the maximum time that excess idle threads will wait for new tasks before terminating | 1000 |
ztrace.client.meta.redis.topic | String | Applicable if ztrace.client.meta.send.type=REDIS. Setup the channel for data posting. | ZTrace |
属性 | 数据类型 | 描述 | 默认值 |
---|---|---|---|
ztrace.server.meta.receive.type | String | Approach of receive if collect data. Support type: 'MQ' ,'HTTP','REDIS'. System will automatically register the specific endpoint: /ztrace/collect. | MQ |
ztrace.server.meta.redis.topic | String | Applicable if ztrace.server.meta.receive.type=REDIS. Setup the channel for data receiving. | ZTrace |
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。