diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceModuleProvider.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceModuleProvider.java index e346503a9..a47ec32ea 100644 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceModuleProvider.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceModuleProvider.java @@ -63,15 +63,19 @@ public class TraceModuleProvider extends ModuleProvider { moduleConfig.setDbLatencyThresholds(new DBLatencyThresholds(moduleConfig.getSlowDBAccessThreshold())); SegmentParserListenerManager listenerManager = new SegmentParserListenerManager(); - listenerManager.add(new MultiScopesSpanListener.Factory()); - listenerManager.add(new ServiceMappingSpanListener.Factory()); + if (moduleConfig.isTraceAnalysis()) { + listenerManager.add(new MultiScopesSpanListener.Factory()); + listenerManager.add(new ServiceMappingSpanListener.Factory()); + } listenerManager.add(new SegmentSpanListener.Factory(moduleConfig.getSampleRate())); segmentProducer = new SegmentParse.Producer(getManager(), listenerManager, moduleConfig); listenerManager = new SegmentParserListenerManager(); - listenerManager.add(new MultiScopesSpanListener.Factory()); - listenerManager.add(new ServiceMappingSpanListener.Factory()); + if (moduleConfig.isTraceAnalysis()) { + listenerManager.add(new MultiScopesSpanListener.Factory()); + listenerManager.add(new ServiceMappingSpanListener.Factory()); + } listenerManager.add(new SegmentSpanListener.Factory(moduleConfig.getSampleRate())); segmentProducerV2 = new SegmentParseV2.Producer(getManager(), listenerManager, moduleConfig); diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceServiceModuleConfig.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceServiceModuleConfig.java index 8ebeec613..fce1ca7ea 100644 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceServiceModuleConfig.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceServiceModuleConfig.java @@ -39,4 +39,12 @@ public class TraceServiceModuleConfig extends ModuleConfig { */ @Setter @Getter private String slowDBAccessThreshold = "default:200"; @Setter @Getter private DBLatencyThresholds dbLatencyThresholds; + /** + * Analysis trace status. + * + * 1. Default(YES) means analysis all metric from trace. + * + * 2. NO means, only save trace, but metrics come other places, such as service mesh. + */ + @Setter @Getter private boolean traceAnalysis = true; }