This is an automated email from the ASF dual-hosted git repository.
liuhan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new 3320bf91ee Support sort queries on metrics generated by eBPF receiver
(#12539)
3320bf91ee is described below
commit 3320bf91eeb29cea64c66699e42e98da7d012d74
Author: mrproliu <[email protected]>
AuthorDate: Mon Aug 19 09:34:58 2024 +0800
Support sort queries on metrics generated by eBPF receiver (#12539)
---
docs/en/changes/changes.md | 1 +
docs/en/concepts-and-designs/scope-definitions.md | 17 +-----
.../apache/skywalking/oal/rt/grammar/OALLexer.g4 | 1 -
.../apache/skywalking/oal/rt/grammar/OALParser.g4 | 2 +-
.../K8SEndpointCallRelationDispatcher.java | 46 --------------
.../oap/server/core/source/DefaultScopeDefine.java | 1 -
.../oap/server/core/source/K8SEndpoint.java | 3 +
.../server/core/source/K8SEndpointRelation.java | 70 ----------------------
.../oap/server/core/source/K8SService.java | 1 +
.../oap/server/core/source/K8SServiceInstance.java | 3 +
.../core/source/K8SServiceInstanceRelation.java | 4 ++
.../oap/server/core/source/K8SServiceRelation.java | 2 +
.../provider/handler/AccessLogServiceHandler.java | 23 +------
.../profiling/ebpf/access_log/accesslog-cases.yaml | 7 ++-
.../expected/dependency-endpoint-reviews.yml | 40 -------------
.../expected/metrics-sorted-has-value.yml | 28 +++++++++
16 files changed, 50 insertions(+), 199 deletions(-)
diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index ac4b621c13..4ed207c4c4 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -51,6 +51,7 @@
* Fix format the endpoint name with empty string.
* Support async query for the composite GraphQL query.
* Get endpoint list order by timestamp desc.
+* Support sort queries on metrics generated by eBPF receiver.
#### UI
diff --git a/docs/en/concepts-and-designs/scope-definitions.md
b/docs/en/concepts-and-designs/scope-definitions.md
index 1d2e5ab53c..020b10731e 100644
--- a/docs/en/concepts-and-designs/scope-definitions.md
+++ b/docs/en/concepts-and-designs/scope-definitions.md
@@ -529,9 +529,9 @@ following **package**/**protocol** level metric contents.
| destServiceInstanceName | The dest pod name in kubernetes.
| | string |
| destLayer | The dest layer service in kubernetes.
| | string |
-#### Endpoint and Endpoint Relation
+#### Endpoint
-For `K8SEndpoint` and `K8SEndpointRelation`, they only have the following
**protocol** level metric contents.
+For `K8SEndpoint`, they only have the following **protocol** level metric
contents.
| Name | Remarks
| Group Key | Type |
|-------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-----------|----------------------|
@@ -555,19 +555,6 @@ For `K8SEndpoint` and `K8SEndpointRelation`, they only
have the following **prot
| endpointName | The endpoint name detect in kubernetes service. |
| string |
| duration | The duration of the service endpoint response latency. |
| long |
-##### SCOPE `K8SEndpointRelation`
-
-| Name | Remarks
| Group Key | Type |
-|--------------------|--------------------------------------------------------------------|-----------|--------|
-| sourceServiceName | The source service name in kubernetes.
| | string |
-| sourceServiceName | The layer in kubernetes source service.
| | string |
-| sourceEndpointName | The endpoint name detect in kubernetes source service.
| | string |
-| detectPoint | Where the relation is detected. The value may be client
or server. | | enum |
-| componentId | The ID of component used in this call.
| | string |
-| destServiceName | The dest service name in kubernetes.
| | string |
-| destServiceName | The layer in kubernetes dest service.
| | string |
-| destEndpointName | The endpoint name detect in kubernetes dest service.
| | string |
-
### SCOPES with `Cilium` Prefix
All metrics starting with `Cilium` are derived from Cilium monitoring by
Cilium Hubble.
diff --git
a/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALLexer.g4
b/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALLexer.g4
index ea6eb5612c..b625de9b45 100644
---
a/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALLexer.g4
+++
b/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALLexer.g4
@@ -57,7 +57,6 @@ SRC_K8S_SERVICE_INSTANCE: 'K8SServiceInstance';
SRC_K8S_ENDPOINT: 'K8SEndpoint';
SRC_K8S_SERVICE_RELATION: 'K8SServiceRelation';
SRC_K8S_SERVICE_INSTANCE_RELATION: 'K8SServiceInstanceRelation';
-SRC_K8S_ENDPOINT_RELATION: 'K8SEndpointRelation';
SRC_CILIUM_SERVICE: 'CiliumService';
SRC_CILIUM_SERVICE_INSTANCE: 'CiliumServiceInstance';
SRC_CILIUM_ENDPOINT: 'CiliumEndpoint';
diff --git
a/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALParser.g4
b/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALParser.g4
index 153d0c1f84..f44ddb281d 100644
---
a/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALParser.g4
+++
b/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALParser.g4
@@ -58,7 +58,7 @@ source
SRC_BROWSER_APP_PERF | SRC_BROWSER_APP_PAGE_PERF |
SRC_BROWSER_APP_SINGLE_VERSION_PERF |
SRC_BROWSER_APP_TRAFFIC | SRC_BROWSER_APP_PAGE_TRAFFIC |
SRC_BROWSER_APP_SINGLE_VERSION_TRAFFIC |
SRC_EVENT | SRC_MQ_ACCESS | SRC_MQ_ENDPOINT_ACCESS |
- SRC_K8S_SERVICE | SRC_K8S_SERVICE_INSTANCE | SRC_K8S_ENDPOINT |
SRC_K8S_SERVICE_RELATION | SRC_K8S_SERVICE_INSTANCE_RELATION |
SRC_K8S_ENDPOINT_RELATION |
+ SRC_K8S_SERVICE | SRC_K8S_SERVICE_INSTANCE | SRC_K8S_ENDPOINT |
SRC_K8S_SERVICE_RELATION | SRC_K8S_SERVICE_INSTANCE_RELATION |
SRC_CILIUM_SERVICE | SRC_CILIUM_SERVICE_INSTANCE | SRC_CILIUM_ENDPOINT |
SRC_CILIUM_SERVICE_RELATION | SRC_CILIUM_SERVICE_INSTANCE_RELATION |
SRC_CILIUM_ENDPOINT_RELATION
;
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/endpoint/K8SEndpointCallRelationDispatcher.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/endpoint/K8SEndpointCallRelationDispatcher.java
deleted file mode 100644
index af1033539d..0000000000
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/endpoint/K8SEndpointCallRelationDispatcher.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package
org.apache.skywalking.oap.server.core.analysis.manual.relation.endpoint;
-
-import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
-import
org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProcessor;
-import org.apache.skywalking.oap.server.core.source.K8SEndpointRelation;
-
-public class K8SEndpointCallRelationDispatcher implements
SourceDispatcher<K8SEndpointRelation> {
-
- @Override
- public void dispatch(K8SEndpointRelation source) {
- switch (source.getDetectPoint()) {
- case SERVER:
- serverSide(source);
- break;
- default:
- }
- }
-
- private void serverSide(K8SEndpointRelation source) {
- EndpointRelationServerSideMetrics metrics = new
EndpointRelationServerSideMetrics();
- metrics.setTimeBucket(source.getTimeBucket());
- metrics.setSourceEndpoint(source.getSourceEndpointId());
- metrics.setDestEndpoint(source.getDestEndpointId());
- metrics.setComponentId(source.getComponentId());
- metrics.setEntityId(source.getEntityId());
- MetricsStreamProcessor.getInstance().in(metrics);
- }
-}
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
index b7ea73c6ee..9077177882 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
@@ -135,7 +135,6 @@ public class DefaultScopeDefine {
public static final int K8S_SERVICE_RELATION = 74;
public static final int K8S_SERVICE_INSTANCE_RELATION = 75;
public static final int K8S_ENDPOINT = 76;
- public static final int K8S_ENDPOINT_REALATION = 77;
public static final int CILIUM_SERVICE = 78;
public static final int CILIUM_SERVICE_INSTANCE = 79;
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SEndpoint.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SEndpoint.java
index 885831a0cb..9f4715ca29 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SEndpoint.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SEndpoint.java
@@ -31,9 +31,12 @@ import static
org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.K8
public class K8SEndpoint extends K8SMetrics.ProtocolMetrics {
private volatile String entityId;
+ @ScopeDefaultColumn.DefinedByField(columnName = "service_id",
groupByCondInTopN = true)
private String serviceId;
+ @ScopeDefaultColumn.DefinedByField(columnName = "service_name",
requireDynamicActive = true)
private String serviceName;
private Layer layer;
+ @ScopeDefaultColumn.DefinedByField(columnName = "name",
requireDynamicActive = true)
private String endpointName;
private long duration;
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SEndpointRelation.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SEndpointRelation.java
deleted file mode 100644
index b466222ef2..0000000000
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SEndpointRelation.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.skywalking.oap.server.core.source;
-
-import lombok.Data;
-import org.apache.skywalking.oap.server.core.analysis.IDManager;
-import org.apache.skywalking.oap.server.core.analysis.Layer;
-
-import static
org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.ENDPOINT_RELATION_CATALOG_NAME;
-import static
org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.K8S_ENDPOINT_REALATION;
-
-@Data
-@ScopeDeclaration(id = K8S_ENDPOINT_REALATION, name = "K8SEndpointRelation",
catalog = ENDPOINT_RELATION_CATALOG_NAME)
[email protected](fieldName = "entityId", columnName
= "entity_id", isID = true, type = String.class)
-public class K8SEndpointRelation extends K8SMetrics.ProtocolMetrics {
- private volatile String entityId;
-
- private String sourceServiceId;
- private String sourceServiceName;
- private Layer sourceLayer;
- private String sourceEndpointId;
- private String sourceEndpointName;
-
- private DetectPoint detectPoint;
- private int componentId;
-
- private String destServiceId;
- private String destServiceName;
- private Layer destLayer;
- private String destEndpointId;
- private String destEndpointName;
-
- @Override
- public int scope() {
- return K8S_ENDPOINT_REALATION;
- }
-
- @Override
- public String getEntityId() {
- return entityId;
- }
-
- @Override
- public void prepare() {
- sourceServiceId = IDManager.ServiceID.buildId(sourceServiceName,
sourceLayer.isNormal());
- sourceEndpointId = IDManager.EndpointID.buildId(sourceServiceId,
sourceEndpointName);
- destServiceId = IDManager.ServiceID.buildId(destServiceName,
destLayer.isNormal());
- destEndpointId = IDManager.EndpointID.buildId(destServiceId,
destEndpointName);
-
- entityId = IDManager.EndpointID.buildRelationId(new
IDManager.EndpointID.EndpointRelationDefine(
- sourceServiceId, sourceEndpointName, destServiceId,
destEndpointName
- ));
- }
-}
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SService.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SService.java
index c7f4bb57b0..ab0a6e9eb0 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SService.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SService.java
@@ -32,6 +32,7 @@ public class K8SService extends K8SMetrics {
private volatile String entityId;
+ @ScopeDefaultColumn.DefinedByField(columnName = "name",
requireDynamicActive = true)
private String name;
public Layer layer;
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceInstance.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceInstance.java
index 151d90999b..bb9a20292d 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceInstance.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceInstance.java
@@ -31,8 +31,11 @@ import static
org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SE
public class K8SServiceInstance extends K8SMetrics {
private volatile String entityId;
+ @ScopeDefaultColumn.DefinedByField(columnName = "service_id")
private String serviceId;
+ @ScopeDefaultColumn.DefinedByField(columnName = "service_name",
requireDynamicActive = true)
private String serviceName;
+ @ScopeDefaultColumn.DefinedByField(columnName = "name",
requireDynamicActive = true)
private String serviceInstanceName;
public Layer layer;
private DetectPoint detectPoint;
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceInstanceRelation.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceInstanceRelation.java
index 291aa23f03..02eabb4b3c 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceInstanceRelation.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceInstanceRelation.java
@@ -33,16 +33,20 @@ public class K8SServiceInstanceRelation extends K8SMetrics {
private volatile String entityId;
private String sourceServiceId;
+ @ScopeDefaultColumn.DefinedByField(columnName = "source_service_name",
requireDynamicActive = true)
private String sourceServiceName;
private String sourceServiceInstanceId;
+ @ScopeDefaultColumn.DefinedByField(columnName =
"source_service_instance_name", requireDynamicActive = true)
private String sourceServiceInstanceName;
private Layer sourceLayer;
private DetectPoint detectPoint;
private String destServiceId;
+ @ScopeDefaultColumn.DefinedByField(columnName = "dest_service_name",
requireDynamicActive = true)
private String destServiceName;
private String destServiceInstanceId;
+ @ScopeDefaultColumn.DefinedByField(columnName =
"dest_service_instance_name", requireDynamicActive = true)
private String destServiceInstanceName;
private Layer destLayer;
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceRelation.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceRelation.java
index e3dba1bc04..e2ccdeda27 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceRelation.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceRelation.java
@@ -34,6 +34,7 @@ public class K8SServiceRelation extends K8SMetrics {
private volatile String entityId;
private String sourceServiceId;
+ @ScopeDefaultColumn.DefinedByField(columnName = "source_name",
requireDynamicActive = true)
private String sourceServiceName;
private Layer sourceLayer;
@@ -42,6 +43,7 @@ public class K8SServiceRelation extends K8SMetrics {
private AccessLogConnectionTLSMode tlsMode;
private String destServiceId;
+ @ScopeDefaultColumn.DefinedByField(columnName = "dest_name",
requireDynamicActive = true)
private String destServiceName;
private Layer destLayer;
diff --git
a/oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/AccessLogServiceHandler.java
b/oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/AccessLogServiceHandler.java
index 9d6b769b22..7a0e68b158 100644
---
a/oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/AccessLogServiceHandler.java
+++
b/oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/AccessLogServiceHandler.java
@@ -52,7 +52,6 @@ import org.apache.skywalking.oap.server.core.analysis.Layer;
import org.apache.skywalking.oap.server.core.analysis.TimeBucket;
import org.apache.skywalking.oap.server.core.config.NamingControl;
import org.apache.skywalking.oap.server.core.source.K8SEndpoint;
-import org.apache.skywalking.oap.server.core.source.K8SEndpointRelation;
import org.apache.skywalking.oap.server.core.source.K8SMetrics;
import org.apache.skywalking.oap.server.core.source.K8SService;
import org.apache.skywalking.oap.server.core.source.K8SServiceInstance;
@@ -332,7 +331,7 @@ public class AccessLogServiceHandler extends
EBPFAccessLogServiceGrpc.EBPFAccess
// endpoint, endpoint relation
final String endpointName = buildProtocolEndpointName(connection,
protocolLog);
- Stream.of(connection.toEndpoint(endpointName, success, duration),
connection.toEndpointRelation(endpointName, success))
+ Stream.of(connection.toEndpoint(endpointName, success, duration))
.filter(Objects::nonNull)
.forEach(metric -> {
metric.setType(protocol.getType());
@@ -648,26 +647,6 @@ public class AccessLogServiceHandler extends
EBPFAccessLogServiceGrpc.EBPFAccess
return endpoint;
}
- public K8SEndpointRelation toEndpointRelation(String endpointName,
boolean success) {
- final Tuple2<KubernetesProcessAddress, KubernetesProcessAddress>
tuple = convertSourceAndDestAddress();
- final String sourceServiceName =
buildServiceNameByAddress(nodeInfo, tuple._1);
- final String destServiceName = buildServiceNameByAddress(nodeInfo,
tuple._2);
-
- final K8SEndpointRelation endpointRelation = new
K8SEndpointRelation();
- endpointRelation.setSourceServiceName(sourceServiceName);
-
endpointRelation.setSourceEndpointName(namingControl.formatEndpointName(sourceServiceName,
endpointName));
- endpointRelation.setSourceLayer(Layer.K8S_SERVICE);
-
- endpointRelation.setDetectPoint(parseToSourceRole());
- endpointRelation.setComponentId(buildComponentId());
-
- endpointRelation.setDestServiceName(destServiceName);
-
endpointRelation.setDestEndpointName(namingControl.formatEndpointName(destServiceName,
endpointName));
- endpointRelation.setDestLayer(Layer.K8S_SERVICE);
- endpointRelation.setSuccess(success);
- return endpointRelation;
- }
-
private int buildComponentId() {
boolean isTLS = tlsMode == AccessLogConnectionTLSMode.TLS;
switch (protocolType) {
diff --git a/test/e2e-v2/cases/profiling/ebpf/access_log/accesslog-cases.yaml
b/test/e2e-v2/cases/profiling/ebpf/access_log/accesslog-cases.yaml
index 50a5603362..56f89cc351 100644
--- a/test/e2e-v2/cases/profiling/ebpf/access_log/accesslog-cases.yaml
+++ b/test/e2e-v2/cases/profiling/ebpf/access_log/accesslog-cases.yaml
@@ -32,9 +32,6 @@ cases:
# service endpoints
- query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
endpoint list --service-name=details.default
expected: expected/service-endpoint-reviews.yml
- # endpoints topology
- - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
dependency endpoint --service-name=details.default --endpoint-name=/details/0
- expected: expected/dependency-endpoint-reviews.yml
# service level metrics
- query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_connect_cpm
--service-name=productpage.default
@@ -91,12 +88,16 @@ cases:
instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name reviews.default | yq '.[0].name' -)
swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_instance_http_call_cpm
--service-name=reviews.default --instance-name=$instance_name
expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec
--expression="top_n(kubernetes_service_instance_write_l4_duration,10,des)"
--service-name=details.default
+ expected: expected/metrics-sorted-has-value.yml
# service endpoint level metrics
- query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_endpoint_call_cpm
--service-name=details.default --endpoint-name=/details/0
expected: expected/metrics-has-value.yml
- query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_endpoint_http_call_cpm
--service-name=details.default --endpoint-name=/details/0
expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec
--expression="top_n(kubernetes_service_endpoint_call_duration,10,des)"
--service-name=details.default
+ expected: expected/metrics-sorted-has-value.yml
# service relation metrics
- query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_relation_connect_cpm
--service-name=productpage.default --dest-service-name=details.default
diff --git
a/test/e2e-v2/cases/profiling/ebpf/access_log/expected/dependency-endpoint-reviews.yml
b/test/e2e-v2/cases/profiling/ebpf/access_log/expected/dependency-endpoint-reviews.yml
deleted file mode 100644
index a0bc6766a3..0000000000
---
a/test/e2e-v2/cases/profiling/ebpf/access_log/expected/dependency-endpoint-reviews.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-nodes:
-{{- contains .nodes }}
-- id: {{ b64enc "productpage.default" }}.1_{{ b64enc "/details/0" }}
- name: /details/0
- serviceid: {{ b64enc "productpage.default" }}.1
- servicename: productpage.default
- type: ""
- isreal: true
-- id: {{ b64enc "details.default" }}.1_{{ b64enc "/details/0" }}
- name: /details/0
- serviceid: {{ b64enc "details.default" }}.1
- servicename: details.default
- type: ""
- isreal: true
-{{- end }}
-calls:
-{{- contains .calls }}
-- source: {{ b64enc "productpage.default" }}.1_{{ b64enc "/details/0" }}
- sourcecomponents: []
- target: {{ b64enc "details.default" }}.1_{{ b64enc "/details/0" }}
- targetcomponents: []
- id: {{ b64enc "productpage.default" }}.1-{{ b64enc "/details/0" }}-{{ b64enc
"details.default" }}.1-{{ b64enc "/details/0" }}
- detectpoints:
- - SERVER
-{{- end }}
diff --git
a/test/e2e-v2/cases/profiling/ebpf/access_log/expected/metrics-sorted-has-value.yml
b/test/e2e-v2/cases/profiling/ebpf/access_log/expected/metrics-sorted-has-value.yml
new file mode 100644
index 0000000000..09aa529344
--- /dev/null
+++
b/test/e2e-v2/cases/profiling/ebpf/access_log/expected/metrics-sorted-has-value.yml
@@ -0,0 +1,28 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+type: SORTED_LIST
+results:
+ {{- contains .results }}
+ - metric:
+ labels: []
+ values:
+ {{- contains .values }}
+ - id: {{ notEmpty .id }}
+ value: {{ .value }}
+ traceid: null
+ {{- end}}
+ {{- end}}
+error: null
\ No newline at end of file