This is an automated email from the ASF dual-hosted git repository. wankai pushed a commit to branch polish-mesh-dispatcher in repository https://gitbox.apache.org/repos/asf/skywalking.git
commit 48f2dfbada9caf3b0558915c03d9350a207f5b61 Author: wankai123 <[email protected]> AuthorDate: Tue Nov 12 14:31:13 2024 +0800 Polish mesh data dispatcher: don't generate Instance/Endpoint metrics if they are empty. --- docs/en/changes/changes.md | 1 + .../receiver/mesh/TelemetryDataDispatcher.java | 29 ++++++++++++++++------ 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md index 5402732691..0617ec035e 100644 --- a/docs/en/changes/changes.md +++ b/docs/en/changes/changes.md @@ -18,6 +18,7 @@ * The index type `BanyanDB.IndexRule.IndexType#TREE` is removed. All indices are using `IndexType#INVERTED` now. * Add max query size settings to BanyanDB. * Fix "BanyanDBTraceQueryDAO.queryBasicTraces" doesn't support querying by "trace_id". +* Polish mesh data dispatcher: don't generate Instance/Endpoint metrics if they are empty. #### UI diff --git a/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/TelemetryDataDispatcher.java b/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/TelemetryDataDispatcher.java index 11cdf191ac..e72f28e368 100644 --- a/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/TelemetryDataDispatcher.java +++ b/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/TelemetryDataDispatcher.java @@ -167,15 +167,21 @@ public class TelemetryDataDispatcher { if (org.apache.skywalking.apm.network.common.v3.DetectPoint.server.equals(metrics.getDetectPoint())) { toTCPService(metrics, minuteTimeBucket); - toTCPServiceInstance(metrics, minuteTimeBucket); - toTCPServiceInstanceTraffic(metrics, minuteTimeBucket); + // Don't generate instance metrics, if no dest instance. + if (StringUtil.isNotEmpty(metrics.getDestServiceInstance())) { + toTCPServiceInstance(metrics, minuteTimeBucket); + toTCPServiceInstanceTraffic(metrics, minuteTimeBucket); + } } String sourceService = metrics.getSourceServiceName(); // Don't generate relation, if no source. if (StringUtil.isNotEmpty(sourceService)) { toTCPServiceRelation(metrics, minuteTimeBucket); - toTCPServiceInstanceRelation(metrics, minuteTimeBucket); + // Don't generate instance relation, if no source instance. + if (StringUtil.isNotEmpty(metrics.getSourceServiceInstance())) { + toTCPServiceInstanceRelation(metrics, minuteTimeBucket); + } } } @@ -184,16 +190,25 @@ public class TelemetryDataDispatcher { if (org.apache.skywalking.apm.network.common.v3.DetectPoint.server.equals(metrics.getDetectPoint())) { toService(metrics, minuteTimeBucket); - toServiceInstance(metrics, minuteTimeBucket); - toServiceInstanceTraffic(metrics, minuteTimeBucket); - toEndpoint(metrics, minuteTimeBucket); + // Don't generate instance metrics, if no dest instance. + if (StringUtil.isNotEmpty(metrics.getDestServiceInstance())) { + toServiceInstance(metrics, minuteTimeBucket); + toServiceInstanceTraffic(metrics, minuteTimeBucket); + } + // Don't generate endpoint metrics, if no endpoint. + if (StringUtil.isNotEmpty(metrics.getEndpoint())) { + toEndpoint(metrics, minuteTimeBucket); + } } String sourceService = metrics.getSourceServiceName(); // Don't generate relation, if no source. if (StringUtil.isNotEmpty(sourceService)) { toServiceRelation(metrics, minuteTimeBucket); - toServiceInstanceRelation(metrics, minuteTimeBucket); + // Don't generate instance relation, if no source instance. + if (StringUtil.isNotEmpty(metrics.getSourceServiceInstance())) { + toServiceInstanceRelation(metrics, minuteTimeBucket); + } } }
