peaksnail / pinpoint-node-agent

pinpoint agent for nodejs
Apache License 2.0
75 stars 26 forks source link

support sampler #12

Closed peaksnail closed 7 years ago

peaksnail commented 7 years ago

support sampler like java agent

jiaojiaojiao commented 7 years ago

node这边是入口的话,那发送请求的时候需要去发送给后端标记该请求是否需要采样,span是否采样那个标记是什么呢

peaksnail commented 7 years ago

我先说下node 和java端实现的情况

以上是java和node端的实现,因为插件都是业务方自己定义的,所以如果在node端设置采样标志,也是可以的,但是需要在下一个节点除了判断tranactionId 和spanId等元数据之外,需要再判断采样标志。同时这个采样标志是业务自己定义的,在span数据结构中没有此字段。

可以参考 pinpoint java agent dubbo插件,就是在生产者要传输的信息中加入是否采样标志,然后消费者获取信息后,去判断是否有采样标志。

jiaojiaojiao commented 7 years ago

嗯嗯,我们现在就是node端设置采样标志,直接传给调用方一个采样标志的,但是我现在的采样标志是自己定义的,采样率我也是取的随机数,我看到配置文件中有个直接配置采样率的属性,不过不清楚采样器是怎么根据配置,判断是否采样的

peaksnail commented 7 years ago

采样器根据采样比例进行采样,比如采样比例设置为N,表示1/N 的采样比例,如果设置10,就是1/10的采样率,然后设置一个循环计数M=0,从0开始计算, 每次新请求过来后,就计算 M%N == 0,如果为true表示,当前请求采样,false则表示不采样,最后M++,来达到采样率1/N的要求

jiaojiaojiao commented 7 years ago

node这边直接在配置文件中设置采样是没有用的吧,目前只有java那边是支持配置采样率的吧

peaksnail commented 7 years ago

嗯,目前node agent不支持,所以建此issue 来说明,node agent 此功能正在开发

peaksnail commented 7 years ago

此功能已完成,有任何问题,欢迎指出