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 c467e4d  Support E2E testing satellite native protocols (#7810)
c467e4d is described below

commit c467e4df06cefd5914082ed8cc093d538dc42e2c
Author: mrproliu <[email protected]>
AuthorDate: Mon Sep 27 15:35:00 2021 +0800

    Support E2E testing satellite native protocols (#7810)
---
 .github/actions/infra-e2e-test/action.yml          |  65 ++++++
 .github/workflows/e2e.satellite.yaml               |  50 +++++
 test/e2e-v2/cases/satellite/Dockerfile.satellite   |  24 ++
 .../satellite/native-protocols/docker-compose.yml  | 111 +++++++++
 .../cases/satellite/native-protocols/e2e.yaml      | 126 +++++++++++
 .../expected/dependency-services.yml               |  58 +++++
 .../native-protocols/expected/etcd-put.yml         |  16 ++
 .../native-protocols/expected/event-list.yml       |  42 ++++
 .../native-protocols/expected/logs-list.yml        |  45 ++++
 .../expected/metrics-has-value.yml                 |  21 ++
 .../native-protocols/expected/profile-create.yml   |  17 ++
 .../native-protocols/expected/profile-list.yml     |  34 +++
 .../expected/profile-segment-analyze.yml           |  40 ++++
 .../expected/profile-segment-detail.yml            |  42 ++++
 .../expected/profile-segment-list.yml              |  27 +++
 .../native-protocols/expected/service-endpoint.yml |  21 ++
 .../native-protocols/expected/service-instance.yml |  54 +++++
 .../native-protocols/expected/service.yml          |  27 +++
 .../expected/trace-info-detail.yml                 |  72 ++++++
 .../expected/trace-users-detail.yml                |  45 ++++
 .../native-protocols/expected/traces-list.yml      |  41 ++++
 .../cases/satellite/native-protocols/lal.yaml      |  28 +++
 .../native-protocols/satellite_config.yaml         | 249 +++++++++++++++++++++
 test/e2e-v2/java-test-service/Dockerfile.consumer  |  27 +++
 test/e2e-v2/java-test-service/Dockerfile.provider  |  27 +++
 .../java-test-service/e2e-service-consumer/pom.xml |  66 ++++++
 .../apache/skywalking/e2e/E2EConfiguration.java    |  30 +++
 .../apache/skywalking/e2e/Service1Application.java |  29 +++
 .../main/java/org/apache/skywalking/e2e/User.java  |  27 +++
 .../e2e/controller/HealthController.java           |  36 +++
 .../skywalking/e2e/controller/UserController.java  |  87 +++++++
 .../src/main/resources/application.yml             |  24 ++
 .../java-test-service/e2e-service-provider/pom.xml | 127 +++++++++++
 .../java/org/apache/skywalking/e2e/KeyValue.java   |  29 +++
 .../apache/skywalking/e2e/Service0Application.java |  41 ++++
 .../main/java/org/apache/skywalking/e2e/User.java  |  42 ++++
 .../java/org/apache/skywalking/e2e/UserRepo.java   |  24 ++
 .../skywalking/e2e/controller/AlarmController.java |  82 +++++++
 .../e2e/controller/FileLogController.java          |  41 ++++
 .../e2e/controller/HealthController.java           |  31 +++
 .../skywalking/e2e/controller/LogController.java   |  42 ++++
 .../skywalking/e2e/controller/UserController.java  |  69 ++++++
 .../apache/skywalking/e2e/lua/LuaController.java   |  54 +++++
 .../apache/skywalking/e2e/profile/CreateUser.java  |  32 +++
 .../skywalking/e2e/profile/ProfileController.java  |  42 ++++
 .../src/main/resources/application.yml             |  43 ++++
 .../src/main/resources/log4j.properties            |  26 +++
 .../src/main/resources/log4j2.xml                  |  44 ++++
 .../src/main/resources/logback.xml                 |  52 +++++
 test/e2e-v2/java-test-service/pom.xml              | 181 +++++++++++++++
 test/e2e-v2/script/docker-compose/base-compose.yml | 104 +++++++++
 .../prepare/setup-e2e-shell/install-etcdctl.sh     |  38 ++++
 .../prepare/setup-e2e-shell/install-swctl.sh       |  31 +++
 .../script/prepare/setup-e2e-shell/install-yq.sh   |  30 +++
 .../script/prepare/setup-e2e-shell/install.sh      |  35 +++
 .../script/prepare/setup-oap/download-mysql.sh     |  29 +++
 test/e2e-v2/script/prepare/setup-oap/log4j2.xml    |  41 ++++
 57 files changed, 2918 insertions(+)

diff --git a/.github/actions/infra-e2e-test/action.yml 
b/.github/actions/infra-e2e-test/action.yml
new file mode 100644
index 0000000..9eb9a36
--- /dev/null
+++ b/.github/actions/infra-e2e-test/action.yml
@@ -0,0 +1,65 @@
+#
+# 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.
+#
+name: 'Run Infra E2E Test'
+description: 'Common steps when running an E2E Test'
+inputs:
+  config-file:
+    description: 'The e2e test config file path'
+    required: true
+runs:
+  using: "composite"
+  steps:
+    - name: Cache local Maven repository
+      uses: actions/cache@v2
+      with:
+        path: ~/.m2/repository
+        key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+        restore-keys: |
+          ${{ runner.os }}-maven-
+    - name: Check License
+      uses: apache/skywalking-eyes@a63f4afcc287dfb3727ecc45a4afc55a5e69c15f
+    - name: Setup E2E env
+      shell: bash
+      run: |
+        function export_env() {
+          echo "$1=$2" >> $GITHUB_ENV
+        }
+
+        export_env SW_AGENT_JAVA_COMMIT 
3997f0256056788bd054ee37e4603c11c0fd6756
+        export_env SW_AGENT_SATELLITE_COMMIT 
1f3c08a5af19f8522f2a40d9339c45fa816bfe07
+    - name: Build Docker Image
+      shell: bash
+      env:
+        SKIP_TEST: "true"
+      run: |
+        echo "::group::Build Docker Image"
+        # Retry one more time due to frequent "maven connection reset"
+        make docker || make docker
+        echo "::endgroup::"
+    - name: Build Java Test Services
+      shell: bash
+      run: |
+        echo "::group::build java test services"
+        # Retry one more time due to frequent "maven connection reset"
+        ./mvnw --batch-mode -f test/e2e-v2/java-test-service/pom.xml clean 
package
+        echo "::endgroup::"
+    - name: Run E2E Test
+      uses: apache/skywalking-infra-e2e@main
+      with:
+        e2e-file: $GITHUB_WORKSPACE/test/e2e-v2/cases/${{ inputs.config-file }}
diff --git a/.github/workflows/e2e.satellite.yaml 
b/.github/workflows/e2e.satellite.yaml
new file mode 100644
index 0000000..8e47e3c
--- /dev/null
+++ b/.github/workflows/e2e.satellite.yaml
@@ -0,0 +1,50 @@
+# 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.
+
+name: E2E
+
+on:
+  pull_request:
+    paths:
+      - '**'
+      - '!**.md'
+  schedule:
+    - cron: '0 18 * * *'
+
+env:
+  SW_AGENT_JDK_VERSION: 8
+  SW_STORAGE: h2
+
+concurrency:
+  group: e2e-satellite-${{ github.event.pull_request.number || github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  Satellite:
+    if: (github.event_name == 'schedule' && github.repository == 
'apache/skywalking') || (github.event_name != 'schedule')
+    name: Satellite
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v2
+        with:
+          submodules: true
+      - name: Set Skip Env Var
+        uses: ./.github/actions/skip
+      - name: Run E2E Test
+        if: env.SKIP_CI != 'true'
+        uses: ./.github/actions/infra-e2e-test
+        with:
+          config-file: satellite/native-protocols/e2e.yaml
\ No newline at end of file
diff --git a/test/e2e-v2/cases/satellite/Dockerfile.satellite 
b/test/e2e-v2/cases/satellite/Dockerfile.satellite
new file mode 100644
index 0000000..60aace5
--- /dev/null
+++ b/test/e2e-v2/cases/satellite/Dockerfile.satellite
@@ -0,0 +1,24 @@
+# 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.
+
+ARG SW_AGENT_SATELLITE_COMMIT=1f3c08a5af19f8522f2a40d9339c45fa816bfe07
+FROM 
ghcr.io/apache/skywalking-satellite/skywalking-satellite:v${SW_AGENT_SATELLITE_COMMIT}
 as base
+
+FROM alpine:3.10
+
+COPY --from=base /skywalking-satellite /sw-satellite
+COPY --from=base /skywalking/configs /skywalking/
+
+ENTRYPOINT ["/sw-satellite", "start", "--config", 
"/skywalking/configs/satellite_config.yaml"]
\ No newline at end of file
diff --git a/test/e2e-v2/cases/satellite/native-protocols/docker-compose.yml 
b/test/e2e-v2/cases/satellite/native-protocols/docker-compose.yml
new file mode 100644
index 0000000..eab6804
--- /dev/null
+++ b/test/e2e-v2/cases/satellite/native-protocols/docker-compose.yml
@@ -0,0 +1,111 @@
+# 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.
+
+version: '2.1'
+
+services:
+
+  etcd:
+    hostname: etcd
+    image: quay.io/coreos/etcd:v3.5.0
+    ports:
+      - 2379
+    networks:
+      - e2e
+    environment:
+      ETCD_LISTEN_CLIENT_URLS: http://0.0.0.0:2379
+      ETCD_ADVERTISE_CLIENT_URLS: http://0.0.0.0:2379
+      ETCD_LISTEN_PEER_URLS: http://0.0.0.0:2380
+      ETCD_INITIAL_ADVERTISE_PEER_URLS: http://0.0.0.0:2380
+      ETCD_INITIAL_CLUSTER: s1=http://0.0.0.0:2380
+      ETCD_NAME: s1
+      ETCD_DATA_DIR: /etcd-data
+    healthcheck:
+      test: ["CMD", "sh", "-c", "etcdctl endpoint health" ]
+      interval: 5s
+      timeout: 60s
+      retries: 120
+
+  oap:
+    extends:
+      file: ../../../script/docker-compose/base-compose.yml
+      service: oap
+    environment:
+      SW_LOG_LAL_FILES: test
+      SW_CLUSTER: etcd
+      SW_METER_ANALYZER_ACTIVE_FILES: spring-sleuth
+      SW_CONFIGURATION: etcd
+    volumes:
+      - ./lal.yaml:/skywalking/config/lal/test.yaml
+    ports:
+      - 12800
+    depends_on:
+      etcd:
+        condition: service_healthy
+
+  satellite:
+    build:
+      context: ../
+      dockerfile: Dockerfile.satellite
+      args:
+        - SW_AGENT_SATELLITE_COMMIT=${SW_AGENT_SATELLITE_COMMIT}
+    expose:
+      - 11800
+    environment:
+      SATELLITE_GRPC_CLIENT: oap:11800
+      SATELLITE_LOGPIPE_SENDER_MIN_FLUSH_EVENTS: 1
+      SW_AGENT_SATELLITE_COMMIT: ${SW_AGENT_SATELLITE_COMMIT}
+    volumes:
+      - ./satellite_config.yaml:/skywalking/configs/satellite_config.yaml
+    networks:
+      - e2e
+    healthcheck:
+      test: [ "CMD", "sh", "-c", "nc -zn 127.0.0.1 11800" ]
+      interval: 5s
+      timeout: 60s
+      retries: 120
+
+  provider:
+    extends:
+      file: ../../../script/docker-compose/base-compose.yml
+      service: provider
+    environment:
+      SW_AGENT_COLLECTOR_BACKEND_SERVICES: satellite:11800
+      SW_GRPC_LOG_SERVER_HOST: satellite
+      SW_GRPC_LOG_SERVER_PORT: 11800
+    ports:
+      - 9090
+    depends_on:
+      satellite:
+        condition: service_healthy
+
+  consumer:
+    extends:
+      file: ../../../script/docker-compose/base-compose.yml
+      service: consumer
+    environment:
+      SW_AGENT_COLLECTOR_BACKEND_SERVICES: satellite:11800
+      SW_GRPC_LOG_SERVER_HOST: satellite
+      SW_GRPC_LOG_SERVER_PORT: 11800
+    ports:
+      - 9092
+    depends_on:
+      satellite:
+        condition: service_healthy
+      provider:
+        condition: service_healthy
+
+networks:
+  e2e:
\ No newline at end of file
diff --git a/test/e2e-v2/cases/satellite/native-protocols/e2e.yaml 
b/test/e2e-v2/cases/satellite/native-protocols/e2e.yaml
new file mode 100644
index 0000000..98f9829
--- /dev/null
+++ b/test/e2e-v2/cases/satellite/native-protocols/e2e.yaml
@@ -0,0 +1,126 @@
+# 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.
+
+# This file is used to show how to write configuration files and can be used 
to test.
+
+setup:
+  env: compose
+  file: docker-compose.yml
+  timeout: 1200
+  steps:
+    - name: install yq
+      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
+    - name: install swctl
+      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
+    - name: install etcdctl
+      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh 
etcdctl
+
+cleanup:
+  # always never success failure
+  on: no
+
+trigger:
+  action: http
+  interval: 10s
+  times: 10
+  url: http://${consumer_host}:${consumer_9092}/info
+  method: POST
+
+verify:
+  # verify with retry strategy
+  retry:
+    # max retry count
+    count: 20
+    # the interval between two retries, in millisecond.
+    interval: 10000
+  cases:
+    # basic check: service list
+    - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql service ls
+      expected: expected/service.yml
+    # basic check: service metrics
+    - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name 
service_sla --service=e2e-service-provider |yq e 'to_entries' -
+      expected: expected/metrics-has-value.yml
+    # basic check: service endpoint
+    - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql endpoint list --keyword=info 
--service-id=$(swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql service ls|grep -B 1 
'provider'|yq e '.[0].id' -)
+      expected: expected/service-endpoint.yml
+    # basic check: service endpoint metrics
+    - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name 
endpoint_cpm --endpoint=POST:/info --service=e2e-service-provider |yq e 
'to_entries' -
+      expected: expected/metrics-has-value.yml
+    # basic check: dependency service
+    - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql dependency service $(swctl 
--display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service 
ls|grep -B 1 'provider'|yq e '.[0].id' -)
+      expected: expected/dependency-services.yml
+
+    # native management: service instance list
+    - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql instance list 
--service-name=e2e-service-provider
+      expected: expected/service-instance.yml
+
+    # native jvm: service instance jvm metrics
+    - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name 
instance_jvm_thread_live_count --instance=provider1 
--service=e2e-service-provider |yq e 'to_entries' -
+      expected: expected/metrics-has-value.yml
+
+    # native tracing: trace segment list
+    - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql trace ls
+      expected: expected/traces-list.yml
+    # native tracing: trace detail
+    - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql trace $(swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql trace ls|grep -A 5 
'/info'|tail -n1|awk -F ' ' '{print $2}')
+      expected: expected/trace-info-detail.yml
+
+    # native meter: instance meter
+    - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name 
meter_jvm_classes_loaded --instance=provider1 --service=e2e-service-provider 
|yq e 'to_entries' -
+      expected: expected/metrics-has-value.yml
+
+    # native event: event list
+    - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql event list
+      expected: expected/event-list.yml
+
+    # native log: logs list
+    - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql logs list 
--service-id=$(swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql service ls|grep -B 1 
'provider'|yq e '.[0].id' -) --trace-id=$(swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql trace ls|grep -A 5 
'/info'|tail -n1|awk -F ' ' '{print $2}')
+      expected: expected/logs-list.yml
+
+    # native profile: create task
+    - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql profile create 
--service-name=e2e-service-provider --endpoint=POST:/info 
--start-time=$((($(date +%s)+5)*1000)) --duration=1 --min-duration-threshold=0 
--dump-period=10 --max-sampling-count=9
+      expected: expected/profile-create.yml
+    # native profile: sleep to wait agent notices and query profile list
+    - query: sleep 10 && swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql profile list 
-service-name=e2e-service-provider --endpoint=POST:/info
+      expected: expected/profile-list.yml
+    # native profile: sleep to wait segment report and query profiled segment 
list
+    - query: |
+        curl -X POST http://${consumer_host}:${consumer_9092}/info > /dev/null;
+        sleep 5;
+        swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql profile segment-list 
--task-id=$(swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql profile list 
--service-name=e2e-service-provider --endpoint=POST:/info|yq e '.[0].id' -)
+      expected: expected/profile-segment-list.yml
+    # native profile: query profiled segment
+    - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql profile profiled-segment 
--segment-id=$(swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql profile segment-list 
--task-id=$(swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql profile list 
--service-name=e2e-service-provider --endpoint=POST:/info|yq e '.[0].id' -) | 
yq e '.[0].segmentid' -)
+      expected: expected/profile-segment-detail.yml
+    # native profile: query profiled segment
+    - query: |
+        segmentid=$(swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql profile segment-list 
--task-id=$(swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql profile list 
--service-name=e2e-service-provider --endpoint=POST:/info|yq e '.[0].id' -) |yq 
e '.[0].segmentid' -);
+        start=$(swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql profile profiled-segment 
--segment-id=$segmentid|yq e '.spans.[0].starttime' -);
+        end=$(swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql profile profiled-segment 
--segment-id=$segmentid|yq e '.spans.[0].endtime' -);
+        swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql profile profiled-analyze 
--segment-id=$segmentid --time-ranges=$(echo $start"-"$end)
+      expected: expected/profile-segment-analyze.yml
+
+    # native CDS: using etcdctl to update trace span limit, "/users" should 
have more than one span because it need DB save
+    - query: |
+        etcdctl --endpoints http://${etcd_host}:${etcd_2379}/ put 
/skywalking/configuration-discovery.default.agentConfigurations 'configurations:
+               e2e-service-provider:
+                 agent.span_limit_per_segment: 1' | yq e '{"message": .}' -
+      expected: expected/etcd-put.yml
+    - query: |
+        sleep 5;
+        curl -X POST http://${provider_host}:${provider_9090}/users -d '{}' -H 
"Content-Type: application/json" > /dev/null;
+        sleep 5;
+        swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql trace $(swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql trace list --step=SECOND 
--service-id=$(swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql service ls|grep -B 1 
'provider'|yq e '.[0].id' -)|grep -A 5 "/users"|head -n 6|tail -n1|awk -F ' ' 
'{print $2}')
+      expected: expected/trace-users-detail.yml
\ No newline at end of file
diff --git 
a/test/e2e-v2/cases/satellite/native-protocols/expected/dependency-services.yml 
b/test/e2e-v2/cases/satellite/native-protocols/expected/dependency-services.yml
new file mode 100644
index 0000000..8ec023d
--- /dev/null
+++ 
b/test/e2e-v2/cases/satellite/native-protocols/expected/dependency-services.yml
@@ -0,0 +1,58 @@
+# 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:
+{{- range .nodes }}
+{{- if eq .name "User" }}
+- id: {{ b64enc "User" }}.0
+  name: User
+  type: USER
+  isreal: false
+{{- end }}
+{{- if eq .name "e2e-service-provider" }}
+- id: {{ b64enc "e2e-service-provider"}}.1
+  name: e2e-service-provider
+  type: Tomcat
+  isreal: true
+{{- end }}
+{{- if eq .name "e2e-service-consumer" }}
+- id: {{ b64enc "e2e-service-consumer"}}.1
+  name: e2e-service-consumer
+  type: Tomcat
+  isreal: true
+{{- end }}
+{{- end }}
+calls:
+{{- range .calls }}
+{{- if eq .source "ZTJlLXNlcnZpY2UtY29uc3VtZXI=.1" }}
+- source: {{ b64enc "e2e-service-consumer"}}.1
+  sourcecomponents: []
+  target: {{ b64enc "e2e-service-provider"}}.1
+  targetcomponents: []
+  id: {{ b64enc "e2e-service-consumer"}}.1-{{ b64enc "e2e-service-provider"}}.1
+  detectpoints:
+    - CLIENT
+    - SERVER
+{{- end }}
+{{- if eq .source "VXNlcg==.0" }}
+- source: {{ b64enc "User" }}.0
+  sourcecomponents: []
+  target: {{ b64enc "e2e-service-consumer"}}.1
+  targetcomponents: []
+  id: {{ b64enc "User" }}.0-{{ b64enc "e2e-service-consumer"}}.1
+  detectpoints:
+    - SERVER
+{{- end }}
+{{- end }}
diff --git a/test/e2e-v2/cases/satellite/native-protocols/expected/etcd-put.yml 
b/test/e2e-v2/cases/satellite/native-protocols/expected/etcd-put.yml
new file mode 100644
index 0000000..3279e72
--- /dev/null
+++ b/test/e2e-v2/cases/satellite/native-protocols/expected/etcd-put.yml
@@ -0,0 +1,16 @@
+# 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.
+
+message: OK
\ No newline at end of file
diff --git 
a/test/e2e-v2/cases/satellite/native-protocols/expected/event-list.yml 
b/test/e2e-v2/cases/satellite/native-protocols/expected/event-list.yml
new file mode 100644
index 0000000..08b4879
--- /dev/null
+++ b/test/e2e-v2/cases/satellite/native-protocols/expected/event-list.yml
@@ -0,0 +1,42 @@
+# 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.
+
+events:
+{{- range .events }}
+- uuid: {{ notEmpty .uuid }}
+  source:
+    {{- if eq .source.service "e2e-service-provider" }}
+    service: e2e-service-provider
+    serviceinstance: provider1
+    {{- end }}
+    {{- if eq .source.service "e2e-service-consumer" }}
+    service: e2e-service-consumer
+    serviceinstance: consumer1
+    {{- end }}
+    endpoint: ""
+  name: Start
+  type: Normal
+  message: Start Java Application
+  parameters:
+  {{- range .parameters }}
+  {{- if eq .key "OPTS"}}
+    - key: OPTS
+      value: {{ notEmpty .value }}
+  {{- end }}
+  {{- end }}
+  starttime: {{ gt .starttime 0 }}
+  endtime: {{ gt .endtime 0 }}
+{{- end }}
+total: {{ gt .total 0 }}
\ No newline at end of file
diff --git 
a/test/e2e-v2/cases/satellite/native-protocols/expected/logs-list.yml 
b/test/e2e-v2/cases/satellite/native-protocols/expected/logs-list.yml
new file mode 100644
index 0000000..c13422d
--- /dev/null
+++ b/test/e2e-v2/cases/satellite/native-protocols/expected/logs-list.yml
@@ -0,0 +1,45 @@
+# 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.
+
+logs:
+{{- range .logs }}
+  - servicename: e2e-service-provider
+    serviceid: {{ b64enc "e2e-service-provider" }}.1
+    serviceinstancename: provider1
+    serviceinstanceid: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc 
"provider1" }}
+    endpointname: null
+    endpointid: null
+    traceid: {{ .traceid }}
+    timestamp: {{ gt .timestamp 0 }}
+    contenttype: TEXT
+    content: |
+      {{ notEmpty .content }}
+    tags:
+    {{- range .tags }}
+    {{- if eq .key "level"}}
+    - key: level
+      value: INFO
+    {{- end }}
+    {{- if eq .key "logger" }}
+    - key: logger
+      value: {{ notEmpty .value }}
+    {{- end }}
+    {{- if eq .key "thread" }}
+    - key: thread
+      value: {{ notEmpty .value }}
+    {{- end }}
+    {{- end }}
+{{- end }}
+total: {{ gt .total 0 }}
\ No newline at end of file
diff --git 
a/test/e2e-v2/cases/satellite/native-protocols/expected/metrics-has-value.yml 
b/test/e2e-v2/cases/satellite/native-protocols/expected/metrics-has-value.yml
new file mode 100644
index 0000000..27ae47c
--- /dev/null
+++ 
b/test/e2e-v2/cases/satellite/native-protocols/expected/metrics-has-value.yml
@@ -0,0 +1,21 @@
+# 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.
+
+{{- contains . }}
+- key: {{ notEmpty .key }}
+  value: {{ ge .value 0 }}
+- key: {{ notEmpty .key }}
+  value: {{ ge .value 1 }}
+{{- end }}
\ No newline at end of file
diff --git 
a/test/e2e-v2/cases/satellite/native-protocols/expected/profile-create.yml 
b/test/e2e-v2/cases/satellite/native-protocols/expected/profile-create.yml
new file mode 100644
index 0000000..cec4528
--- /dev/null
+++ b/test/e2e-v2/cases/satellite/native-protocols/expected/profile-create.yml
@@ -0,0 +1,17 @@
+# 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.
+
+id: {{ notEmpty .id }}
+errorreason: null
\ No newline at end of file
diff --git 
a/test/e2e-v2/cases/satellite/native-protocols/expected/profile-list.yml 
b/test/e2e-v2/cases/satellite/native-protocols/expected/profile-list.yml
new file mode 100644
index 0000000..f414419
--- /dev/null
+++ b/test/e2e-v2/cases/satellite/native-protocols/expected/profile-list.yml
@@ -0,0 +1,34 @@
+# 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.
+
+{{- range . }}
+- id: {{ notEmpty .id }}
+  serviceid: {{ b64enc "e2e-service-provider" }}.1
+  servicename: ""
+  endpointname: POST:/info
+  starttime: {{ gt .starttime 0 }}
+  duration: 1
+  mindurationthreshold: 0
+  dumpperiod: 10
+  maxsamplingcount: 9
+  logs:
+    {{- range .logs }}
+    - id: {{ notEmpty .id }}
+      instanceid: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "provider1" 
}}
+      operationtype: {{ notEmpty .operationtype }}
+      instancename: ""
+      operationtime: {{ gt .operationtime 0 }}
+  {{- end }}
+{{- end }}
\ No newline at end of file
diff --git 
a/test/e2e-v2/cases/satellite/native-protocols/expected/profile-segment-analyze.yml
 
b/test/e2e-v2/cases/satellite/native-protocols/expected/profile-segment-analyze.yml
new file mode 100644
index 0000000..2ce6611
--- /dev/null
+++ 
b/test/e2e-v2/cases/satellite/native-protocols/expected/profile-segment-analyze.yml
@@ -0,0 +1,40 @@
+# 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.
+
+tip: null
+trees:
+  {{- range .trees }}
+  - elements:
+    {{- contains .elements }}
+    - id: "{{ notEmpty .id }}"
+      parentid: "{{ notEmpty .parentid }}"
+      codesignature:
+        {{- if eq .codesignature "java.lang.Thread.sleep:-2" }}
+          java.lang.Thread.sleep:-2
+        {{- end }}
+      duration: {{ gt .duration 0 }}
+      durationchildexcluded: {{ gt .durationchildexcluded 0 }}
+      count: {{ gt .count 0 }}
+    - id: "{{ notEmpty .id }}"
+      parentid: "{{ notEmpty .parentid }}"
+      codesignature:
+        {{- if ne .codesignature "java.lang.Thread.sleep:-2" }}
+          {{ notEmpty .codesignature }}
+        {{- end}}
+      duration: {{ ge .duration 0 }}
+      durationchildexcluded: {{ ge .durationchildexcluded 0 }}
+      count: {{ gt .count 0 }}
+    {{- end }}
+  {{- end }}
diff --git 
a/test/e2e-v2/cases/satellite/native-protocols/expected/profile-segment-detail.yml
 
b/test/e2e-v2/cases/satellite/native-protocols/expected/profile-segment-detail.yml
new file mode 100644
index 0000000..28aeaef
--- /dev/null
+++ 
b/test/e2e-v2/cases/satellite/native-protocols/expected/profile-segment-detail.yml
@@ -0,0 +1,42 @@
+# 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.
+
+spans:
+{{- range .spans }}
+- spanid: 0
+  parentspanid: -1
+  servicecode: e2e-service-provider
+  serviceinstancename: ""
+  starttime: {{ gt .starttime 0 }}
+  endtime: {{ gt .endtime 0 }}
+  endpointname: POST:/info
+  type: Entry
+  peer: ""
+  component: Tomcat
+  iserror: false
+  layer: Http
+  tags:
+    {{- range .tags }}
+    {{- if eq .key "url" }}
+    - key: url
+      value: {{ notEmpty .value }}
+    {{- end }}
+    {{- if eq .key "http.method" }}
+    - key: http.method
+      value: POST
+    {{- end }}
+    {{- end }}
+  logs: []
+{{- end }}
\ No newline at end of file
diff --git 
a/test/e2e-v2/cases/satellite/native-protocols/expected/profile-segment-list.yml
 
b/test/e2e-v2/cases/satellite/native-protocols/expected/profile-segment-list.yml
new file mode 100644
index 0000000..6c54147
--- /dev/null
+++ 
b/test/e2e-v2/cases/satellite/native-protocols/expected/profile-segment-list.yml
@@ -0,0 +1,27 @@
+# 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.
+
+{{- range . }}
+- segmentid: {{ notEmpty .segmentid }}
+  endpointnames:
+    - POST:/info
+  duration: {{ gt .duration 0 }}
+  start: "{{ notEmpty .start }}"
+  iserror: false
+  traceids:
+  {{- range .traceids }}
+    - {{ notEmpty . }}
+  {{- end }}
+{{- end }}
\ No newline at end of file
diff --git 
a/test/e2e-v2/cases/satellite/native-protocols/expected/service-endpoint.yml 
b/test/e2e-v2/cases/satellite/native-protocols/expected/service-endpoint.yml
new file mode 100644
index 0000000..30b1efb
--- /dev/null
+++ b/test/e2e-v2/cases/satellite/native-protocols/expected/service-endpoint.yml
@@ -0,0 +1,21 @@
+# 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.
+
+{{- range .}}
+{{- if eq .name "POST:/info" }}
+- id: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "POST:/info" }}
+  name: POST:/info
+{{- end}}
+{{- end}}
\ No newline at end of file
diff --git 
a/test/e2e-v2/cases/satellite/native-protocols/expected/service-instance.yml 
b/test/e2e-v2/cases/satellite/native-protocols/expected/service-instance.yml
new file mode 100644
index 0000000..ef74087
--- /dev/null
+++ b/test/e2e-v2/cases/satellite/native-protocols/expected/service-instance.yml
@@ -0,0 +1,54 @@
+# Licensed to 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. Apache Software Foundation (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.
+
+{{- range .}}
+- id: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "provider1" }}
+  name: {{ notEmpty .name }}
+  attributes:
+  {{- range .attributes }}
+  {{- if eq .name "OS Name" }}
+  - name: OS Name
+    value: Linux
+  {{- end }}
+  {{- if eq .name "hostname" }}
+  - name: hostname
+    value: {{ notEmpty .value }}
+  {{- end }}
+  {{- if eq .name "Process No." }}
+  - name: Process No.
+    value: "1"
+  {{- end }}
+  {{- if eq .name "Start Time" }}
+  - name: Start Time
+    value: {{ notEmpty .value }}
+  {{- end }}
+  {{- if eq .name "JVM Arguments" }}
+  - name: JVM Arguments
+    value: '{{ notEmpty .value }}'
+  {{- end }}
+  {{- if eq .name "Jar Dependencies" }}
+  - name: Jar Dependencies
+    value: '{{ notEmpty .value }}'
+  {{- end }}
+  {{- if eq .name "ipv4s" }}
+  - name: ipv4s
+    value: {{ notEmpty .value }}
+  {{- end }}
+  {{- end}}
+  language: JAVA
+  instanceuuid: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "provider1" }}
+{{- end}}
\ No newline at end of file
diff --git a/test/e2e-v2/cases/satellite/native-protocols/expected/service.yml 
b/test/e2e-v2/cases/satellite/native-protocols/expected/service.yml
new file mode 100644
index 0000000..e299d8b
--- /dev/null
+++ b/test/e2e-v2/cases/satellite/native-protocols/expected/service.yml
@@ -0,0 +1,27 @@
+# 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.
+
+{{- range . }}
+{{- if eq .name "e2e-service-provider" }}
+- id: {{ b64enc "e2e-service-provider" }}.1
+  name: e2e-service-provider
+  group: ""
+{{- end }}
+{{- if eq .name "e2e-service-consumer" }}
+- id: {{ b64enc "e2e-service-consumer" }}.1
+  name: e2e-service-consumer
+  group: ""
+{{- end }}
+{{- end }}
\ No newline at end of file
diff --git 
a/test/e2e-v2/cases/satellite/native-protocols/expected/trace-info-detail.yml 
b/test/e2e-v2/cases/satellite/native-protocols/expected/trace-info-detail.yml
new file mode 100644
index 0000000..836705a
--- /dev/null
+++ 
b/test/e2e-v2/cases/satellite/native-protocols/expected/trace-info-detail.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.
+
+spans:
+  {{- range .spans}}
+  - traceid: {{ notEmpty .traceid }}
+    segmentid: {{ notEmpty .segmentid }}
+    spanid: {{ .spanid }}
+    parentspanid: {{ .parentspanid }}
+    refs:
+      {{- if eq .servicecode "e2e-service-provider" }}
+      {{- range .refs }}
+        - traceid: {{ notEmpty .traceid }}
+          parentsegmentid: {{ notEmpty .parentsegmentid }}
+          parentspanid: 1
+          type: CROSS_PROCESS
+      {{- end }}
+      {{- end }}
+      {{- if eq .servicecode "e2e-service-consumer" }}
+        []
+      {{- end }}
+    servicecode: {{ notEmpty .servicecode }}
+    serviceinstancename: {{ notEmpty .serviceinstancename }}
+    starttime: {{ gt .starttime 0 }}
+    endtime: {{ gt .endtime 0 }}
+    endpointname:
+      {{- if eq .type "Exit" }}
+        /info
+      {{ else }}
+        POST:/info
+      {{- end }}
+    type: {{ notEmpty .type }}
+    peer:
+    {{- if eq .type "Exit" }}
+      provider:9090
+    {{ else }}
+      ""
+    {{- end }}
+    component:
+    {{- if eq .type "Exit" }}
+      SpringRestTemplate
+    {{- end }}
+    {{- if eq .type "Entry" }}
+      Tomcat
+    {{- end }}
+    iserror: false
+    layer: Http
+    tags:
+      {{- range .tags }}
+      {{- if eq .key "http.method" }}
+      - key: http.method
+        value: POST
+      {{- end }}
+      {{- if eq .key "url" }}
+      - key: url
+        value: {{ notEmpty .value }}
+      {{- end }}
+      {{- end }}
+    logs: []
+  {{- end }}
\ No newline at end of file
diff --git 
a/test/e2e-v2/cases/satellite/native-protocols/expected/trace-users-detail.yml 
b/test/e2e-v2/cases/satellite/native-protocols/expected/trace-users-detail.yml
new file mode 100644
index 0000000..b46479e
--- /dev/null
+++ 
b/test/e2e-v2/cases/satellite/native-protocols/expected/trace-users-detail.yml
@@ -0,0 +1,45 @@
+# 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.
+
+spans:
+  {{- range .spans}}
+  - traceid: {{ notEmpty .traceid }}
+    segmentid: {{ notEmpty .segmentid }}
+    spanid: 0
+    parentspanid: -1
+    refs: []
+    servicecode: {{ notEmpty .servicecode }}
+    serviceinstancename: {{ notEmpty .serviceinstancename }}
+    starttime: {{ gt .starttime 0 }}
+    endtime: {{ gt .endtime 0 }}
+    endpointname: POST:/users
+    type: Entry
+    peer: ""
+    component: Tomcat
+    iserror: false
+    layer: Http
+    tags:
+      {{- range .tags }}
+      {{- if eq .key "http.method" }}
+      - key: http.method
+        value: POST
+      {{- end }}
+      {{- if eq .key "url" }}
+      - key: url
+        value: {{ notEmpty .value }}
+      {{- end }}
+      {{- end }}
+    logs: []
+  {{- end }}
\ No newline at end of file
diff --git 
a/test/e2e-v2/cases/satellite/native-protocols/expected/traces-list.yml 
b/test/e2e-v2/cases/satellite/native-protocols/expected/traces-list.yml
new file mode 100644
index 0000000..0bbf661
--- /dev/null
+++ b/test/e2e-v2/cases/satellite/native-protocols/expected/traces-list.yml
@@ -0,0 +1,41 @@
+# 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.
+
+traces:
+{{- range .traces }}
+- segmentid: {{ notEmpty .segmentid }}
+  endpointnames:
+  {{- if eq (index .endpointnames 0) "H2/JDBI/Statement/execute" }}
+    - H2/JDBI/Statement/execute
+  {{- end}}
+  {{- if eq (index .endpointnames 0) "H2/JDBI/Statement/executeQuery" }}
+    - H2/JDBI/Statement/executeQuery
+  {{- end}}
+  {{- if eq (index .endpointnames 0) "H2/JDBI/PreparedStatement/executeQuery" 
}}
+    - H2/JDBI/PreparedStatement/executeQuery
+  {{- end }}
+  {{- if eq (index .endpointnames 0) "POST:/info" }}
+    - POST:/info
+  {{- end }}
+  {{- if eq (index .endpointnames 0) "POST:/users" }}
+    - POST:/users
+  {{- end }}
+  duration: {{ ge .duration 0 }}
+  start: "{{ notEmpty .start}}"
+  iserror: false
+  traceids:
+    - {{ (index .traceids 0) }}
+{{- end }}
+total: {{ gt .total 0 }}
\ No newline at end of file
diff --git a/test/e2e-v2/cases/satellite/native-protocols/lal.yaml 
b/test/e2e-v2/cases/satellite/native-protocols/lal.yaml
new file mode 100644
index 0000000..aa0922d
--- /dev/null
+++ b/test/e2e-v2/cases/satellite/native-protocols/lal.yaml
@@ -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.
+
+rules:
+  - name: example
+    dsl: |
+      filter {
+        text {
+          abortOnFailure false // for test purpose, we want to persist all logs
+          regexp $/(?s)(?<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3}) 
\[TID:(?<tid>.+?)] \[(?<thread>.+?)] (?<level>\w{4,}) (?<logger>.{1,36}) 
(?<msg>.+)/$
+        }
+        extractor {
+        }
+        sink {
+        }
+      }
diff --git a/test/e2e-v2/cases/satellite/native-protocols/satellite_config.yaml 
b/test/e2e-v2/cases/satellite/native-protocols/satellite_config.yaml
new file mode 100644
index 0000000..b61c265
--- /dev/null
+++ b/test/e2e-v2/cases/satellite/native-protocols/satellite_config.yaml
@@ -0,0 +1,249 @@
+#
+# 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.
+#
+
+# The logger configuration.
+logger:
+  # The log format pattern configuration.
+  log_pattern: ${SATELLITE_LOGGER_LOG_PATTERN:%time [%level][%field] - %msg}
+  # The time format pattern configuration.
+  time_pattern: ${SATELLITE_LOGGER_TIME_PATTERN:2006-01-02 15:04:05.000}
+  # The lowest level of printing allowed.
+  level: ${SATELLITE_LOGGER_LEVEL:info}
+
+# The Satellite self telemetry configuration.
+telemetry:
+  # The space concept for the deployment, such as the namespace concept in the 
Kubernetes.
+  cluster: ${SATELLITE_TELEMETRY_CLUSTER:satellite-cluster}
+  # The group concept for the deployment, such as the service resource concept 
in the Kubernetes.
+  service: ${SATELLITE_TELEMETRY_SERVICE:satellite-service}
+  # The minimum running unit, such as the pod concept in the Kubernetes.
+  instance: ${SATELLITE_TELEMETRY_SERVICE:satellite-instance}
+
+# The sharing plugins referenced by the specific plugins in the different 
pipes.
+sharing:
+  clients:
+    - plugin_name: "grpc-client"
+      # The gRPC server address (default localhost:11800).
+      server_addr: ${SATELLITE_GRPC_CLIENT:127.0.0.1:11800}
+      # The TLS switch
+      enable_TLS: ${SATELLITE_GRPC_ENABLE_TLS:false}
+      # The file path of client.pem. The config only works when opening the 
TLS switch.
+      client_pem_path: ${SATELLITE_GRPC_CLIENT_PEM_PATH:"client.pem"}
+      # The file path of client.key. The config only works when opening the 
TLS switch.
+      client_key_path: ${SATELLITE_GRPC_CLIENT_KEY_PATH:"client.key"}
+      # InsecureSkipVerify controls whether a client verifies the server's 
certificate chain and host name.
+      insecure_skip_verify: ${SATELLITE_GRPC_INSECURE_SKIP_VERIFY:false}
+      # The file path oca.pem. The config only works when opening the TLS 
switch.
+      ca_pem_path: ${SATELLITE_grpc_CA_PEM_PATH:"ca.pem"}
+      # How frequently to check the connection(second)
+      check_period: ${SATELLITE_GRPC_CHECK_PERIOD:5}
+      # The auth value when send request
+      authentication: ${SATELLITE_GRPC_AUTHENTICATION:""}
+  servers:
+    - plugin_name: "grpc-server"
+      # The address of grpc server.
+      address: ${SATELLITE_GRPC_ADDRESS:":11800"}
+      # The TLS cert file path.
+      tls_cert_file: ${SATELLITE_GRPC_TLS_KEY_FILE:""}
+      # The TLS key file path.
+      tls_key_file: ${SATELLITE_GRPC_TLS_KEY_FILE:""}
+    - plugin_name: "prometheus-server"
+      # The prometheus server address.
+      address: ${SATELLITE_PROMETHEUS_ADDRESS:":1234"}
+      # The prometheus server metrics endpoint.
+      endpoint: ${SATELLITE_PROMETHEUS_ENDPOINT:"/metrics"}
+
+# The working pipe configurations.
+pipes:
+  - common_config:
+      pipe_name: logpipe
+    gatherer:
+      server_name: "grpc-server"
+      receiver:
+        plugin_name: "grpc-nativelog-receiver"
+      queue:
+        plugin_name: "memory-queue"
+        # The maximum buffer event size.
+        event_buffer_size: ${SATELLITE_QUEUE_EVENT_BUFFER_SIZE:5000}
+    processor:
+      filters:
+    sender:
+      fallbacker:
+        plugin_name: none-fallbacker
+      # The time interval between two flush operations. And the time unit is 
millisecond.
+      flush_time: ${SATELLITE_LOGPIPE_SENDER_FLUSH_TIME:1000}
+      # The maximum buffer elements.
+      max_buffer_size: ${SATELLITE_LOGPIPE_SENDER_MAX_BUFFER_SIZE:200}
+      # The minimum flush elements.
+      min_flush_events: ${SATELLITE_LOGPIPE_SENDER_MIN_FLUSH_EVENTS:100}
+      client_name: grpc-client
+      forwarders:
+        - plugin_name: nativelog-grpc-forwarder
+  - common_config:
+      pipe_name: managementpipe
+    gatherer:
+      server_name: "grpc-server"
+      receiver:
+        plugin_name: "grpc-nativemanagement-receiver"
+      queue:
+        plugin_name: "memory-queue"
+        # The maximum buffer event size.
+        event_buffer_size: ${SATELLITE_QUEUE_EVENT_BUFFER_SIZE:5000}
+    processor:
+      filters:
+    sender:
+      fallbacker:
+        plugin_name: none-fallbacker
+      # The time interval between two flush operations. And the time unit is 
millisecond.
+      flush_time: ${SATELLITE_LOGMANAGEMENT_SENDER_FLUSH_TIME:1000}
+      # The maximum buffer elements.
+      max_buffer_size: ${SATELLITE_LOGMANAGEMENT_SENDER_MAX_BUFFER_SIZE:20}
+      # The minimum flush elements.
+      min_flush_events: ${SATELLITE_LOGMANAGEMENT_SENDER_MIN_FLUSH_EVENTS:1}
+      client_name: grpc-client
+      forwarders:
+        - plugin_name: nativemanagement-grpc-forwarder
+  - common_config:
+      pipe_name: tracingpipe
+    gatherer:
+      server_name: "grpc-server"
+      receiver:
+        plugin_name: "grpc-nativetracing-receiver"
+      queue:
+        plugin_name: "memory-queue"
+        # The maximum buffer event size.
+        event_buffer_size: ${SATELLITE_QUEUE_EVENT_BUFFER_SIZE:5000}
+    processor:
+      filters:
+    sender:
+      fallbacker:
+        plugin_name: none-fallbacker
+      # The time interval between two flush operations. And the time unit is 
millisecond.
+      flush_time: ${SATELLITE_TRACINGPIPE_SENDER_FLUSH_TIME:1000}
+      # The maximum buffer elements.
+      max_buffer_size: ${SATELLITE_TRACINGPIPE_SENDER_MAX_BUFFER_SIZE:200}
+      # The minimum flush elements.
+      min_flush_events: ${SATELLITE_TRACINGPIPE_SENDER_MIN_FLUSH_EVENTS:1}
+      client_name: grpc-client
+      forwarders:
+        - plugin_name: nativetracing-grpc-forwarder
+  - common_config:
+      pipe_name: profilepipe
+    gatherer:
+      server_name: "grpc-server"
+      receiver:
+        plugin_name: "grpc-nativeprofile-receiver"
+      queue:
+        plugin_name: "memory-queue"
+        # The maximum buffer event size.
+        event_buffer_size: ${SATELLITE_QUEUE_EVENT_BUFFER_SIZE:5000}
+    processor:
+      filters:
+    sender:
+      fallbacker:
+        plugin_name: none-fallbacker
+      # The time interval between two flush operations. And the time unit is 
millisecond.
+      flush_time: ${SATELLITE_PROFILEPIPE_SENDER_FLUSH_TIME:1000}
+      # The maximum buffer elements.
+      max_buffer_size: ${SATELLITE_PROFILEPIPE_SENDER_MAX_BUFFER_SIZE:200}
+      # The minimum flush elements.
+      min_flush_events: ${SATELLITE_PROFILEPIPE_SENDER_MIN_FLUSH_EVENTS:1}
+      client_name: grpc-client
+      forwarders:
+        - plugin_name: nativeprofile-grpc-forwarder
+  - common_config:
+      pipe_name: cdspipe
+    gatherer:
+      server_name: "grpc-server"
+      receiver:
+        plugin_name: "grpc-nativecds-receiver"
+      queue:
+        plugin_name: "none-queue"
+    processor:
+      filters:
+    sender:
+      fallbacker:
+        plugin_name: none-fallbacker
+      client_name: grpc-client
+      forwarders:
+        - plugin_name: nativecds-grpc-forwarder
+  - common_config:
+      pipe_name: eventpipe
+    gatherer:
+      server_name: "grpc-server"
+      receiver:
+        plugin_name: "grpc-nativeevent-receiver"
+      queue:
+        plugin_name: "memory-queue"
+    processor:
+      filters:
+    sender:
+      fallbacker:
+        plugin_name: none-fallbacker
+      # The time interval between two flush operations. And the time unit is 
millisecond.
+      flush_time: ${SATELLITE_EVENTPIPE_SENDER_FLUSH_TIME:1000}
+      # The maximum buffer elements.
+      max_buffer_size: ${SATELLITE_EVENTPIPE_SENDER_MAX_BUFFER_SIZE:200}
+      # The minimum flush elements.
+      min_flush_events: ${SATELLITE_EVENTPIPE_SENDER_MIN_FLUSH_EVENTS:1}
+      client_name: grpc-client
+      forwarders:
+        - plugin_name: nativeevent-grpc-forwarder
+  - common_config:
+      pipe_name: jvmpipe
+    gatherer:
+      server_name: "grpc-server"
+      receiver:
+        plugin_name: "grpc-nativejvm-receiver"
+      queue:
+        plugin_name: "memory-queue"
+    processor:
+      filters:
+    sender:
+      fallbacker:
+        plugin_name: none-fallbacker
+      # The time interval between two flush operations. And the time unit is 
millisecond.
+      flush_time: ${SATELLITE_JVMPIPE_SENDER_FLUSH_TIME:1000}
+      # The maximum buffer elements.
+      max_buffer_size: ${SATELLITE_JVMPIPE_SENDER_MAX_BUFFER_SIZE:200}
+      # The minimum flush elements.
+      min_flush_events: ${SATELLITE_JVMPIPE_SENDER_MIN_FLUSH_EVENTS:1}
+      client_name: grpc-client
+      forwarders:
+        - plugin_name: nativejvm-grpc-forwarder
+  - common_config:
+      pipe_name: meterpipe
+    gatherer:
+      server_name: "grpc-server"
+      receiver:
+        plugin_name: "grpc-nativemeter-receiver"
+      queue:
+        plugin_name: "memory-queue"
+    processor:
+      filters:
+    sender:
+      fallbacker:
+        plugin_name: none-fallbacker
+      # The time interval between two flush operations. And the time unit is 
millisecond.
+      flush_time: ${SATELLITE_METERPIPE_SENDER_FLUSH_TIME:1000}
+      # The maximum buffer elements.
+      max_buffer_size: ${SATELLITE_METERPIPE_SENDER_MAX_BUFFER_SIZE:200}
+      # The minimum flush elements.
+      min_flush_events: ${SATELLITE_METERPIPE_SENDER_MIN_FLUSH_EVENTS:1}
+      client_name: grpc-client
+      forwarders:
+        - plugin_name: nativemeter-grpc-forwarder
diff --git a/test/e2e-v2/java-test-service/Dockerfile.consumer 
b/test/e2e-v2/java-test-service/Dockerfile.consumer
new file mode 100644
index 0000000..a9926c2
--- /dev/null
+++ b/test/e2e-v2/java-test-service/Dockerfile.consumer
@@ -0,0 +1,27 @@
+# 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.
+
+ARG SW_AGENT_JDK_VERSION=8
+ARG SW_AGENT_JAVA_COMMIT=1f3c08a5af19f8522f2a40d9339c45fa816bfe07
+
+FROM 
ghcr.io/apache/skywalking-java/skywalking-java:${SW_AGENT_JAVA_COMMIT}-java${SW_AGENT_JDK_VERSION}
+
+VOLUME /services
+
+ENV SW_LOGGING_OUTPUT=CONSOLE
+
+ADD e2e-service-consumer/target/e2e-service-consumer-2.0.0.jar /services/
+
+CMD ["sh", "-c", "java -jar /services/e2e-service-consumer-2.0.0.jar"]
diff --git a/test/e2e-v2/java-test-service/Dockerfile.provider 
b/test/e2e-v2/java-test-service/Dockerfile.provider
new file mode 100644
index 0000000..f857288
--- /dev/null
+++ b/test/e2e-v2/java-test-service/Dockerfile.provider
@@ -0,0 +1,27 @@
+# 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.
+
+ARG SW_AGENT_JDK_VERSION=8
+ARG SW_AGENT_JAVA_COMMIT=3997f0256056788bd054ee37e4603c11c0fd6756
+
+FROM 
ghcr.io/apache/skywalking-java/skywalking-java:${SW_AGENT_JAVA_COMMIT}-java${SW_AGENT_JDK_VERSION}
+
+VOLUME /services
+
+ENV SW_LOGGING_OUTPUT=CONSOLE
+
+ADD e2e-service-provider/target/e2e-service-provider-2.0.0.jar /services/
+
+CMD ["sh", "-c", "java -jar /services/e2e-service-provider-2.0.0.jar"]
diff --git a/test/e2e-v2/java-test-service/e2e-service-consumer/pom.xml 
b/test/e2e-v2/java-test-service/e2e-service-consumer/pom.xml
new file mode 100644
index 0000000..a57938d
--- /dev/null
+++ b/test/e2e-v2/java-test-service/e2e-service-consumer/pom.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  ~
+  -->
+
+
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <parent>
+        <artifactId>apache-skywalking-e2e</artifactId>
+        <groupId>org.apache.skywalking</groupId>
+        <version>2.0.0</version>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <packaging>jar</packaging>
+
+    <artifactId>e2e-service-consumer</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.skywalking</groupId>
+            <artifactId>apm-toolkit-trace</artifactId>
+            <version>${sw.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>${spring.boot.version}</version>
+                <configuration>
+                    <executable>true</executable>
+                    <addResources>true</addResources>
+                    <excludeDevtools>true</excludeDevtools>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/E2EConfiguration.java
 
b/test/e2e-v2/java-test-service/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/E2EConfiguration.java
new file mode 100644
index 0000000..2e7bda2
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/E2EConfiguration.java
@@ -0,0 +1,30 @@
+/*
+ * 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.e2e;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+@Data
+@Configuration
+@ConfigurationProperties("e2e")
+public class E2EConfiguration {
+    private String providerBaseUrl;
+}
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/Service1Application.java
 
b/test/e2e-v2/java-test-service/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/Service1Application.java
new file mode 100644
index 0000000..138f9f8
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/Service1Application.java
@@ -0,0 +1,29 @@
+/*
+ * 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.e2e;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Service1Application {
+    public static void main(String[] args) {
+        SpringApplication.run(Service1Application.class, args);
+    }
+}
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/User.java
 
b/test/e2e-v2/java-test-service/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/User.java
new file mode 100644
index 0000000..66d7c0d
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/User.java
@@ -0,0 +1,27 @@
+/*
+ * 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.e2e;
+
+import lombok.Data;
+
+@Data
+public class User {
+    private Long id;
+    private String name;
+}
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/controller/HealthController.java
 
b/test/e2e-v2/java-test-service/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/controller/HealthController.java
new file mode 100644
index 0000000..999a015
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/controller/HealthController.java
@@ -0,0 +1,36 @@
+/*
+ * 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.e2e.controller;
+
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequiredArgsConstructor
+public class HealthController {
+    @GetMapping("/health")
+    @SuppressWarnings("EmptyMethod")
+    @ResponseStatus(code = HttpStatus.OK)
+    public void hello() {
+    }
+
+}
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/controller/UserController.java
 
b/test/e2e-v2/java-test-service/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/controller/UserController.java
new file mode 100644
index 0000000..40cb7c9
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-consumer/src/main/java/org/apache/skywalking/e2e/controller/UserController.java
@@ -0,0 +1,87 @@
+/*
+ * 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.e2e.controller;
+
+import com.google.common.base.Strings;
+import lombok.RequiredArgsConstructor;
+import org.apache.skywalking.apm.toolkit.trace.TraceContext;
+import org.apache.skywalking.e2e.E2EConfiguration;
+import org.apache.skywalking.e2e.User;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Optional;
+import java.util.Random;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+@RestController
+@RequiredArgsConstructor
+public class UserController {
+    private final RestTemplate restTemplate = new RestTemplate();
+
+    private final E2EConfiguration configuration;
+
+    private final int sleepMin = 500;
+
+    private final int sleepMax = 1000;
+
+    @PostMapping("/info")
+    public String info() throws InterruptedException {
+        Thread.sleep(randomSleepLong(sleepMin, sleepMax));
+
+        Optional<ResponseEntity<String>> optionalResponseEntity = Stream.of(
+            Strings.nullToEmpty(configuration.getProviderBaseUrl()).split(","))
+                                                                        
.map(baseUrl -> restTemplate.postForEntity(
+                                                                            
baseUrl + "/info", null, String.class))
+                                                                        
.findFirst();
+        if (optionalResponseEntity.isPresent() && 
optionalResponseEntity.get().getStatusCodeValue() == 200) {
+            return optionalResponseEntity.get().getBody();
+        }
+        throw new RuntimeException();
+    }
+
+    @PostMapping("/users")
+    public Object createAuthor(@RequestBody final User user) throws 
InterruptedException {
+        Thread.sleep(randomSleepLong(sleepMin, sleepMax));
+
+        return 
Stream.of(Strings.nullToEmpty(configuration.getProviderBaseUrl()).split(","))
+                     .map(baseUrl -> restTemplate.postForEntity(baseUrl + 
"/users", user, User.class))
+                     .collect(Collectors.toList());
+    }
+
+    @PostMapping("/correlation")
+    public String correlation() throws InterruptedException {
+        Thread.sleep(randomSleepLong(sleepMin, sleepMax));
+        TraceContext.putCorrelation("CONSUMER_KEY", "consumer");
+
+        String baseUrl = configuration.getProviderBaseUrl();
+        ResponseEntity<String> resp = restTemplate.postForEntity(baseUrl + 
"/correlation", null, String.class);
+        return resp.getBody();
+    }
+
+    private long randomSleepLong(int min, int max) {
+        Random rand = new Random();
+        int randomNumber = rand.nextInt((max - min) + 1) + min;
+        return randomNumber;
+    }
+}
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-consumer/src/main/resources/application.yml
 
b/test/e2e-v2/java-test-service/e2e-service-consumer/src/main/resources/application.yml
new file mode 100644
index 0000000..d85955b
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-consumer/src/main/resources/application.yml
@@ -0,0 +1,24 @@
+# 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.
+
+server:
+  port: 9092
+
+spring:
+  main:
+    banner-mode: 'off'
+
+e2e:
+  provider-base-url: ${PROVIDER_URL:http://127.0.0.1:9090}
diff --git a/test/e2e-v2/java-test-service/e2e-service-provider/pom.xml 
b/test/e2e-v2/java-test-service/e2e-service-provider/pom.xml
new file mode 100644
index 0000000..3e44264
--- /dev/null
+++ b/test/e2e-v2/java-test-service/e2e-service-provider/pom.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  ~
+  -->
+
+
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <parent>
+        <artifactId>apache-skywalking-e2e</artifactId>
+        <groupId>org.apache.skywalking</groupId>
+        <version>2.0.0</version>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <packaging>jar</packaging>
+
+    <artifactId>e2e-service-provider</artifactId>
+
+    <properties>
+        <log4j.version>1.2.17</log4j.version>
+        <log4j2.version>2.7</log4j2.version>
+        <logback.version>1.2.3</logback.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+            <version>${spring.boot.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.h2database</groupId>
+            <artifactId>h2</artifactId>
+            <version>${h2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>log4j-to-slf4j</artifactId>
+                    <groupId>org.apache.logging.log4j</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.skywalking</groupId>
+            <artifactId>apm-toolkit-micrometer-registry</artifactId>
+            <version>8.2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>${log4j.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j2.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+            <version>${logback.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.skywalking</groupId>
+            <artifactId>apm-toolkit-logback-1.x</artifactId>
+            <version>${sw.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.skywalking</groupId>
+            <artifactId>apm-toolkit-log4j-1.x</artifactId>
+            <version>${sw.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.skywalking</groupId>
+            <artifactId>apm-toolkit-log4j-2.x</artifactId>
+            <version>${sw.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.skywalking</groupId>
+            <artifactId>apm-toolkit-trace</artifactId>
+            <version>${sw.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>${spring.boot.version}</version>
+                <configuration>
+                    <executable>true</executable>
+                    <addResources>true</addResources>
+                    <excludeDevtools>true</excludeDevtools>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/KeyValue.java
 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/KeyValue.java
new file mode 100644
index 0000000..64bb447
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/KeyValue.java
@@ -0,0 +1,29 @@
+/*
+ * 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.e2e;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+public class KeyValue {
+
+    private String key;
+    private String value;
+}
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/Service0Application.java
 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/Service0Application.java
new file mode 100644
index 0000000..c5f8797
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/Service0Application.java
@@ -0,0 +1,41 @@
+/*
+ * 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.e2e;
+
+import org.apache.skywalking.apm.meter.micrometer.SkywalkingMeterRegistry;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+
+@EnableJpaRepositories
+@SpringBootApplication
+@ComponentScan({"org.apache.skywalking", "test.apache.skywalking"})
+public class Service0Application {
+    public static void main(String[] args) {
+        SpringApplication.run(Service0Application.class, args);
+    }
+
+    @Bean
+    SkywalkingMeterRegistry skywalkingMeterRegistry() {
+        return new SkywalkingMeterRegistry();
+    }
+
+}
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/User.java
 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/User.java
new file mode 100644
index 0000000..2acc78a
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/User.java
@@ -0,0 +1,42 @@
+/*
+ * 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.e2e;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.RequiredArgsConstructor;
+
+@Data
+@Entity
+@Builder
+@AllArgsConstructor
+@RequiredArgsConstructor
+public class User {
+    @Id
+    @GeneratedValue
+    private Long id;
+
+    @Column
+    private String name;
+}
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/UserRepo.java
 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/UserRepo.java
new file mode 100644
index 0000000..bafea9b
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/UserRepo.java
@@ -0,0 +1,24 @@
+/*
+ * 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.e2e;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface UserRepo extends JpaRepository<User, Long> {
+}
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/AlarmController.java
 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/AlarmController.java
new file mode 100644
index 0000000..fd44670
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/AlarmController.java
@@ -0,0 +1,82 @@
+/*
+ * 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.e2e.controller;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.apache.skywalking.e2e.KeyValue;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RestController
+@RequestMapping("/alarm")
+public class AlarmController {
+
+    // Save all received alarm message from oap
+    private List<AlarmMessage> alarmMessages = new ArrayList<>();
+
+    @PostMapping("/receive")
+    public String receiveAlarmMessage(@RequestBody List<AlarmMessage> data) {
+        alarmMessages.addAll(data);
+        return "success";
+    }
+
+    @PostMapping("/read")
+    public Alarms readMessages() {
+        return Alarms.builder().messages(alarmMessages).build();
+    }
+
+    /**
+     * Alarm message represents the details of each alarm.
+     */
+    @Setter
+    @Getter
+    @NoArgsConstructor
+    public static class AlarmMessage {
+        private int scopeId;
+        private String scope;
+        private String name;
+        private String id0;
+        private String id1;
+        private String ruleName;
+        private String alarmMessage;
+        private long startTime;
+        private List<KeyValue> tags;
+    }
+
+    /**
+     * Alarm wrapper
+     */
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class Alarms {
+        private List<AlarmMessage> messages;
+    }
+
+}
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/FileLogController.java
 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/FileLogController.java
new file mode 100644
index 0000000..34e293e
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/FileLogController.java
@@ -0,0 +1,41 @@
+/*
+ * 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.e2e.controller;
+
+import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.skywalking.apm.toolkit.trace.TraceContext;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class FileLogController {
+
+    private static final Logger LOG4J_LOGGER = Logger.getLogger("fileLogger");
+    private static final org.apache.logging.log4j.Logger LOG4J2_LOGGER = 
LogManager.getLogger("fileLogger");
+    private static final org.slf4j.Logger LOGBACK_LOGGER = 
LoggerFactory.getLogger("fileLogger");
+
+    @RequestMapping(value = "/file/logs/trigger")
+    public String trigger() {
+        LOG4J_LOGGER.info("log4j fileLogger ==> mills: " + 
System.currentTimeMillis());
+        LOG4J2_LOGGER.info("log4j2 fileLogger ==> mills: " + 
System.currentTimeMillis());
+        LOGBACK_LOGGER.info("logback fileLogger ==> mills: {}", 
System.currentTimeMillis());
+        return TraceContext.traceId();
+    }
+}
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/HealthController.java
 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/HealthController.java
new file mode 100644
index 0000000..9871773
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/HealthController.java
@@ -0,0 +1,31 @@
+/*
+ * 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.e2e.controller;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@SuppressWarnings("SameReturnValue")
+public class HealthController {
+    @GetMapping("/health")
+    public String hello() {
+        return "healthy";
+    }
+}
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/LogController.java
 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/LogController.java
new file mode 100644
index 0000000..a84d99b
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/LogController.java
@@ -0,0 +1,42 @@
+/*
+ * 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.e2e.controller;
+
+import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.skywalking.apm.toolkit.trace.TraceContext;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class LogController {
+
+    private static final Logger LOG4J_LOGGER = 
Logger.getLogger(LogController.class);
+    private static final org.apache.logging.log4j.Logger LOG4J2_LOGGER = 
LogManager.getLogger(
+        LogController.class);
+    private static final org.slf4j.Logger LOGBACK_LOGGER = 
LoggerFactory.getLogger(LogController.class);
+
+    @RequestMapping(value = "/logs/trigger")
+    public String trigger() {
+        LOG4J_LOGGER.info("log4j message==> now: " + 
System.currentTimeMillis());
+        LOG4J2_LOGGER.info("log4j2 message==> now: " + 
System.currentTimeMillis());
+        LOGBACK_LOGGER.info("logback message==> now: {}", 
System.currentTimeMillis());
+        return TraceContext.traceId();
+    }
+}
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
new file mode 100644
index 0000000..2a84865
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/controller/UserController.java
@@ -0,0 +1,69 @@
+/*
+ * 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.e2e.controller;
+
+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.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import org.slf4j.LoggerFactory;
+
+import java.util.Random;
+
+@RestController
+@RequiredArgsConstructor
+@SuppressWarnings("SameReturnValue")
+public class UserController {
+    private static final org.slf4j.Logger LOGBACK_LOGGER = 
LoggerFactory.getLogger(UserController.class);
+
+    private final UserRepo userRepo;
+    private final int sleepMin = 500;
+    private final int sleepMax = 1000;
+
+    @PostMapping("/info")
+    public String info() throws InterruptedException {
+        Thread.sleep(randomSleepLong(sleepMin, sleepMax));
+        LOGBACK_LOGGER.info("logback message==> now: {}", 
System.currentTimeMillis());
+        return "whatever";
+    }
+
+    @PostMapping("/users")
+    public User createAuthor(@RequestBody final User user) throws 
InterruptedException {
+        Thread.sleep(randomSleepLong(sleepMin, sleepMax));
+        return userRepo.save(user);
+    }
+
+    @PostMapping("/correlation")
+    public String correlation() throws InterruptedException {
+        Thread.sleep(randomSleepLong(sleepMin, sleepMax));
+        TraceContext.putCorrelation("PROVIDER_KEY", "provider");
+        return TraceContext.getCorrelation("CONSUMER_KEY").orElse("") + "_"
+            + TraceContext.getCorrelation("MIDDLE_KEY").orElse("") + "_"
+            + TraceContext.getCorrelation("PROVIDER_KEY").orElse("");
+    }
+
+    private long randomSleepLong(int min, int max) {
+        Random rand = new Random();
+        int randomNumber = rand.nextInt((max - min) + 1) + min;
+        return randomNumber;
+    }
+}
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/lua/LuaController.java
 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/lua/LuaController.java
new file mode 100644
index 0000000..4e11cf3
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/org/apache/skywalking/e2e/lua/LuaController.java
@@ -0,0 +1,54 @@
+/*
+ * 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.e2e.lua;
+
+import lombok.RequiredArgsConstructor;
+import org.apache.skywalking.apm.toolkit.trace.TraceContext;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
+
+import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.concurrent.TimeUnit;
+
+@RestController
+@RequiredArgsConstructor
+public class LuaController {
+    protected final RestTemplate restTemplate = new RestTemplate();
+
+    @PostMapping("/nginx/entry/info")
+    private String nginxEntry(String backend) throws MalformedURLException, 
URISyntaxException {
+        final URL url = new URL("http://nginx:8080/nginx/info";);
+        TraceContext.putCorrelation("entry", "entry_value");
+        final ResponseEntity<String> response = 
restTemplate.postForEntity(url.toURI(), null, String.class);
+        return response.getBody();
+    }
+
+    @PostMapping("/nginx/end/info")
+    private String nginxEnd() throws InterruptedException {
+        TimeUnit.SECONDS.sleep(1);
+
+        return TraceContext.getCorrelation("entry").orElse("")
+            + "_" + TraceContext.getCorrelation("nginx").orElse("");
+    }
+
+}
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/test/apache/skywalking/e2e/profile/CreateUser.java
 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/test/apache/skywalking/e2e/profile/CreateUser.java
new file mode 100644
index 0000000..30cb74a
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/test/apache/skywalking/e2e/profile/CreateUser.java
@@ -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.
+ *
+ */
+
+package test.apache.skywalking.e2e.profile;
+
+import lombok.Data;
+import org.apache.skywalking.e2e.User;
+
+@Data
+public class CreateUser {
+    private String name;
+    private boolean enableProfiling;
+
+    public User toUser() {
+        return User.builder().name(name).build();
+    }
+}
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/test/apache/skywalking/e2e/profile/ProfileController.java
 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/test/apache/skywalking/e2e/profile/ProfileController.java
new file mode 100644
index 0000000..b939a84
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/java/test/apache/skywalking/e2e/profile/ProfileController.java
@@ -0,0 +1,42 @@
+/*
+ * 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 test.apache.skywalking.e2e.profile;
+
+import java.util.concurrent.TimeUnit;
+import lombok.RequiredArgsConstructor;
+import org.apache.skywalking.e2e.User;
+import org.apache.skywalking.e2e.UserRepo;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequiredArgsConstructor
+public class ProfileController {
+    private final UserRepo userRepo;
+
+    @PostMapping("/profile/{name}")
+    public User createAuthor(@RequestBody final CreateUser createUser) throws 
InterruptedException {
+        final User user = userRepo.save(createUser.toUser());
+        if (createUser.isEnableProfiling()) {
+            TimeUnit.MILLISECONDS.sleep(6200);
+        }
+        return user;
+    }
+}
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-provider/src/main/resources/application.yml
 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/resources/application.yml
new file mode 100644
index 0000000..360c10c
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/resources/application.yml
@@ -0,0 +1,43 @@
+# 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.
+
+server:
+  port: 9090
+
+spring:
+  main:
+    banner-mode: 'off'
+  datasource:
+    url: jdbc:h2:mem:testdb
+    driver-class-name: org.h2.Driver
+    data-username: sa
+    password: sa
+    platform: org.hibernate.dialect.H2Dialect
+  jpa:
+    generate-ddl: true
+    hibernate:
+      ddl-auto: create-drop
+    properties:
+      hibernate.format_sql: true
+    show-sql: true
+
+management:
+  metrics:
+    use-global-registry: true
+    web:
+      server:
+        request:
+          autotime:
+            enabled: true
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-provider/src/main/resources/log4j.properties
 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/resources/log4j.properties
new file mode 100644
index 0000000..56a721e
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/resources/log4j.properties
@@ -0,0 +1,26 @@
+# 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.
+log4j.rootLogger=info,CustomAppender
+log4j.appender.CustomAppender=org.apache.skywalking.apm.toolkit.log.log4j.v1.x.log.GRPCLogClientAppender
+log4j.appender.CustomAppender.layout=org.apache.log4j.PatternLayout
+log4j.appender.CustomAppender.layout.ConversionPattern=[%t] %-5p %c %x - %m%n
+
+log4j.logger.fileLogger=info,FileAppender
+log4j.appender.FileAppender=org.apache.log4j.FileAppender
+log4j.appender.FileAppender.ImmediateFlush=true
+log4j.appender.FileAppender.Append=true
+log4j.appender.FileAppender.File=/tmp/skywalking-logs/log4j1/e2e-service-provider.log
+log4j.appender.FileAppender.layout=org.apache.skywalking.apm.toolkit.log.log4j.v1.x.TraceIdPatternLayout
+log4j.appender.FileAppender.layout.ConversionPattern=[%T{SW_CTX}] [%p] 
%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c:%L - %m%n
\ No newline at end of file
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-provider/src/main/resources/log4j2.xml
 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..65b0bbd
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/resources/log4j2.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+<Configuration status="WARN">
+    <Appenders>
+        <Console name="Console" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} 
- %msg%n"/>
+        </Console>
+        <GRPCLogClientAppender name="grpc-log">
+            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} 
- %msg%n"/>
+        </GRPCLogClientAppender>
+        <RandomAccessFile name="fileAppender" 
fileName="/tmp/skywalking-logs/log4j2/e2e-service-provider.log" 
immediateFlush="true" append="true">
+            <PatternLayout>
+                <Pattern>[%sw_ctx] [%p] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c:%L 
- %m%n</Pattern>
+            </PatternLayout>
+        </RandomAccessFile>
+    </Appenders>
+
+
+
+    <Loggers>
+        <Root level="info">
+            <AppenderRef ref="Console"/>
+            <AppenderRef ref="grpc-log"/>
+        </Root>
+        <Logger name="fileLogger" level="info" additivity="false">
+            <AppenderRef ref="fileAppender"/>
+        </Logger>
+    </Loggers>
+</Configuration>
diff --git 
a/test/e2e-v2/java-test-service/e2e-service-provider/src/main/resources/logback.xml
 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/resources/logback.xml
new file mode 100644
index 0000000..e091cda
--- /dev/null
+++ 
b/test/e2e-v2/java-test-service/e2e-service-provider/src/main/resources/logback.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+<configuration scan="true" scanPeriod=" 5 seconds">
+
+    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+            <layout 
class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
+                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] 
%-5level %logger{36} -%msg%n</Pattern>
+            </layout>
+        </encoder>
+    </appender>
+
+    <appender name="grpc-log" 
class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
+        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+            <layout 
class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
+                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] 
%-5level %logger{36} -%msg%n</Pattern>
+            </layout>
+        </encoder>
+    </appender>
+
+    <appender name="fileAppender" class="ch.qos.logback.core.FileAppender">
+        <file>/tmp/skywalking-logs/logback/e2e-service-provider.log</file>
+        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+            <layout 
class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
+                <Pattern>[%sw_ctx] [%level] %d{yyyy-MM-dd HH:mm:ss.SSS} 
[%thread] %logger:%line - %msg%n</Pattern>
+            </layout>
+        </encoder>
+    </appender>
+
+    <root level="INFO">
+        <appender-ref ref="grpc-log"/>
+        <appender-ref ref="stdout"/>
+    </root>
+    <logger name="fileLogger" level="INFO">
+        <appender-ref ref="fileAppender"/>
+    </logger>
+</configuration>
diff --git a/test/e2e-v2/java-test-service/pom.xml 
b/test/e2e-v2/java-test-service/pom.xml
new file mode 100644
index 0000000..a2f3659
--- /dev/null
+++ b/test/e2e-v2/java-test-service/pom.xml
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  ~
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.skywalking</groupId>
+    <artifactId>apache-skywalking-e2e</artifactId>
+    <version>2.0.0</version>
+
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>e2e-service-provider</module>
+        <module>e2e-service-consumer</module>
+    </modules>
+
+    <properties>
+        <sw.version>8.7.0</sw.version>
+
+        <java.version>1.8</java.version>
+        <maven.compiler.source>${java.version}</maven.compiler.source>
+        <maven.compiler.target>${java.version}</maven.compiler.target>
+
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
+        <spring.boot.version>2.2.5.RELEASE</spring.boot.version>
+        <spring.cloud.version>2.1.2.RELEASE</spring.cloud.version>
+        <jupeter.version>5.6.0</jupeter.version>
+        <jackson.version>2.9.7</jackson.version>
+        <guava.version>30.1.1-jre</guava.version>
+        <h2.version>1.4.199</h2.version>
+        <mysql.version>8.0.13</mysql.version>
+        <lombok.version>1.18.20</lombok.version>
+        <kafka-clients.version>2.4.1</kafka-clients.version>
+
+        <maven-failsafe-plugin.version>2.22.0</maven-failsafe-plugin.version>
+        <maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version>
+        
<maven-checkstyle-plugin.version>3.1.0</maven-checkstyle-plugin.version>
+    </properties>
+
+    <repositories>
+       <repository>
+           <id>apache.snapshots</id>
+           <name>Apache Development Snapshot Repository</name>
+           <url>https://repository.apache.org/content/groups/snapshots/</url>
+           <releases>
+               <enabled>false</enabled>
+           </releases>
+           <snapshots>
+               <enabled>true</enabled>
+           </snapshots>
+       </repository>
+    </repositories>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>2.5.5</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>${guava.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>${lombok.version}</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>${maven-compiler-plugin.version}</version>
+                <configuration>
+                    <source>${java.version}</source>
+                    <target>${java.version}</target>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+                <version>${maven-failsafe-plugin.version}</version>
+                <configuration>
+                    <includes>
+                        <include>**/*E2E.java</include>
+                    </includes>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>verify</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-checkstyle-plugin</artifactId>
+                <version>${maven-checkstyle-plugin.version}</version>
+                <configuration>
+                    
<configLocation>${maven.multiModuleProjectDirectory}/apm-checkstyle/checkStyle.xml</configLocation>
+                    <encoding>UTF-8</encoding>
+                    <consoleOutput>true</consoleOutput>
+                    
<includeTestSourceDirectory>true</includeTestSourceDirectory>
+                    <sourceDirectories>
+                        
<sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
+                        
<sourceDirectory>${project.build.testSourceDirectory}</sourceDirectory>
+                    </sourceDirectories>
+                    <resourceIncludes>
+                        **/*.properties,
+                        **/*.sh,
+                        **/*.bat,
+                        **/*.yml,
+                        **/*.yaml,
+                        **/*.xml
+                    </resourceIncludes>
+                    <resourceExcludes>
+                        **/.asf.yaml,
+                        **/.github/**
+                    </resourceExcludes>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>validate</id>
+                        <phase>process-sources</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/test/e2e-v2/script/docker-compose/base-compose.yml 
b/test/e2e-v2/script/docker-compose/base-compose.yml
new file mode 100644
index 0000000..975d5d9
--- /dev/null
+++ b/test/e2e-v2/script/docker-compose/base-compose.yml
@@ -0,0 +1,104 @@
+# 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.
+
+version: '2.1'
+
+services:
+  oap:
+    image: skywalking/oap:latest
+    expose:
+      - 11800
+      - 12800
+      - 10051
+      - 5005
+    networks:
+      - e2e
+    volumes:
+      - ./../prepare/setup-oap/download-mysql.sh:/download-mysql.sh
+      - ./../prepare/setup-oap/log4j2.xml:/skywalking/config/log4j2.xml
+    environment:
+      SW_CLUSTER_ZK_HOST_PORT: zk:2181
+      SW_STORAGE_ES_CLUSTER_NODES: es:9200
+      SW_JDBC_URL: jdbc:mysql://mysql:3306/swtest
+      SW_STORAGE_INFLUXDB_URL: http://influxdb:8086
+      SW_CONFIG_ETCD_PERIOD: 1
+      SW_CONFIG_ETCD_ENDPOINTS: http://etcd:2379
+      SW_CLUSTER_ETCD_ENDPOINTS: http://etcd:2379
+    healthcheck:
+      test: ["CMD", "sh", "-c", "nc -zn 127.0.0.1 11800"]
+      interval: 5s
+      timeout: 60s
+      retries: 120
+
+  ui:
+    image: skywalking/ui:latest
+    expose:
+      - 8080
+    networks:
+      - e2e
+    environment:
+      - SW_OAP_ADDRESS=http://oap:12800
+
+  provider:
+    build:
+      context: ../../java-test-service/
+      dockerfile: Dockerfile.provider
+      args:
+        - SW_AGENT_JDK_VERSION=${SW_AGENT_JDK_VERSION}
+        - SW_AGENT_JAVA_COMMIT=${SW_AGENT_JAVA_COMMIT}
+    networks:
+      - e2e
+    expose:
+      - 9090
+      - 5005
+    environment:
+      SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800
+      SW_AGENT_NAME: e2e-service-provider
+      SW_AGENT_INSTANCE_NAME: provider1
+      SW_AGENT_COLLECTOR_GET_PROFILE_TASK_INTERVAL: 1
+      SW_AGENT_COLLECTOR_GET_AGENT_DYNAMIC_CONFIG_INTERVAL: 1
+    healthcheck:
+      test: ["CMD", "sh", "-c", "nc -nz 127.0.0.1 9090"]
+      interval: 5s
+      timeout: 60s
+      retries: 120
+
+  consumer:
+    build:
+      context: ../../java-test-service/
+      dockerfile: Dockerfile.consumer
+      args:
+        - SW_AGENT_JDK_VERSION=${SW_AGENT_JDK_VERSION}
+        - SW_AGENT_JAVA_COMMIT=${SW_AGENT_JAVA_COMMIT}
+    networks:
+      - e2e
+    expose:
+      - 9092
+      - 5005
+    environment:
+      SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800
+      PROVIDER_URL: http://provider:9090
+      SW_AGENT_NAME: e2e-service-consumer
+      SW_AGENT_INSTANCE_NAME: consumer1
+      SW_AGENT_COLLECTOR_GET_PROFILE_TASK_INTERVAL: 1
+      SW_AGENT_COLLECTOR_GET_AGENT_DYNAMIC_CONFIG_INTERVAL: 1
+    healthcheck:
+      test: ["CMD", "sh", "-c", "nc -nz 127.0.0.1 9092"]
+      interval: 5s
+      timeout: 60s
+      retries: 120
+
+networks:
+  e2e:
diff --git a/test/e2e-v2/script/prepare/setup-e2e-shell/install-etcdctl.sh 
b/test/e2e-v2/script/prepare/setup-e2e-shell/install-etcdctl.sh
new file mode 100644
index 0000000..da8bebd
--- /dev/null
+++ b/test/e2e-v2/script/prepare/setup-e2e-shell/install-etcdctl.sh
@@ -0,0 +1,38 @@
+#!/usr/bin/env bash
+
+# ----------------------------------------------------------------------------
+# 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.
+# ----------------------------------------------------------------------------
+
+BASE_DIR=$1
+BIN_DIR=$2
+
+if ! command -v etcdctl &> /dev/null; then
+  mkdir -p $BASE_DIR/etcdctl && cd $BASE_DIR/etcdctl
+  utype=$(uname | awk '{print tolower($0)}')
+  suffix=
+  if [ $utype = "darwin" ]
+  then
+      suffix="zip"
+  else
+      suffix="tar.gz"
+  fi
+  curl -kLo etcdctl.$suffix 
https://github.com/coreos/etcd/releases/download/v3.5.0/etcd-v3.5.0-$utype-amd64.$suffix
+  tar -zxf etcdctl.$suffix --strip=1
+  cp etcdctl $BIN_DIR/
+fi
\ No newline at end of file
diff --git a/test/e2e-v2/script/prepare/setup-e2e-shell/install-swctl.sh 
b/test/e2e-v2/script/prepare/setup-e2e-shell/install-swctl.sh
new file mode 100644
index 0000000..d2d5113
--- /dev/null
+++ b/test/e2e-v2/script/prepare/setup-e2e-shell/install-swctl.sh
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+
+# ----------------------------------------------------------------------------
+# 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.
+# ----------------------------------------------------------------------------
+
+BASE_DIR=$1
+BIN_DIR=$2
+
+if ! command -v swctl &> /dev/null; then
+  mkdir -p $BASE_DIR/swctl && cd $BASE_DIR/swctl
+  curl -kLo skywalking-cli.tar.gz 
https://github.com/apache/skywalking-cli/archive/401e0e5671a3fb49de1d1e1e89f5b693b2062867.tar.gz
+  tar -zxf skywalking-cli.tar.gz --strip=1
+  utype=$(uname | awk '{print tolower($0)}')
+  make $utype && mv bin/swctl-*-$utype-amd64 $BIN_DIR/swctl
+fi
\ No newline at end of file
diff --git a/test/e2e-v2/script/prepare/setup-e2e-shell/install-yq.sh 
b/test/e2e-v2/script/prepare/setup-e2e-shell/install-yq.sh
new file mode 100644
index 0000000..28fd299
--- /dev/null
+++ b/test/e2e-v2/script/prepare/setup-e2e-shell/install-yq.sh
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+
+# ----------------------------------------------------------------------------
+# 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.
+# ----------------------------------------------------------------------------
+
+BASE_DIR=$1
+BIN_DIR=$2
+
+if ! command -v yq &> /dev/null; then
+  mkdir -p $BASE_DIR/yq && cd $BASE_DIR/yq
+  curl -kLo yq.tar.gz https://github.com/mikefarah/yq/archive/v4.11.1.tar.gz
+  tar -zxf yq.tar.gz --strip=1
+  go install && go build -ldflags -s && cp yq $BIN_DIR/
+fi
\ No newline at end of file
diff --git a/test/e2e-v2/script/prepare/setup-e2e-shell/install.sh 
b/test/e2e-v2/script/prepare/setup-e2e-shell/install.sh
new file mode 100644
index 0000000..3d440fa
--- /dev/null
+++ b/test/e2e-v2/script/prepare/setup-e2e-shell/install.sh
@@ -0,0 +1,35 @@
+#!/usr/bin/env bash
+
+# ----------------------------------------------------------------------------
+# 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.
+# ----------------------------------------------------------------------------
+
+set -ex
+
+NAME=$1
+CURRENT_DIR="$(cd "$(dirname $0)"; pwd)"
+
+# prepare base dir
+TMP_DIR=/tmp/skywalking-infra-e2e
+BIN_DIR=/usr/local/bin
+mkdir -p $TMP_DIR && cd $TMP_DIR
+
+# execute install
+bash $CURRENT_DIR/install-$NAME.sh $TMP_DIR $BIN_DIR
+
+echo "success to install $NAME"
\ No newline at end of file
diff --git a/test/e2e-v2/script/prepare/setup-oap/download-mysql.sh 
b/test/e2e-v2/script/prepare/setup-oap/download-mysql.sh
new file mode 100755
index 0000000..3d5c87d
--- /dev/null
+++ b/test/e2e-v2/script/prepare/setup-oap/download-mysql.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+
+# 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.
+
+set -ex
+
+apk add curl
+
+SW_HOME=/skywalking
+MYSQL_URL="https://repo.maven.apache.org/maven2/mysql/mysql-connector-java/8.0.13/mysql-connector-java-8.0.13.jar";
+MYSQL_DRIVER="mysql-connector-java-8.0.13.jar"
+
+if ! curl -Lo "${SW_HOME}/oap-libs/${MYSQL_DRIVER}" ${MYSQL_URL}; then
+    echo "Fail to download ${MYSQL_DRIVER}."
+    exit 1
+fi
diff --git a/test/e2e-v2/script/prepare/setup-oap/log4j2.xml 
b/test/e2e-v2/script/prepare/setup-oap/log4j2.xml
new file mode 100644
index 0000000..2758ba6
--- /dev/null
+++ b/test/e2e-v2/script/prepare/setup-oap/log4j2.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  ~
+  -->
+
+<Configuration status="INFO">
+    <Appenders>
+        <Console name="Console" target="SYSTEM_OUT">
+            <PatternLayout charset="UTF-8" pattern="%d %c %L [%t] %-5p %x - 
%m%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+        <logger name="org.eclipse.jetty" level="INFO"/>
+        <logger name="org.apache.zookeeper" level="INFO"/>
+        <logger name="io.grpc.netty" level="INFO"/>
+        <logger name="org.apache.skywalking.oap.meter.analyzer" level="DEBUG"/>
+        <logger 
name="org.apache.skywalking.oap.server.receiver.istio.telemetry" level="DEBUG"/>
+        <logger name="org.apache.skywalking.oap.server.fetcher.prometheus" 
level="DEBUG"/>
+        <logger name="org.apache.skywalking.oap.server.receiver.envoy.als" 
level="DEBUG"/>
+        <logger 
name="org.apache.skywalking.oap.server.storage.plugin.elasticsearch" 
level="DEBUG"/>
+        <logger name="org.apache.skywalking.oap.server.core.storage.ttl" 
level="DEBUG"/>
+        <logger name="org.apache.skywalking.library.elasticsearch" 
level="DEBUG"/>
+        <Root level="INFO">
+            <AppenderRef ref="Console"/>
+        </Root>
+    </Loggers>
+</Configuration>

Reply via email to