通过Skywalking的动态配置机制,可以动态下发Agent端的采样配置,官方提供了如下几种:
Config Key | Value Description | Value Format Example | Required Plugin(s) |
---|---|---|---|
agent.sample_n_per_3_secs | The number of sampled traces per 3 seconds | -1 | - |
agent.ignore_suffix | If the operation name of the first span is included in this set, this segment should be ignored. Multiple values should be separated by ,
|
.txt,.log |
- |
agent.trace.ignore_path | The value is the path that you need to ignore, multiple paths should be separated by , more details
|
/your/path/1/**,/your/path/2/** |
apm-trace-ignore-plugin |
agent.span_limit_per_segment | The max number of spans per segment. | 300 |
- |
采样控制的逻辑如下图所示:
image.png
agent.ignore_suffix
后缀匹配成功则忽略,其内容是集合,多个值之间使用,
隔开,如:.jpg,.jpeg
如果segment中第一个span(通常是EntrySpan)的operation 名称匹配到了,那么这个segment 将被忽略。
agent.trace.ignore_path
- 其内容是集合,多个值之间使用
,
隔开,如:/your/path/1/** , /your/path/2/** - 此功能由apm-trace-ignore-plugin完成,此插件在optional-plugins目录下,若要使用,需要拷贝到plugins目录下。
- 如果segment中第一个span(通常是EntrySpan)的operation 名称匹配到了,那么这个segment 将被忽略;从采样逻辑来看,其作为采样判断的第三道检查(第二道是是否强制采样),如果没有匹配到,则继续按照agent.sample_n_per_3_secs的值来控制采样。
实例:
# /path/? Match any single character
# /path/* Match any number of characters
# /path/** Match any number of characters and support multilevel directories
agent.sample_n_per_3_secs
每3秒钟,采样多少个segment ,超出部分直接丢弃;如果采样率是-1 ,则全采样
agent.span_limit_per_segment
上边的那些参数控制是否采样(是否创建traceSegment)后,而这个参数则用来控制创建了segment后,它里边最多有多少个span,多出的部分丢弃掉。
番外篇forceSample
如果有上游请求,即ContextCarrier不是空,则一定创建此TraceSegment,进而会创建跟此TraceSegment相关的Entryspan、Localspan、Exitspan。
网友评论