This is an automated email from the ASF dual-hosted git repository.
wusheng 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 d3f8fe894d Add SkyWalking Java Agent self observability dashboard
(#12622)
d3f8fe894d is described below
commit d3f8fe894d1a206164b73f5b523d2eb62d9e9965
Author: Chen Ziyan <[email protected]>
AuthorDate: Mon Sep 16 19:00:35 2024 +0800
Add SkyWalking Java Agent self observability dashboard (#12622)
* Add SkyWalking Java Agent self observability dashboard.
* add e2e testcase, sync ui, add tips.
* update e2e kafka testcase.
---
docs/en/changes/changes.md | 1 +
.../setup/backend/dashboards-so11y-java-agent.md | 32 ++++
docs/menu.yml | 2 +
.../skywalking/oap/server/core/analysis/Layer.java | 8 +-
.../ui/template/UITemplateInitializer.java | 1 +
.../src/main/resources/application.yml | 2 +-
.../meter-analyzer-config/java-agent.yaml | 32 ++++
.../resources/ui-initialized-templates/menu.yaml | 5 +
.../so11y_java_agent/so11y-instance.json | 202 +++++++++++++++++++++
.../so11y_java_agent/so11y-service.json | 62 +++++++
skywalking-ui | 2 +-
test/e2e-v2/cases/kafka/profile/docker-compose.yml | 1 +
.../cases/kafka/simple-so11y/docker-compose.yml | 2 +
test/e2e-v2/cases/meter/docker-compose.yml | 3 +-
....yml => metrics-has-value-label-created_by.yml} | 45 ++---
.../metrics-has-value-label-percentile.yml | 72 ++++++++
test/e2e-v2/cases/meter/expected/service.yml | 17 +-
test/e2e-v2/cases/meter/meter-cases.yaml | 12 ++
.../skywalking/e2e/controller/UserController.java | 11 +-
test/e2e-v2/script/docker-compose/base-compose.yml | 2 +
test/e2e-v2/script/env | 2 +-
21 files changed, 477 insertions(+), 39 deletions(-)
diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index 0e5e806f81..33626b5389 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -66,6 +66,7 @@
* Fix `findEndpoint` query require `keyword` when using BanyanDB.
* Support to analysis the ztunnel mapped IP address in eBPF Access Log
Receiver.
* Adapt BanyanDB Java Client 0.7.0-rc3.
+* Add SkyWalking Java Agent self observability dashboard.
#### UI
diff --git a/docs/en/setup/backend/dashboards-so11y-java-agent.md
b/docs/en/setup/backend/dashboards-so11y-java-agent.md
new file mode 100644
index 0000000000..45a584a86d
--- /dev/null
+++ b/docs/en/setup/backend/dashboards-so11y-java-agent.md
@@ -0,0 +1,32 @@
+# Java Agent self observability dashboard
+
+SkyWalking java agent reports itself metrics by Meter APIS in order to measure
tracing performance.
+it also provides a dashboard to visualize the agent metrics.
+
+## Data flow
+1. SkyWalking java agent reports metrics data internally and automatically.
+2. SkyWalking OAP accept these meters through native protocols.
+3. The SkyWalking OAP Server parses the expression with
[MAL](../../concepts-and-designs/mal.md) to filter/calculate/aggregate and
store the results.
+
+## Set up
+Java Agent so11y is a build-in feature, it reports meters automatically after
boot.
+
+## Self observability monitoring
+Self observability monitoring provides monitoring of the runtime performance
of the java agent itself. `agent.service_name` is a `Service` in Agent so11y,
and land on the `Layer: SO11Y_JAVA_AGENT`.
+
+### Self observability metrics
+
+| Unit | Metric Name
| Description | Data Source |
+|-------------------|----------------------------------------------------------------|---------------------------------------------|-----------------------|
+| Count Per Minute | meter_java_agent_created_tracing_context_count
| Created Tracing Context Count (Per Minute) | SkyWalking Java Agent |
+| Count Per Minute | meter_java_agent_finished_tracing_context_count
| Finished Tracing Context Count (Per Minute) | SkyWalking Java Agent |
+| Count Per Minute | meter_java_agent_created_ignored_context_count
| Created Ignored Context Count (Per Minute) | SkyWalking Java Agent |
+| Count Per Minute | meter_java_agent_finished_ignored_context_count
| Finished Ignored Context Count (Per Minute) | SkyWalking Java Agent |
+| Count Per Minute | meter_java_agent_possible_leaked_context_count
| Possible Leak Context Count (Per Minute) | SkyWalking Java Agent |
+| Count Per Minute | meter_java_agent_interceptor_error_count
| Interceptor Error Count (Per Minute) | SkyWalking Java Agent |
+| ns |
meter_java_agent_tracing_context_execution_time_percentile | Tracing
Context Execution Time (ns) | SkyWalking Java Agent |
+
+## Customizations
+You can customize your own metrics/expression/dashboard panel.
+The metrics definition and expression rules are found in
`/meter-analyzer-config/java-agent.yaml`
+The self observability dashboard panel configurations are found in
`/config/ui-initialized-templates/so11y_java_agent`.
diff --git a/docs/menu.yml b/docs/menu.yml
index 50e0a29277..88be59dac0 100644
--- a/docs/menu.yml
+++ b/docs/menu.yml
@@ -146,6 +146,8 @@ catalog:
path: "/en/setup/backend/dashboards-so11y"
- name: "Satellite self telemetry"
path: "/en/setup/backend/dashboards-so11y-satellite"
+ - name: "SkyWalking Java Agent self telemetry"
+ path: "/en/setup/backend/dashboards-so11y-java-agent"
- name: "Configuration Vocabulary"
path: "/en/setup/backend/configuration-vocabulary"
- name: "Advanced Setup"
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/Layer.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/Layer.java
index 0f9b6b8f80..0eb61a9bc6 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/Layer.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/Layer.java
@@ -234,7 +234,13 @@ public enum Layer {
* Cilium is open source software for providing and transparently securing
network connectivity and load balancing
* between application workloads such as application containers or
processes.
*/
- CILIUM_SERVICE(38, true);
+ CILIUM_SERVICE(38, true),
+
+ /**
+ * The self observability of SkyWalking Java Agent,
+ * which provides the abilities to measure the tracing performance and
error statistics of plugins.
+ */
+ SO11Y_JAVA_AGENT(39, true);
private final int value;
/**
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateInitializer.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateInitializer.java
index 7c11cee66a..58dcbd8328 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateInitializer.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateInitializer.java
@@ -76,6 +76,7 @@ public class UITemplateInitializer {
Layer.CLICKHOUSE.name(),
Layer.ACTIVEMQ.name(),
Layer.CILIUM_SERVICE.name(),
+ Layer.SO11Y_JAVA_AGENT.name(),
"custom"
};
private final UITemplateManagementService uiTemplateManagementService;
diff --git a/oap-server/server-starter/src/main/resources/application.yml
b/oap-server/server-starter/src/main/resources/application.yml
index 44c825a3bd..33c1607038 100644
--- a/oap-server/server-starter/src/main/resources/application.yml
+++ b/oap-server/server-starter/src/main/resources/application.yml
@@ -269,7 +269,7 @@ agent-analyzer:
# Nginx and Envoy agents can't get the real remote address.
# Exit spans with the component in the list would not generate the
client-side instance relation metrics.
noUpstreamRealAddressAgents: ${SW_NO_UPSTREAM_REAL_ADDRESS:6000,9000}
- meterAnalyzerActiveFiles:
${SW_METER_ANALYZER_ACTIVE_FILES:datasource,threadpool,satellite,go-runtime,python-runtime,continuous-profiling}
# Which files could be meter analyzed, files split by ","
+ meterAnalyzerActiveFiles:
${SW_METER_ANALYZER_ACTIVE_FILES:datasource,threadpool,satellite,go-runtime,python-runtime,continuous-profiling,java-agent}
# Which files could be meter analyzed, files split by ","
slowCacheReadThreshold:
${SW_SLOW_CACHE_SLOW_READ_THRESHOLD:default:20,redis:10} # The slow cache read
operation thresholds. Unit ms.
slowCacheWriteThreshold:
${SW_SLOW_CACHE_SLOW_WRITE_THRESHOLD:default:20,redis:10} # The slow cache
write operation thresholds. Unit ms.
diff --git
a/oap-server/server-starter/src/main/resources/meter-analyzer-config/java-agent.yaml
b/oap-server/server-starter/src/main/resources/meter-analyzer-config/java-agent.yaml
new file mode 100644
index 0000000000..4086f66e3e
--- /dev/null
+++
b/oap-server/server-starter/src/main/resources/meter-analyzer-config/java-agent.yaml
@@ -0,0 +1,32 @@
+# 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.
+
+expSuffix: instance(['service'], ['instance'], Layer.SO11Y_JAVA_AGENT)
+metricPrefix: meter_java_agent
+metricsRules:
+ - name: created_tracing_context_count
+ exp: created_tracing_context_counter.sum(['created_by', 'service',
'instance']).increase('PT1M')
+ - name: finished_tracing_context_count
+ exp: finished_tracing_context_counter.sum(['service',
'instance']).increase('PT1M')
+ - name: created_ignored_context_count
+ exp: created_ignored_context_counter.sum(['created_by', 'service',
'instance']).increase('PT1M')
+ - name: finished_ignored_context_count
+ exp: finished_ignored_context_counter.sum(['service',
'instance']).increase('PT1M')
+ - name: possible_leaked_context_count
+ exp: possible_leaked_context_counter.sum(['source', 'service',
'instance']).increase('PT1M')
+ - name: interceptor_error_count
+ exp: interceptor_error_counter.sum(['plugin_name', 'inter_type',
'service', 'instance']).increase('PT1M')
+ - name: tracing_context_execution_time_percentile
+ exp: tracing_context_performance.sum(['le', 'service',
'instance']).histogram().histogram_percentile([50,70,90,99])
diff --git
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml
index 6d0696d283..7dcf95350b 100644
---
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml
+++
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml
@@ -247,3 +247,8 @@ menus:
description: "Satellite: an open-source agent designed for the
cloud-native infrastructures, which provides a low-cost, high-efficient, and
more secure way to collect telemetry data. It is the recommended load balancer
for telemetry collecting."
documentLink:
https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-load-balancer/
i18nKey: self_observability_satellite
+ - title: SkyWalking Java Agent
+ layer: SO11Y_JAVA_AGENT
+ description: The Java Agent for Apache SkyWalking, which provides the
native tracing/metrics/logging/event/profiling abilities for Java projects.
+ documentLink:
https://skywalking.apache.org/docs/main/next/en/setup/backend/dashboards-so11y-java-agent/
+ i18nKey: self_observability_java_agent
diff --git
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_java_agent/so11y-instance.json
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_java_agent/so11y-instance.json
new file mode 100644
index 0000000000..4b87cbbb5d
--- /dev/null
+++
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_java_agent/so11y-instance.json
@@ -0,0 +1,202 @@
+[
+ {
+ "id": "Self-Observability-Java-Agent-Instance",
+ "configuration": {
+ "children": [
+ {
+ "x": 0,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "14",
+ "type": "Widget",
+ "widget": {
+ "title": "Tracing Context Creation (Per Minute)",
+ "tips": "The number of created tracing contexts, including a label
created_by(value=sampler,propagated)."
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": true,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "expressions": [
+ "meter_java_agent_created_tracing_context_count"
+ ]
+ },
+ {
+ "x": 6,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "6",
+ "type": "Widget",
+ "widget": {
+ "title": "Tracing Context Creation and Completion (Per Minute)",
+ "tips": "The number of created tracing contexts and finished
tracing contexts."
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": true,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "metricConfig": [
+ {
+ "label": "Creation"
+ },
+ {
+ "label": "Completion"
+ }
+ ],
+ "expressions": [
+
"aggregate_labels(meter_java_agent_created_tracing_context_count,sum)",
+ "meter_java_agent_finished_tracing_context_count"
+ ]
+ },
+ {
+ "x": 12,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "1",
+ "type": "Widget",
+ "widget": {
+ "title": "Ignored Context Creation (Per Minute)",
+ "tips": "The number of created ignored contexts, including a label
created_by(value=sampler,propagated)."
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": true,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "expressions": [
+ "meter_java_agent_created_ignored_context_count"
+ ]
+ },
+ {
+ "x": 18,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "2",
+ "type": "Widget",
+ "widget": {
+ "title": "Ignored Context Creation and Completion (Per Minute)",
+ "tips": "The number of created ignored contexts and finished
ignored contexts."
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": true,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "expressions": [
+
"aggregate_labels(meter_java_agent_created_ignored_context_count,sum)",
+ "meter_java_agent_finished_ignored_context_count"
+ ],
+ "metricConfig": [
+ {
+ "label": "Creation"
+ },
+ {
+ "label": "Completion"
+ }
+ ]
+ },
+ {
+ "x": 0,
+ "y": 13,
+ "w": 6,
+ "h": 13,
+ "i": "11",
+ "type": "Widget",
+ "widget": {
+ "title": "Possible Leaked Context (Per Minute)",
+ "tips": "The number of detected leaked contexts, including a label
source(value=tracing, ignore)."
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": true,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "expressions": [
+ "meter_java_agent_possible_leaked_context_count"
+ ],
+ "metricConfig": [
+ {
+ "label": "count"
+ }
+ ]
+ },
+ {
+ "x": 12,
+ "y": 13,
+ "w": 12,
+ "h": 13,
+ "i": "8",
+ "type": "Widget",
+ "widget": {
+ "title": "Interceptor Error Count (Per Minute)",
+ "tips": "The number of errors happened in the interceptor logic,
including the label plugin_name and inter_type(constructor, inst, static)."
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": true,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "expressions": [
+ "meter_java_agent_interceptor_error_count"
+ ],
+ "metricConfig": [
+ {
+ "label": "count"
+ }
+ ]
+ },
+ {
+ "x": 6,
+ "y": 13,
+ "w": 6,
+ "h": 13,
+ "i": "15",
+ "type": "Widget",
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": true,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "widget": {
+ "title": "Tracing Context Execution time (ms)",
+ "tips": "For successfully finished tracing context, it measures
every interceptor's time cost."
+ },
+ "expressions": [
+
"relabels(meter_java_agent_tracing_context_execution_time_percentile,p='50,75,90,95,99',p='50,75,90,95,99')/1000000"
+ ]
+ }
+ ],
+ "layer": "SO11Y_JAVA_AGENT",
+ "entity": "ServiceInstance",
+ "name": "Self-Observability-Java-Agent-Instance",
+ "isRoot": false
+ }
+ }
+]
\ No newline at end of file
diff --git
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_java_agent/so11y-service.json
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_java_agent/so11y-service.json
new file mode 100644
index 0000000000..9967dcef92
--- /dev/null
+++
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_java_agent/so11y-service.json
@@ -0,0 +1,62 @@
+[
+ {
+ "id": "Self-Observability-Java-Agent-Service",
+ "configuration": {
+ "children": [
+ {
+ "x": 0,
+ "y": 2,
+ "w": 24,
+ "h": 38,
+ "i": "0",
+ "type": "Widget",
+ "graph": {
+ "type": "InstanceList",
+ "dashboardName": "Self-Observability-Java-Agent-Instance",
+ "fontSize": 12
+ },
+ "metricConfig": [
+ {
+ "label": "Context Creation",
+ "detailLabel": "context_creation",
+ "unit": "Per Minute"
+ },
+ {
+ "label": "Context Completion",
+ "unit": "Per Minute",
+ "detailLabel": "context_completion"
+ }
+ ],
+ "expressions": [
+
"avg(aggregate_labels(meter_java_agent_created_tracing_context_count,sum)+aggregate_labels(meter_java_agent_created_ignored_context_count,sum))",
+
"avg(meter_java_agent_finished_tracing_context_count+meter_java_agent_finished_ignored_context_count)"
+ ],
+ "subExpressions": [
+
"aggregate_labels(meter_java_agent_created_tracing_context_count,sum)+aggregate_labels(meter_java_agent_created_ignored_context_count,sum)",
+
"meter_java_agent_finished_tracing_context_count+meter_java_agent_finished_ignored_context_count"
+ ]
+ },
+ {
+ "x": 0,
+ "y": 0,
+ "w": 24,
+ "h": 2,
+ "i": "100",
+ "type": "Text",
+ "graph": {
+ "fontColor": "theme",
+ "backgroundColor": "theme",
+ "content": "The self observability of SkyWalking Java Agent, which
provides the abilities to measure the tracing performance and error statistics
of plugins.",
+ "fontSize": 14,
+ "textAlign": "left",
+ "url":
"https://skywalking.apache.org/docs/main/next/en/setup/backend/dashboards-so11y-java-agent/"
+ }
+ }
+ ],
+ "layer": "SO11Y_JAVA_AGENT",
+ "entity": "Service",
+ "name": "Self-Observability-Java-Agent-Service",
+ "isRoot": true
+ }
+ }
+]
\ No newline at end of file
diff --git a/skywalking-ui b/skywalking-ui
index ed0ec0ac1f..e251626374 160000
--- a/skywalking-ui
+++ b/skywalking-ui
@@ -1 +1 @@
-Subproject commit ed0ec0ac1fec730f382915bf55a87e14b4c9f4e3
+Subproject commit e251626374e31eb26d314d32caf74bf1ed6cb19b
diff --git a/test/e2e-v2/cases/kafka/profile/docker-compose.yml
b/test/e2e-v2/cases/kafka/profile/docker-compose.yml
index b65813007e..1d8924a552 100644
--- a/test/e2e-v2/cases/kafka/profile/docker-compose.yml
+++ b/test/e2e-v2/cases/kafka/profile/docker-compose.yml
@@ -107,6 +107,7 @@ services:
SW_AGENT_INSTANCE_NAME: provider1
SW_LOGGING_OUTPUT: CONSOLE
SW_METER_REPORT_INTERVAL: 5
+ SW_METER_ACTIVE: 'false'
depends_on:
oap:
condition: service_healthy
diff --git a/test/e2e-v2/cases/kafka/simple-so11y/docker-compose.yml
b/test/e2e-v2/cases/kafka/simple-so11y/docker-compose.yml
index be85b5694c..ee549ffd22 100644
--- a/test/e2e-v2/cases/kafka/simple-so11y/docker-compose.yml
+++ b/test/e2e-v2/cases/kafka/simple-so11y/docker-compose.yml
@@ -108,6 +108,7 @@ services:
SW_AGENT_NAME: e2e-service-provider
SW_AGENT_INSTANCE_NAME: provider1
SW_LOGGING_OUTPUT: CONSOLE
+ SW_METER_ACTIVE: 'false'
healthcheck:
test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/9090"]
interval: 5s
@@ -127,6 +128,7 @@ services:
service: consumer
environment:
PROVIDER_URL: http://provider:9090
+ SW_METER_ACTIVE: 'false'
ports:
- 9092
depends_on:
diff --git a/test/e2e-v2/cases/meter/docker-compose.yml
b/test/e2e-v2/cases/meter/docker-compose.yml
index c2f919abdc..fe09ee79ad 100644
--- a/test/e2e-v2/cases/meter/docker-compose.yml
+++ b/test/e2e-v2/cases/meter/docker-compose.yml
@@ -18,7 +18,7 @@ version: '2.1'
services:
oap:
environment:
- SW_METER_ANALYZER_ACTIVE_FILES: spring-micrometer,batch-meter
+ SW_METER_ANALYZER_ACTIVE_FILES: spring-micrometer,batch-meter,java-agent
#virtual cache test case
SW_SLOW_CACHE_SLOW_WRITE_THRESHOLD: default:-1
SW_SLOW_CACHE_SLOW_READ_THRESHOLD: default:-1
@@ -37,6 +37,7 @@ services:
service: provider
environment:
SW_METER_REPORT_INTERVAL: 5
+ SW_METER_ACTIVE: 'true'
# Activate guava-cache plugin for virtual cache test case
command: ["bash" , "-c" , "cp
/skywalking/agent/optional-plugins/apm-guava-cache-plugin*.jar
/skywalking/agent/plugins/ && java -jar /services_provider.jar"]
depends_on:
diff --git a/test/e2e-v2/cases/meter/expected/service.yml
b/test/e2e-v2/cases/meter/expected/metrics-has-value-label-created_by.yml
similarity index 61%
copy from test/e2e-v2/cases/meter/expected/service.yml
copy to test/e2e-v2/cases/meter/expected/metrics-has-value-label-created_by.yml
index c8338ac78d..7df745c2a4 100644
--- a/test/e2e-v2/cases/meter/expected/service.yml
+++ b/test/e2e-v2/cases/meter/expected/metrics-has-value-label-created_by.yml
@@ -13,28 +13,23 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-{{- contains . }}
-- id: {{ b64enc "e2e-service-provider" }}.1
- name: e2e-service-provider
- group: ""
- shortname: e2e-service-provider
- normal: true
- layers:
- - GENERAL
-
-- id: {{ b64enc "localhost:-1" }}.0
- name: localhost:-1
- group: ""
- shortname: localhost:-1
- normal: false
- layers:
- - VIRTUAL_DATABASE
-
-- id: {{ b64enc "GuavaCache-local" }}.0
- name: GuavaCache-local
- group: ""
- shortname: GuavaCache-local
- normal: false
- layers:
- - VIRTUAL_CACHE
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+ {{- contains .results }}
+ - metric:
+ labels:
+ {{- contains .metric.labels }}
+ - key: created_by
+ value: {{ .value }}
+ {{- end}}
+ values:
+ {{- contains .values }}
+ - id: {{ notEmpty .id }}
+ value: {{ .value }}
+ traceid: null
+ - id: {{ notEmpty .id }}
+ value: null
+ traceid: null
+ {{- end}}
+ {{- end}}
+error: null
diff --git
a/test/e2e-v2/cases/meter/expected/metrics-has-value-label-percentile.yml
b/test/e2e-v2/cases/meter/expected/metrics-has-value-label-percentile.yml
new file mode 100644
index 0000000000..70aa421de6
--- /dev/null
+++ b/test/e2e-v2/cases/meter/expected/metrics-has-value-label-percentile.yml
@@ -0,0 +1,72 @@
+# 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: TIME_SERIES_VALUES
+results:
+ {{- contains .results }}
+- metric:
+ labels:
+ - key: p
+ value: "50"
+ values:
+ {{- contains .values }}
+ - id: {{ notEmpty .id }}
+ value: {{ .value }}
+ traceid: null
+ - id: {{ notEmpty .id }}
+ value: null
+ traceid: null
+ {{- end}}
+- metric:
+ labels:
+ - key: p
+ value: "70"
+ values:
+ {{- contains .values }}
+ - id: {{ notEmpty .id }}
+ value: {{ .value }}
+ traceid: null
+ - id: {{ notEmpty .id }}
+ value: null
+ traceid: null
+ {{- end}}
+- metric:
+ labels:
+ - key: p
+ value: "90"
+ values:
+ {{- contains .values }}
+ - id: {{ notEmpty .id }}
+ value: {{ .value }}
+ traceid: null
+ - id: {{ notEmpty .id }}
+ value: null
+ traceid: null
+ {{- end}}
+- metric:
+ labels:
+ - key: p
+ value: "99"
+ values:
+ {{- contains .values }}
+ - id: {{ notEmpty .id }}
+ value: {{ .value }}
+ traceid: null
+ - id: {{ notEmpty .id }}
+ value: null
+ traceid: null
+ {{- end}}
+ {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/meter/expected/service.yml
b/test/e2e-v2/cases/meter/expected/service.yml
index c8338ac78d..7ae27c8244 100644
--- a/test/e2e-v2/cases/meter/expected/service.yml
+++ b/test/e2e-v2/cases/meter/expected/service.yml
@@ -14,14 +14,6 @@
# limitations under the License.
{{- contains . }}
-- id: {{ b64enc "e2e-service-provider" }}.1
- name: e2e-service-provider
- group: ""
- shortname: e2e-service-provider
- normal: true
- layers:
- - GENERAL
-
- id: {{ b64enc "localhost:-1" }}.0
name: localhost:-1
group: ""
@@ -30,6 +22,15 @@
layers:
- VIRTUAL_DATABASE
+- id: {{ b64enc "e2e-service-provider" }}.1
+ name: e2e-service-provider
+ group: ""
+ shortname: e2e-service-provider
+ normal: true
+ layers:
+ - SO11Y_JAVA_AGENT
+ - GENERAL
+
- id: {{ b64enc "GuavaCache-local" }}.0
name: GuavaCache-local
group: ""
diff --git a/test/e2e-v2/cases/meter/meter-cases.yaml
b/test/e2e-v2/cases/meter/meter-cases.yaml
index c5c5bfbe47..d024f391e5 100644
--- a/test/e2e-v2/cases/meter/meter-cases.yaml
+++ b/test/e2e-v2/cases/meter/meter-cases.yaml
@@ -49,3 +49,15 @@
- query: |
swctl --display yaml
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec
--expression=database_access_resp_time --service-id=bG9jYWxob3N0Oi0x.0
expected: expected/metrics-has-value.yml
+ # agent so11y
+ - query: swctl --display yaml
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec
--expression=meter_java_agent_created_tracing_context_count
--instance-name=provider1 --service-name=e2e-service-provider
+ expected: expected/metrics-has-value-label-created_by.yml
+ - query: swctl --display yaml
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec
--expression=meter_java_agent_finished_tracing_context_count
--instance-name=provider1 --service-name=e2e-service-provider
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec
--expression=meter_java_agent_created_ignored_context_count
--instance-name=provider1 --service-name=e2e-service-provider
+ expected: expected/metrics-has-value-label-created_by.yml
+ - query: swctl --display yaml
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec
--expression=meter_java_agent_finished_ignored_context_count
--instance-name=provider1 --service-name=e2e-service-provider
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec
--expression=meter_java_agent_tracing_context_execution_time_percentile
--instance-name=provider1 --service-name=e2e-service-provider
+ expected: expected/metrics-has-value-label-percentile.yml
+
diff --git
a/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/UserController.java
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/UserController.java
index 55d4cf4e59..497b006776 100644
---
a/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/UserController.java
+++
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/UserController.java
@@ -20,11 +20,14 @@ package org.apache.skywalking.e2e.controller;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
+import java.io.IOException;
+import java.net.URL;
import lombok.RequiredArgsConstructor;
import org.apache.skywalking.apm.toolkit.trace.TraceContext;
import org.apache.skywalking.e2e.User;
import org.apache.skywalking.e2e.UserRepo;
import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -59,13 +62,19 @@ public class UserController {
}
@PostMapping("/users")
- public User createAuthor(@RequestBody final User user) throws
InterruptedException {
+ public User createAuthor(@RequestBody final User user) throws
InterruptedException, IOException {
Thread.sleep(randomSleepLong(sleepMin, sleepMax));
+ new URL("http://localhost:9090/ignore.html").getContent();
//virtual cache test case
testCacheService();
return userRepo.save(user);
}
+ @GetMapping("/ignore.html")
+ public String ignore() {
+ return "success";
+ }
+
@PostMapping("/correlation")
public String correlation() throws InterruptedException {
Thread.sleep(randomSleepLong(sleepMin, sleepMax));
diff --git a/test/e2e-v2/script/docker-compose/base-compose.yml
b/test/e2e-v2/script/docker-compose/base-compose.yml
index 6ffc9c0237..8648cc0141 100644
--- a/test/e2e-v2/script/docker-compose/base-compose.yml
+++ b/test/e2e-v2/script/docker-compose/base-compose.yml
@@ -82,6 +82,7 @@ services:
SW_AGENT_INSTANCE_NAME: provider1
SW_AGENT_COLLECTOR_GET_PROFILE_TASK_INTERVAL: 1
SW_AGENT_COLLECTOR_GET_AGENT_DYNAMIC_CONFIG_INTERVAL: 1
+ SW_METER_ACTIVE: 'false'
healthcheck:
test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/9090"]
interval: 5s
@@ -106,6 +107,7 @@ services:
SW_AGENT_INSTANCE_NAME: consumer1
SW_AGENT_COLLECTOR_GET_PROFILE_TASK_INTERVAL: 1
SW_AGENT_COLLECTOR_GET_AGENT_DYNAMIC_CONFIG_INTERVAL: 1
+ SW_METER_ACTIVE: 'false'
healthcheck:
test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/9092"]
interval: 5s
diff --git a/test/e2e-v2/script/env b/test/e2e-v2/script/env
index 8631e0da5f..a91bbc4222 100644
--- a/test/e2e-v2/script/env
+++ b/test/e2e-v2/script/env
@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-SW_AGENT_JAVA_COMMIT=c82287e1dd1593cf3e7dbc390b92f9224943252a
+SW_AGENT_JAVA_COMMIT=75364241659c28e64557a3edffd53b9a8ae46188
SW_AGENT_SATELLITE_COMMIT=ea27a3f4e126a24775fe12e2aa2695bcb23d99c3
SW_AGENT_NGINX_LUA_COMMIT=c3cee4841798a147d83b96a10914d4ac0e11d0aa
SW_AGENT_NODEJS_COMMIT=4f9a91dad3dfd8cfe5ba8f7bd06b39e11eb5e65e