You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wa...@apache.org on 2024/11/12 06:32:38 UTC
(skywalking) 01/01: Polish mesh data dispatcher: don't generate Instance/Endpoint metrics if they are empty.
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 <wa...@foxmail.com>
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);
+ }
}
}