You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@skywalking.apache.org by wu...@apache.org on 2018/07/09 04:04:59 UTC

[incubator-skywalking] branch 6.0 updated: Finish the new document structure.

This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch 6.0
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git


The following commit(s) were added to refs/heads/6.0 by this push:
     new f121730  Finish the new document structure.
f121730 is described below

commit f121730ede3eb5c031f70b7b0eb3816521fc7c91
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Sun Jul 8 21:04:50 2018 -0700

    Finish the new document structure.
---
 README.md                                          |  22 -
 docs/README.md                                     |  89 +---
 docs/en/Collector-Table-Description.md             | 572 ---------------------
 docs/en/Component-libraries-extend.md              |  61 ---
 docs/en/Deploy-backend-in-cluster-mode.md          | 149 ------
 docs/en/Deploy-backend-in-standalone-mode.md       |  42 --
 docs/en/Deploy-skywalking-agent.md                 |  48 --
 docs/en/FAQ/README.md                              |  13 +
 docs/en/Incubating/Abstract.md                     |  13 -
 docs/en/Optional-plugins.md                        |   8 -
 docs/en/concepts-and-designs/README.md             |  16 +
 .../{OAP/README.md => concepts-and-designs/oal.md} | 135 +----
 docs/en/concepts-and-designs/oap-overview.md       |  33 ++
 docs/en/concepts-and-designs/overview.md           |   0
 docs/en/concepts-and-designs/query-oap.md          |  48 ++
 docs/en/{ => guides}/How-to-release.md             |   0
 docs/en/guides/README.md                           |   8 +
 docs/en/protocols/README.md                        |   4 +
 ...ross-Process-Propagation-Headers-Protocol-v1.md |   0
 docs/en/{ => protocols}/Trace-Data-Protocol.md     |   4 +-
 docs/en/setup/README.md                            |  12 +
 docs/en/setup/service-agent/backend-setup.md       |   0
 .../java-agent}/Application-toolkit-log4j-1.x.md   |   0
 .../java-agent}/Application-toolkit-log4j-2.x.md   |   0
 .../java-agent}/Application-toolkit-logback-1.x.md |   0
 .../Application-toolkit-trace-cross-thread.md      |   0
 .../java-agent}/Application-toolkit-trace.md       |   0
 .../java-agent}/Applicaton-toolkit.md              |   0
 .../service-agent/java-agent}/Direct-uplink.md     |   0
 .../java-agent}/How-to-disable-plugin.md           |   0
 .../service-agent/java-agent}/Namespace.md         |   2 +-
 .../service-agent/java-agent}/Opentracing.md       |   0
 .../java-agent}/Plugin-Development-Guide.md        |   0
 .../service-agent/java-agent}/Quick-start.md       |   0
 docs/en/setup/service-agent/java-agent/README.md   |  77 +++
 .../service-agent/java-agent}/Setting-override.md  |   0
 .../service-agent/java-agent}/Supported-list.md    |   0
 .../en/{ => setup/service-agent/java-agent}/TLS.md |   2 +-
 .../service-agent/java-agent}/Token-auth.md        |   0
 .../Use-ShardingJDBC-as-storage-implementor.md     |   0
 .../agent-optional-plugins/Oracle-Resin-plugins.md |   0
 .../agent-optional-plugins/Spring-bean-plugins.md  |   0
 .../agent-optional-plugins/trace-ignore-plugin.md  |  17 +
 43 files changed, 267 insertions(+), 1108 deletions(-)

diff --git a/README.md b/README.md
index 137ea25..783fbee 100644
--- a/README.md
+++ b/README.md
@@ -29,28 +29,6 @@ microservices, cloud native and container-based (Docker, Kubernetes, Mesos) arch
 
 <img src="https://skywalkingtest.github.io/page-resources/6_overview.png"/>
 
-
-SkyWalking provides multiple probes to collect data from different sources.
-- SkyWalking native instrument agents or SDKs
-  - Auto instrument agents
-    * Java. Included in official release.
-    * [.NET Core](https://github.com/OpenSkywalking/skywalking-netcore) 
-    * [Node.js](https://github.com/OpenSkywalking/skywalking-nodejs)
-  - SDKs
-    * OpenCensus with SkyWalking exporter.
-- Service mesh control panel or data panel probes.
-  - Istio mixer adaptor.
-  - Linkerd.
-- 3rd party data tracing format.
-  - Zipkin JSON, Thrift, Protobuf v1 and v2 formats, powered by [OpenZipkin](https://github.com/openzipkin/zipkin) libs
-  - Jaeger in [Zipkin Thrift or JSON v1/v2 formats](https://github.com/jaegertracing/jaeger#backwards-compatibility-with-zipkin).
-
-# Recommend and typical usages
-1. All service are under SkyWalking native agents or SDKs monitoring.
-2. Service mesh probes.
-3. Service mesh probes + distributed tracing(SkyWalking's or 3rd-party's).
-
-
 # Document
 - [Documents in English](docs/README.md)
 
diff --git a/docs/README.md b/docs/README.md
index 1b8386b..01f1347 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,66 +1,27 @@
-## Documents
+# Welcome
+**SkyWalking 6 documents and codes are still on building, Status: WIP. Of course, we welcome everyone to join us.**
 
-  * [SkyWalking Platform Overview](en/OAP/README.md)
-  * Use application agents
-  * Use service mesh probes
-  * Deploy OAP backend
-  
-We will begin to build our new documents for our new 6 version. Below it is 5.x document, wait for reformat.  
-----------------------------  
-  
-  * Getting Started
-    * [Quick start](en/Quick-start.md)
-    * [Install javaagent](en/Deploy-skywalking-agent.md)
-    * [Deploy backend in cluster mode](en/Deploy-backend-in-cluster-mode.md)
-    * [Supported middlewares, frameworks and libraries](Supported-list.md)
-      * [How to disable plugins?](en/How-to-disable-plugin.md)
-      * [Optional plugins](en/Optional-plugins.md)
-        * [Trace Spring beans](en/agent-optional-plugins/Spring-bean-plugins.md)
-        * [Trace Oracle and Resin](en/agent-optional-plugins/Oracle-Resin-plugins.md)
-        * [[**Incubating**] Filter traces through custom services](../apm-sniffer/optional-plugins/trace-ignore-plugin/README.md)
-  * Advanced Features
-    * [Override settings through System.properties](en/Setting-override.md)
-    * [Direct uplink and disable naming discovery](en/Direct-uplink.md)
-    * [Open TLS](en/TLS.md)
-    * [Namespace Isolation](en/Namespace.md)
-    * [Token Authentication](en/Token-auth.md)
-    * [Add your own component library settings in collector](en/Component-libraries-extend.md)
-  * Incubating Features
-    * [Why are some features in **Incubating**?](en/Incubating/Abstract.md)
-    * [Use Sharding JDBC as storage implementor](en/Use-ShardingJDBC-as-storage-implementor.md)
-    * [Receive Zipkin span data format](../apm-collector/apm-collector-thirdparty-receiver/receiver-zipkin/docs/README.md)
-  * Application Toolkit
-    * [Overview](en/Applicaton-toolkit.md)
-    * [Use SkyWalking OpenTracing compatible tracer](en/Opentracing.md)
-    * Integration with log frameworks
-      * [log4j](en/Application-toolkit-log4j-1.x.md)
-      * [log4j2](en/Application-toolkit-log4j-2.x.md)
-      * [logback](en/Application-toolkit-logback-1.x.md)
-    * [Trace by SkyWalking manual APIs](en/Application-toolkit-trace.md)
-    * [Trace across threads](en/Application-toolkit-trace-cross-thread.md)
-  * Testing
-    * [Plugin Test](https://github.com/SkywalkingTest/agent-integration-test-report)
-    * [Java Agent Performance Test](https://skywalkingtest.github.io/Agent-Benchmarks/)
-  * Development Guides
-    * [How to build project](en/How-to-build.md)
-    * [Plugin development guide](en/Plugin-Development-Guide.md)
-    * [Collector table description](en/Collector-Table-Description.md)
-    * Protocol
-      * [Cross Process Propagation Headers Protocol, v1.0](en/Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md)
-      * [SkyWalking Trace Data Protocol](en/Trace-Data-Protocol.md)
-    * [Release Guide](en/How-to-release.md)
-  * [Roadmap](ROADMAP.md)
-  * Resources provided by community
-    * [Public speakings](https://github.com/OpenSkywalking/Community#public-speakings)
-    * [Videos](https://github.com/OpenSkywalking/Community#videos)
-    * [Articles](https://github.com/OpenSkywalking/Community#articles)
-  * FAQ
-    * [Why only traces in UI?](en/FAQ/Why-have-traces-no-others.md)
-    * [Too many GRPC logs in the console](en/FAQ/Too-many-gRPC-logs.md)
-    * [The trace doesn't continue in kafka consumer side](en/FAQ/kafka-plugin.md)
-    * [Agent or collector version upgrade](en/FAQ/Upgrade.md)
-    * [Protoc plugin fails in maven build](en/FAQ/Protoc-Plugin-Fails-When-Build.md)
-    * [EnhanceRequireObjectCache class cast exception](en/FAQ/EnhanceRequireObjectCache-Cast-Exception.md)
-    * [Required items could not be found, when import project into Eclipse](en/FAQ/Import-Project-Eclipse-RequireItems-Exception.md) 
+From here you can learn all about **SkyWalking**’s architecture, how to deploy and use SkyWalking and 
+resources related to the project.
+
+- [Concepts and Designs](en/concepts-and-designs/README.md). Concepts and designs explain the most important core ideas about
+SkyWalking. You can learn from here if you want to understand what is going on under our cool features and visualization.
+- [Setup](en/setup/README.md). Setup contains guides for installing SkyWalking in different scenarios. As a platform, it provides
+several ways to provide observability, including monitoring and alarm of course. 
+- [Guides](en/guides/README.md). Guides are for PPMC, committer or new contributor. At here, you can know how to develop, release 
+and what is ongoing of the community.
+- [Protocols](en/protocols/README.md). Protocols show the communication ways between agents/probes and backend. Anyone, interested
+in uplink telemetry data, definitely should read this.
+- [FAQs](en/FAQ/README.md). Include a manifest, including already known setup problems, secondary developments experiments. When 
+you are facing a problem, check here first.
+
+
+In addition, you might find these links interesting:
+
+- The latest and old releases are all available in [Apache SkyWalking release page](http://skywalking.apache.org/downloads/) and [CHANGELOG](../CHANGES.md).
+- You can find the speaking schedules at Conf, online videos and articles about SkyWalking in [Community resource catalog](https://github.com/OpenSkywalking/Community).
+Also, if you have some related to us, welcome to submit a pull request to add.
+- We’re always looking for help improving our documentation and codes, so please don’t hesitate to [file an issue](https://github.com/apache/incubator-skywalking/issues/new) 
+if you see some problem. 
+Or better yet, submit your own contributions to help make them better.
 
-    
diff --git a/docs/en/Collector-Table-Description.md b/docs/en/Collector-Table-Description.md
deleted file mode 100644
index 813878c..0000000
--- a/docs/en/Collector-Table-Description.md
+++ /dev/null
@@ -1,572 +0,0 @@
-# Collector Table Description
-This document describes the usage of tables and their columns, based on elasticsearch storage implementation.
-
-## Metric table time bucket
-### Date format
-- second: `yyyyMMddHHmmss`
-- minute: `yyyyMMddHHmm`
-- hour: `yyyyMMddHH`
-- day: `yyyyMMdd`
-- month: `yyyyMM`
-
-## Tables of Register related
-### Application
-- Table name: application
-- Get or create a database record by "application_code". 
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value same as application_id
-application_code | ac | Keyword | The application name, see `agent.config`
-application_id | ai | Integer | Auto increment, is a signed integer
-is_address | ia | Integer | Is a boolean data. True(1), False(0)
-address_id | ni | Integer | A foreign key reference by network_address table
-
-- Column `is_address`
-  - `false`. A real application, which has a custom `application_code`. At the same time, the `address_id` column value must to be 0. 
-  - `true`. A conjunction application based on IP address. `address_id` is registered in `network_address` table.
-
-### Instance
-- Table name: instance
-- Create a instance by `application_id` and `agent_uuid`
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value same as instance_id
-application_id | ai | Integer | Owner application id
-application_code | ac | Text | Owner application code
-agent_uuid | iau | Keyword | Uniquely identifies each server monitored by agent
-register_time | irt | Long | First register time
-instance_id | ii | Integer | Auto increment, is a unsigned integer
-heartbeat_time | iht | Long | Represent server is alive 
-os_info | ioi | Text | A Json data.
-is_address | iia | Integer | Is a boolean data. True(1), False(0)
-address_id | ni | Integer | A foreign key reference by network_address table
-
-- Column `os_info` 
-  - For example: {"osName":"MacOS X","hostName":peng-yongsheng","processId":1000,"ipv4s":["10.0.0.1","10.0.0.2"]}
-- Column `heartbeat_time`
-  - Updated by agent heart beat [1]
-  - Updated by JVM metric data [2]
-  - Updated by trace segment data. [3]
-  - Priority: [1] > [2] > [3]
-
-### NetworkAddress
-- Table name: network_address
-- Create a network address record by "network_address" and "span_layer". 
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value same as address_id
-address_id | ni | Integer | Auto increment, is a signed integer
-network_address | na | Keyword | Host name or IP address
-src_span_layer | ssl | Integer | Register by client or server side
-server_type | st | Integer | Such as component id, used for topology. 
-
-### ServiceName
-- Table name: service_name
-- Create a service record by "service_name_keyword", "application_id" and "src_span_type". 
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value same as service_id
-service_id | si | Integer | Auto increment, is a signed integer
-service_name | sn | Text | Operation name, used for fuzzy matching
-service_name_keyword | snk | Keyword | Operation name, used for full matching
-application_id | ai | Integer | Owner application id
-src_span_type | sst | Integer | Register from client or server side based on `src_span_type`
-
-- See `src_span_type` in [protocol doc](Trace-Data-Protocol.md#network-address-register-service)
-
-## Table of Trace Metric related
-### ApplicationComponent
-- Table name: application_component_`TimeDimension`
-- TimeDimension contains minute, hour, day, month
-- It is primarily used for the view of node type in application topology.
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, `time_bucket`_`metric_id`
-metric_id | mi | Keyword | `application_id`_`component_id`
-component_id | ci | Integer | [Component id](../../apm-protocol/apm-network/src/main/java/org/apache/skywalking/apm/network/trace/component/ComponentsDefine.java)
-application_id | ai | Integer | Owner application id
-time_bucket | tb | Long | [Date format](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### ApplicationMapping
-- Table name: application_mapping_`TimeDimension`
-- TimeDimension contains minute, hour, day, month
-- For example: Application A calls Application B, collector generates the following two metrics::
-    * From the caller's trace data: A application -> B application's IP address (Topology will use this metric when B application is not monitored by agent)
-    * From the callee's trace data: A application -> B application (Topology will use this metric when B application is monitored by agent)
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, `time_bucket`_`metric_id`
-metric_id | mi | Keyword | `application_id`_`mapping_application_id`
-application_id | ai | Integer | Registered at server side.
-mapping_application_id | mai | Integer | Registered at client side with the server's IP address.
-time_bucket | tb | Long | [Date format](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### ApplicationMetric
-- Table name: application_metric_`TimeDimension`
-- TimeDimension contains minute, hour, day, month
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, `time_bucket`_`metric_id`
-metric_id | mi | Keyword | `application_id`_`source_value`
-application_id | ai | Integer | Owner application id
-source_value | sv | Integer | Caller(0), Callee(1)
-transaction_calls | t1 | Long | The total number of calls based on `time_bucket`
-transaction_error_calls | t2 | Long | The total number of error calls, sums values aggregate by `time_bucket`
-transaction_duration_sum | t3 | Long | The total duration of calls based on `time_bucket`
-transaction_error_duration_sum | t4 | Long | The total duration of error calls based on `time_bucket`
-transaction_average_duration | t5 | Long | The average duration of all calls, used for order by this column in database.
-business_transaction_calls | b1 | Long | 
-business_transaction_error_calls | b2 | Long | 
-business_transaction_duration_sum | b3 | Long | 
-business_transaction_error_duration_sum | b4 | Long | 
-business_transaction_average_duration | b5 | Long | 
-mq_transaction_calls | m1 | Long | 
-mq_transaction_error_calls | m2 | Long | 
-mq_transaction_duration_sum | m3 | Long | 
-mq_transaction_error_duration_sum | m4 | Long | 
-mq_transaction_average_duration | m5 | Long | 
-satisfied_count | a1 | Long | [The formula](../../apm-collector/apm-collector-core/src/main/java/org/apache/skywalking/apm/collector/core/util/ApdexThresholdUtils.java)
-tolerating_count | a2 | Long | 
-frustrated_count | a3 | Long | 
-time_bucket | tb | Long | [Date format](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### ApplicationReferenceMetric
-- Table name: application_reference_metric_`TimeDimension`
-- TimeDimension contains minute, hour, day, month
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, `time_bucket`_`metric_id`
-metric_id | mi | Keyword | `front_application_id`_`behind_application_id`_`source_value`
-front_application_id | fai | Integer | 
-behind_application_id | bai | Integer | 
-source_value | sv | Integer | Caller(0), Callee(1)
-transaction_calls | t1 | Long | The total number of calls based on `time_bucket`
-transaction_error_calls | t2 | Long | The total number of error calls, sums values aggregate by `time_bucket`
-transaction_duration_sum | t3 | Long | The total duration of calls based on `time_bucket`
-transaction_error_duration_sum | t4 | Long | The total duration of error calls based on `time_bucket`
-transaction_average_duration | t5 | Long | The average duration of all calls, used for order by this column in database.
-business_transaction_calls | b1 | Long | 
-business_transaction_error_calls | b2 | Long | 
-business_transaction_duration_sum | b3 | Long | 
-business_transaction_error_duration_sum | b4 | Long | 
-business_transaction_average_duration | b5 | Long | 
-mq_transaction_calls | m1 | Long | 
-mq_transaction_error_calls | m2 | Long | 
-mq_transaction_duration_sum | m3 | Long | 
-mq_transaction_error_duration_sum | m4 | Long | 
-mq_transaction_average_duration | m5 | Long | 
-satisfied_count | a1 | Long | [The formula](../../apm-collector/apm-collector-core/src/main/java/org/apache/skywalking/apm/collector/core/util/ApdexThresholdUtils.java)
-tolerating_count | a2 | Long | 
-frustrated_count | a3 | Long | 
-time_bucket | tb | Long | [Date format](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### InstanceMapping
-- Table name: instance_mapping_`TimeDimension`
-- TimeDimension contains minute, hour, day, month
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, `time_bucket`_`metric_id`
-metric_id | mi | Keyword | `instance_id`_`address_id`
-application_id | ai | Integer | The `instance_id`'s owner application id.
-instance_id | ii | Integer | Registered at server side.
-address_id | ni | Integer | Registered at client side with the server's IP address.
-time_bucket | tb | Long | [Date format](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### InstanceMetric
-- Table name: instance_metric_`TimeDimension`
-- TimeDimension contains minute, hour, day, month
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, `time_bucket`_`metric_id`
-metric_id | mi | Keyword | `instance_id`_`source_value`
-application_id | ai | Integer | 
-instance_id | ii | Integer | 
-source_value | sv | Integer | Caller(0), Callee(1)
-transaction_calls | t1 | Long | The total number of calls based on `time_bucket`
-transaction_error_calls | t2 | Long | The total number of error calls, sums values aggregate by `time_bucket`
-transaction_duration_sum | t3 | Long | The total duration of calls based on `time_bucket`
-transaction_error_duration_sum | t4 | Long | The total duration of error calls based on `time_bucket`
-transaction_average_duration | t5 | Long | The average duration of all calls, used for order by this column in database.
-business_transaction_calls | b1 | Long | 
-business_transaction_error_calls | b2 | Long | 
-business_transaction_duration_sum | b3 | Long | 
-business_transaction_error_duration_sum | b4 | Long | 
-business_transaction_average_duration | b5 | Long | 
-mq_transaction_calls | m1 | Long | 
-mq_transaction_error_calls | m2 | Long | 
-mq_transaction_duration_sum | m3 | Long | 
-mq_transaction_error_duration_sum | m4 | Long | 
-mq_transaction_average_duration | m5 | Long | 
-time_bucket | tb | Long | [Date format](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### InstanceReferenceMetric
-- Table name: instance_reference_metric_`TimeDimension`
-- TimeDimension contains minute, hour, day, month
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, `time_bucket`_`metric_id`
-metric_id | mi | Keyword | `front_instance_id`_`behind_instance_id`_`source_value`
-front_application_id | fai | Integer | 
-behind_application_id | bai | Integer | 
-front_instance_id | fii | Integer | 
-behind_instance_id | bii | Integer | 
-source_value | sv | Integer | Caller(0), Callee(1)
-transaction_calls | t1 | Long | The total number of calls based on `time_bucket`
-transaction_error_calls | t2 | Long | The total number of error calls, sums values aggregate by `time_bucket`
-transaction_duration_sum | t3 | Long | The total duration of calls based on `time_bucket`
-transaction_error_duration_sum | t4 | Long | The total duration of error calls based on `time_bucket`
-transaction_average_duration | t5 | Long | The average duration of all calls, used for order by this column in database.
-business_transaction_calls | b1 | Long | 
-business_transaction_error_calls | b2 | Long | 
-business_transaction_duration_sum | b3 | Long | 
-business_transaction_error_duration_sum | b4 | Long | 
-business_transaction_average_duration | b5 | Long | 
-mq_transaction_calls | m1 | Long | 
-mq_transaction_error_calls | m2 | Long | 
-mq_transaction_duration_sum | m3 | Long | 
-mq_transaction_error_duration_sum | m4 | Long | 
-mq_transaction_average_duration | m5 | Long | 
-time_bucket | tb | Long | [Date format](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### ServiceMetric
-- Table name: service_metric_`TimeDimension`
-- TimeDimension contains minute, hour, day, month
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, `time_bucket`_`metric_id`
-metric_id | mi | Keyword | `service_id`_`source_value`
-application_id | ai | Integer | 
-instance_id | ii | Integer | 
-service_id | si | Integer | 
-source_value | sv | Integer | Caller(0), Callee(1)
-transaction_calls | t1 | Long | The total number of calls based on `time_bucket`
-transaction_error_calls | t2 | Long | The total number of error calls, sums values aggregate by `time_bucket`
-transaction_duration_sum | t3 | Long | The total duration of calls based on `time_bucket`
-transaction_error_duration_sum | t4 | Long | The total duration of error calls based on `time_bucket`
-transaction_average_duration | t5 | Long | The average duration of all calls, used for order by this column in database.
-business_transaction_calls | b1 | Long | 
-business_transaction_error_calls | b2 | Long | 
-business_transaction_duration_sum | b3 | Long | 
-business_transaction_error_duration_sum | b4 | Long | 
-business_transaction_average_duration | b5 | Long | 
-mq_transaction_calls | m1 | Long | 
-mq_transaction_error_calls | m2 | Long | 
-mq_transaction_duration_sum | m3 | Long | 
-mq_transaction_error_duration_sum | m4 | Long | 
-mq_transaction_average_duration | m5 | Long | 
-time_bucket | tb | Long | [Date format](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### ServiceReferenceMetric
-- Table name: service_reference_metric_`TimeDimension`
-- TimeDimension contains minute, hour, day, month
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, `time_bucket`_`metric_id`
-metric_id | mi | Keyword | `front_service_id`_`behind_service_id`_`source_value`
-front_application_id | fai | Integer | 
-front_instance_id | fii | Integer | 
-front_service_id | fsi | Integer | 
-behind_application_id | bai | Integer | 
-behind_instance_id | bii | Integer | 
-behind_service_id | bsi | Integer | 
-source_value | sv | Integer | Caller(0), Callee(1)
-transaction_calls | t1 | Long | The total number of calls based on `time_bucket`
-transaction_error_calls | t2 | Long | The total number of error calls, sums values aggregate by `time_bucket`
-transaction_duration_sum | t3 | Long | The total duration of calls based on `time_bucket`
-transaction_error_duration_sum | t4 | Long | The total duration of error calls based on `time_bucket`
-transaction_average_duration | t5 | Long | The average duration of all calls, used for order by this column in database.
-business_transaction_calls | b1 | Long | 
-business_transaction_error_calls | b2 | Long | 
-business_transaction_duration_sum | b3 | Long | 
-business_transaction_error_duration_sum | b4 | Long | 
-business_transaction_average_duration | b5 | Long | 
-mq_transaction_calls | m1 | Long | 
-mq_transaction_error_calls | m2 | Long | 
-mq_transaction_duration_sum | m3 | Long | 
-mq_transaction_error_duration_sum | m4 | Long | 
-mq_transaction_average_duration | m5 | Long | 
-time_bucket | tb | Long | [Date format](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### GlobalTrace
-- Table name: global_trace
-- The relationship between trace id and segment id is many to many.
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, `global_trace_id`_`segment_id`
-segment_id | sgi | Keyword | 
-trace_id | ti | Keyword | 
-time_bucket | tb | Long | Second date format, [Date format](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### SegmentDuration
-- Table name: segment_duration
-- The relationship between trace id and segment id is many to many.
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, `global_trace_id`_`segment_id`
-segment_id | sgi | Keyword | 
-trace_id | ti | Keyword | 
-application_id | ai | Integer | Owner of the segment
-service_name | sn | Text | The entry span's operation name in this segment
-duration | ddt | Long | The cost duration of this segment
-start_time | dst | Long | 
-end_time | det | Long | 
-is_error | die | Long | Is a boolean data. True(1), False(0)
-time_bucket | tb | Long | Second date format, [Date format](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### Segment
-- Table name: segment
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value same as `segment_id`
-data_binary | sdb | Binary | The protobuf segment binary encode by base64 scheme.
-time_bucket | tb | Long | Second date format, [Date format](Collector-Table-Description.md#Metric-table-time-bucket)
-
-## Tables of JVM Metric related
-### CpuMetric
-- Table name: cpu_metric_`TimeDimension`
-- TimeDimension contains second, minute, hour, day, month
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value is `time_bucket`_`metric_id`
-metric_id | mi | Keyword | the value is `instance_id`
-instance_id | ii | Integer | Owner instance id
-usage_percent | up | Double | Cpu usage percent, sums values aggregate by `time_bucket`
-times | t | Long | The records received times in this time bucket
-time_bucket | tb | Long | [Date format](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### GCMetric
-- Table name: gc_metric_`TimeDimension`
-- TimeDimension contains second, minute, hour, day, month
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value is `time_bucket`_`metric_id`
-metric_id | mi | Keyword | the value is `instance_id`_`phrase`
-instance_id | ii | Integer | Owner instance id
-phrase | p | Integer | [GCPhrase](https://github.com/apache/incubator-skywalking-data-collect-protocol/blob/master/JVMMetricsService.proto#L80-L83)
-count | c | Long | GC count, sums values aggregate by `time_bucket`
-times | t | Long | The records received times in this time bucket
-duration | d | Long | GC duration count,  sums values aggregate by `time_bucket`
-time_bucket | tb | Long | [A formatted date](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### MemoryMetric
-- Table name: memory_metric_`TimeDimension`
-- TimeDimension contains second, minute, hour, day, month
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value is `time_bucket`_`metric_id`
-metric_id | mi | Keyword | the value is `instance_id`_`is_heap`
-instance_id | ii | Integer | Owner instance id
-is_heap | ih | Integer | Is a boolean data. True(1), False(0)
-init | init | Long | Sums values aggregate by `time_bucket`
-max | max | Long | Sums values aggregate by `time_bucket`
-used | used | Long | Sums values aggregate by `time_bucket`
-committed | cd | Long | Sums values aggregate by `time_bucket`
-times | t | Long | The records received times in this time bucket
-time_bucket | tb | Long | [A formatted date](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### MemoryPoolMetric
-- Table name: memory_pool_metric_`TimeDimension`
-- TimeDimension contains second, minute, hour, day, month
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value is `time_bucket`_`metric_id`
-metric_id | mi | Keyword | the value is `instance_id`_`pool_type`
-instance_id | ii | Integer | Owner instance id
-pool_type | pt | Integer | Owner instance id
-init | init | Long | Sums values aggregate by `time_bucket`
-max | max | Long | Sums values aggregate by `time_bucket`
-used | used | Long | Sums values aggregate by `time_bucket`
-committed | ct | Long | Sums values aggregate by `time_bucket`
-times | t | Long | The records received times in this time bucket
-time_bucket | tb | Long | [A formatted date](Collector-Table-Description.md#Metric-table-time-bucket)
-
-## Table of Alarm metric related
-### ApplicationAlarm
-- Table name: application_alarm
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value is `source_value`_`alarm_type`_`application_id`
-application_id | ai | Integer | Owner application id
-source_value | sv | Integer | Caller(0), Callee(1)
-alarm_type | aat | Integer | ERROR_RATE(0), SLOW_RTT(1)
-alarm_content | aac | Text | 
-last_time_bucket | ltb | Long | Second date format. [A formatted date](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### ApplicationAlarmList
-- Table name: application_alarm_list
-- TimeDimension contains minute, hour, day, month
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value is `time_bucket`_`metric_id`
-metric_id | mi | Keyword | `source_value`_`alarm_type`_`application_id`
-alarm_content | aac | Text | 
-application_id | ai | Integer | Owner application id
-source_value | sv | Integer | Caller(0), Callee(1)
-alarm_type | aat | Integer | ERROR_RATE(0), SLOW_RTT(1)
-time_bucket | tb | Long | [A formatted date](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### ApplicationReferenceAlarm
-- Table name: application_reference_alarm
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value is `source_value`_`alarm_type`_`application_id`
-front_application_id | fai | Integer | Owner application id
-behind_application_id | bai | Integer | Owner application id
-source_value | sv | Integer | Caller(0), Callee(1)
-alarm_type | aat | Integer | ERROR_RATE(0), SLOW_RTT(1)
-alarm_content | aac | Text | 
-last_time_bucket | ltb | Long | Second date format. [A formatted date](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### ApplicationReferenceAlarmList
-- Table name: application_reference_alarm
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value is `source_value`_`alarm_type`_`application_id`
-front_application_id | fai | Integer | Owner application id
-behind_application_id | bai | Integer | Owner application id
-source_value | sv | Integer | Caller(0), Callee(1)
-alarm_type | aat | Integer | ERROR_RATE(0), SLOW_RTT(1)
-alarm_content | aac | Text | 
-time_bucket | tb | Long | Second date format. [A formatted date](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### InstanceAlarm
-- Table name: application_alarm
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value is `source_value`_`alarm_type`_`instance_id`
-application_id | ai | Integer | Owner application id
-instance_id | ii | Integer | Owner instance id
-source_value | sv | Integer | Caller(0), Callee(1)
-alarm_type | aat | Integer | ERROR_RATE(0), SLOW_RTT(1)
-alarm_content | aac | Text | 
-last_time_bucket | ltb | Long | Second date format. [A formatted date](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### InstanceAlarmList
-- Table name: instance_alarm_list
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value is `source_value`_`alarm_type`_`instance_id`
-application_id | ai | Integer | Owner application id
-instance_id | ii | Integer | Owner instance id
-source_value | sv | Integer | Caller(0), Callee(1)
-alarm_type | aat | Integer | ERROR_RATE(0), SLOW_RTT(1)
-alarm_content | aac | Text | 
-time_bucket | tb | Long | Second date format. [A formatted date](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### InstanceReferenceAlarm
-- Table name: instance_reference_alarm
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value is `source_value`_`alarm_type`_`instance_id`
-front_application_id | fai | Integer | Owner application id
-front_instance_id | fii | Integer | Owner instance id
-behind_application_id | bai | Integer | Owner instance id
-behind_instance_id | bii | Integer | Owner instance id
-source_value | sv | Integer | Caller(0), Callee(1)
-alarm_type | aat | Integer | ERROR_RATE(0), SLOW_RTT(1)
-alarm_content | aac | Text | 
-last_time_bucket | ltb | Long | Second date format. [A formatted date](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### InstanceReferenceAlarmList
-- Table name: instance_reference_alarm_list
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value is `source_value`_`alarm_type`_`instance_id`
-front_application_id | fai | Integer | Owner application id
-front_instance_id | fii | Integer | Owner instance id
-behind_application_id | bai | Integer | Owner instance id
-behind_instance_id | bii | Integer | Owner instance id
-source_value | sv | Integer | Caller(0), Callee(1)
-alarm_type | aat | Integer | ERROR_RATE(0), SLOW_RTT(1)
-alarm_content | aac | Text | 
-time_bucket | tb | Long | Second date format. [A formatted date](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### ServiceAlarm
-- Table name: service_alarm
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value is `source_value`_`alarm_type`_`service_id`
-application_id | ai | Integer | Owner application id
-instance_id | ii | Integer | Owner instance id
-service_id | si | Integer | Owner service id
-source_value | sv | Integer | Caller(0), Callee(1)
-alarm_type | aat | Integer | ERROR_RATE(0), SLOW_RTT(1)
-alarm_content | aac | Text | 
-last_time_bucket | ltb | Long | Second date format. [A formatted date](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### ServiceAlarmList
-- Table name: service_alarm_list
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value is `source_value`_`alarm_type`_`service_id`
-application_id | ai | Integer | Owner application id
-instance_id | ii | Integer | Owner instance id
-service_id | si | Integer | Owner instance id
-source_value | sv | Integer | Caller(0), Callee(1)
-alarm_type | aat | Integer | ERROR_RATE(0), SLOW_RTT(1)
-alarm_content | aac | Text | 
-time_bucket | tb | Long | Second date format. [A formatted date](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### ServiceReferenceAlarm
-- Table name: service_reference_alarm
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value is `source_value`_`alarm_type`_`service_id`
-front_application_id | fai | Integer | Owner application id
-front_instance_id | fii | Integer | Owner instance id
-front_service_id | fsi | Integer | Owner service id
-behind_application_id | bai | Integer | Owner service id
-behind_instance_id | bii | Integer | Owner service id
-behind_service_id | bsi | Integer | Owner service id
-source_value | sv | Integer | Caller(0), Callee(1)
-alarm_type | aat | Integer | ERROR_RATE(0), SLOW_RTT(1)
-alarm_content | aac | Text | 
-last_time_bucket | ltb | Long | Second date format. [A formatted date](Collector-Table-Description.md#Metric-table-time-bucket)
-
-### ServiceReferenceAlarmList
-- Table name: service_reference_alarm_list
-
-Column Name | Short Name | Data Type | Description
------------ | ---------- | --------- | ---------
-_id | _id | Keyword | primary key, es speciality, the value is `time_bucket`_`source_value`_`alarm_type`_`service_id`
-front_application_id | fai | Integer | Owner application id
-front_instance_id | fii | Integer | Owner instance id
-front_service_id | fsi | Integer | Owner service id
-behind_application_id | bai | Integer | Owner service id
-behind_instance_id | bii | Integer | Owner service id
-behind_service_id | bsi | Integer | Owner service id
-source_value | sv | Integer | Caller(0), Callee(1)
-alarm_type | aat | Integer | ERROR_RATE(0), SLOW_RTT(1)
-alarm_content | aac | Text | 
-time_bucket | tb | Long | Second date format. [A formatted date](Collector-Table-Description.md#Metric-table-time-bucket)
diff --git a/docs/en/Component-libraries-extend.md b/docs/en/Component-libraries-extend.md
deleted file mode 100644
index c904576..0000000
--- a/docs/en/Component-libraries-extend.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# Component library settings
-Component library settings are about your own or 3rd part libraries used in monitored application.
-
-In agent or SDK, no matter library name collected as ID or String(literally, e.g. SpringMVC), collector
-formats data in ID for better performance and less storage requirements. 
-
-Also, collector conjectures the remote service based on the component library, such as: 
-the component library is MySQL Driver library, then the remote service should be MySQL Server. 
-
-For those two reasons, collector require two parts of settings in this file:
-1. Component Library id, name and languages.
-1. Remote server mapping, based on local library.
-
-**All component names and IDs must be defined in this file.**
-
-## Component Library id
-Define all component libraries' names and IDs, used in monitored application.
-This is a both-way mapping, agent or SDK could use the value(ID) to represent the component name in uplink data.
-
-- Name: the component name used in agent and UI
-- id: Unique ID. All IDs are reserved, once it is released.
-- languages: Program languages may use this component. Multi languages should be separated by `,`
-
-### ID rules
-- Java and multi languages shared: (0, 3000]
-- .NET Platform reserved: (3000, 4000]
-- Node.js Platform reserved: (4000, 5000]
-- Go reserved: (5000, 6000]
-- PHP reserved: (6000, 7000]
-
-Example
-```yaml
-Tomcat:
-  id: 1
-  languages: Java
-HttpClient:
-  id: 2
-  languages: Java,C#,Node.js
-Dubbo:
-  id: 3
-  languages: Java
-H2:
-  id: 4
-  languages: Java
-```
-
-## Remote server mapping
-Remote server will be conjectured by the local component. The mappings are based on Component library names.
-
-- Key: client component library name
-- Value: server component name
-
-```yaml
-Component-Server-Mappings:
-  Jedis: Redis
-  StackExchange.Redis: Redis
-  SqlClient: SqlServer
-  Npgsql: PostgreSQL
-  MySqlConnector: Mysql
-  EntityFrameworkCore.InMemory: InMemoryDatabase
-```
\ No newline at end of file
diff --git a/docs/en/Deploy-backend-in-cluster-mode.md b/docs/en/Deploy-backend-in-cluster-mode.md
deleted file mode 100644
index 3cc0a49..0000000
--- a/docs/en/Deploy-backend-in-cluster-mode.md
+++ /dev/null
@@ -1,149 +0,0 @@
-## Requirements
-- JDK 6+(instruments application can run in jdk6)
-- JDK8  ( SkyWalking collector and SkyWalking WebUI )
-- Elasticsearch 5.x, cluster mode or not
-- Zookeeper 3.4.10
-- OS time(include time zone) of Applications under monitoring, collectors, UIs and your local machine are all correct and same.
-
-## Download released version
-- Go to [released page](http://skywalking.apache.org/downloads/)
-
-## Deploy Zookeeper
-Zookeeper is used for collector coordination. Only required if you need more than one collector instances.
-
-Add Zookeeper cluster info in each collector `application.yml`
-```yml
-cluster:
-# The Zookeeper cluster for collector cluster management.
-  zookeeper:
-    # multiple instances should be separated by comma.
-    hostPort: localhost:2181
-    sessionTimeout: 100000
-```
-
-## Deploy ElasticSearch server
-ElasticSearch is using for storage all traces, metrics and alarms.  
-
-- Modify `elasticsearch.yml`
-  - Set `cluster.name: CollectorDBCluster`
-  - Set `node.name: anyname`, this name can be any, it based on Elasticsearch.
-  - Add the following configurations   
-
-```
-# The ip used for listening
-network.host: 0.0.0.0
-thread_pool.bulk.queue_size: 1000
-```
-See ElasticSearch Official documents to understand how to deploy cluster(Recommend).
-
-- Start Elasticsearch
-
-### Set collector
-There are five types of connection for SkyWalking cluster, related to collector settings.
-1. Agent to collectors by using HTTP, named as `naming`.
-1. Agent to collectors by using gRPC, named as `agent_gRPC`. 
-1. Collector to collector by using gRPC, named as `remote`.
-1. UI to collector by using HTTP, named as `ui`. Don't need to change in most cases.
-1. Optional connection: Agent to collector by using HTTP, named as `agent_jetty`.
-
-
-The following segment of `application.yml` shows you the detail of each settings.
-
-- `config/application.yml`
-```
-cluster:
-# The Zookeeper cluster for collector cluster management.
-  zookeeper:
-    hostPort: localhost:2181
-    sessionTimeout: 100000
-naming:
-# Host and port used for agent config
-  jetty:
-    # OS real network IP(binding required), for agent to find collector cluster. agent --(HTTP)--> collector
-    host: localhost 
-    port: 10800
-    contextPath: /
-remote:
-  gRPC:
-    # OS real network IP(binding required), for collector node to communicate with each other in cluster. collectorN --(gRPC) --> collectorM
-    host: localhost 
-    port: 11800
-agent_gRPC:
-  gRPC:
-    # OS real network IP(binding required), for agent to uplink data(trace/metrics) to collector. agent--(gRPC)--> collector
-    host: localhost
-    port: 11800
-agent_jetty:
-  jetty:
-    # OS real network IP(binding required), for agent to uplink data(trace/metrics) to collector through HTTP. agent--(HTTP)--> collector
-    # SkyWalking native Java/.Net/node.js agents don't use this.
-    # Open this for other implementor.
-    host: localhost
-    port: 12800
-    contextPath: /
-analysis_register:
-  default:
-analysis_jvm:
-  default:
-analysis_segment_parser:
-  default:
-    bufferFilePath: ../buffer/
-    bufferOffsetMaxFileSize: 10M
-    bufferSegmentMaxFileSize: 500M
-ui:
-  jetty:
-    # OS real network IP(binding required), for UI to query from collector.
-    host: localhost
-    port: 12800
-    contextPath: /
-# Config Elasticsearch cluster connection info.
-storage:
-  elasticsearch:
-    clusterName: CollectorDBCluster
-    clusterTransportSniffer: true
-    clusterNodes: localhost:9300
-    indexShardsNumber: 2
-    indexReplicasNumber: 0
-    highPerformanceMode: true
-    # Set an expired for metric/trace data. After the timeout has expired, the metric/trace data will be deleted automatically.
-    traceDataTTL: 90 # Unit is minute
-    minuteMetricDataTTL: 45 # Unit is minute
-    hourMetricDataTTL: 36 # Unit is hour
-    dayMetricDataTTL: 45 # Unit is day
-    monthMetricDataTTL: 18 # Unit is month
-configuration:
-  default:
-    # namespace: xxxxx
-    
-    # alarm threshold
-    applicationApdexThreshold: 2000
-    serviceErrorRateThreshold: 10.00
-    serviceAverageResponseTimeThreshold: 2000
-    instanceErrorRateThreshold: 10.00
-    instanceAverageResponseTimeThreshold: 2000
-    applicationErrorRateThreshold: 10.00
-    applicationAverageResponseTimeThreshold: 2000
-    
-    # thermodynamic
-    thermodynamicResponseTimeStep: 50
-    thermodynamicCountOfResponseTimeSteps: 40
-```
-
-### Set UI
-
-The config items of UI is saved in `webapp/webapp.yml`. 
-Change `collector.ribbon.listOfServers` by following the description, with matching `naming.jetty`. 
-
-| Config                           | Description                                                                                          |
-|----------------------------------|------------------------------------------------------------------------------------------------------|
-| `server.port`                    | Port to listen on. Default: 8080                                                                                 |
-| `collector.ribbon.listOfServers` | Address to access collector naming service.(Consist with `naming.jetty` in `config/application.yml`). Multiple collector addresses are split by ',' |
-| `collector.path`                 | Collector query uri. Default: /graphql                                                                           |
-| `collector.ribbon.ReadTimeout`   | Query timeout. Default: 10 seconds                                                                               |
-| `security.user.*`                | Login username/password. Default: admin/admin                                                                    |
-
-### Start up collector node
-1. Run `bin/startup.sh` to start collector and UI together. 
-2. (Run if don't use 1 to start up)Run `bin/collectorService.sh` when you only want to start up collector.
-3. (Run if don't use 1 to start up)Run `bin/webappService.sh` when you only want to start up UI.
-
diff --git a/docs/en/Deploy-backend-in-standalone-mode.md b/docs/en/Deploy-backend-in-standalone-mode.md
deleted file mode 100644
index 98fe831..0000000
--- a/docs/en/Deploy-backend-in-standalone-mode.md
+++ /dev/null
@@ -1,42 +0,0 @@
-# Usage scenario
-Default standalone mode collector means don't support cluster. It uses H2 as storage layer implementation, suggest that use only for preview, test, demonstration, low throughputs and small scale system.
-
-If you are using SkyWalking in a low throughputs monitoring scenario, and don't want to deploy cluster, at least, switch the storage implementation from H2 to Elasticsearch.
-
-**H2 storage implementation is not provided in 5.0.0 for now, so you must deploy ElasticSearch before try to start backend. Welcome to contribute.**
-
-## Requirements
-- JDK 6+(instruments application can run in jdk6)
-- JDK8  ( SkyWalking collector and SkyWalking WebUI )
-- Elasticsearch 5.x, cluster mode or not
-
-## Download
-* [Releases](http://skywalking.apache.org/downloads/)
-
-## Quick start
-You can simply tar/unzip and startup if ports 8080, 10800, 11800, 12800 are free.
-
-- Deploy ElasticSearch.
-- `tar -xvf skywalking-dist.tar.gz` in Linux, or unzip in windows.
-- run `bin/startup.sh` or `bin/startup.bat`
-
-You should keep the `config/application.yml` as default.
-
-- NOTICE: **In 5.0.0, startup.sh will start two processes, collector and UI, and UI uses 127.0.0.1:10800 as default.**
-
-## Use Elastic Search instead of H2 as storage layer implementation
-Even in standalone mode, collector can run with Elastic Search as storage. If so, uncomment the `storage` section in `application.yml`, set the config right. The default configs fit for collector and Elasticsearch both running in same machine, and not cluster.
-
-## Deploy Elasticsearch server
-- Modify `elasticsearch.yml`
-  - Set `cluster.name: CollectorDBCluster`
-  - Set `node.name: anyname`, this name can be any, it based on Elasticsearch.
-  - Add the following configurations
-
-```
-# The ip used for listening
-network.host: 0.0.0.0
-thread_pool.bulk.queue_size: 1000
-```
-
-- Start Elasticsearch
diff --git a/docs/en/Deploy-skywalking-agent.md b/docs/en/Deploy-skywalking-agent.md
deleted file mode 100644
index 5554be4..0000000
--- a/docs/en/Deploy-skywalking-agent.md
+++ /dev/null
@@ -1,48 +0,0 @@
-## Download skywalking agent release version
-- Go to [release page](http://skywalking.apache.org/downloads/)
-
-## Install skywalking javaagent
-1. Copy the agent package to anywhere you like. The logs, plugins and config are all included in the package.
-2. Add -javaagent:/path/to/skywalking-agent/skywalking-agent.jar to VM argument. 
-
-New agent package looks like this:
-```
-+-- skywalking-agent
-    +-- activations
-         apm-toolkit-log4j-1.x-activation.jar
-         apm-toolkit-log4j-2.x-activation.jar
-         apm-toolkit-logback-1.x-activation.jar
-         ...
-    +-- config
-         agent.config  
-    +-- plugins
-         apm-dubbo-plugin.jar
-         apm-feign-default-http-9.x.jar
-         apm-httpClient-4.x-plugin.jar
-         .....
-    skywalking-agent.jar
-```
-
-- Start your application.
-
-# Advanced features
-- All plugins are in `/plugins` folder. The plugin jar is active when it is in there. Remove the plugin jar, it disabled.
-- The default logging output folder is `/logs`.
-
-# Install javaagent FAQs
-- Linux Tomcat 7, Tomcat 8  
-Change the first line of `tomcat/bin/catalina.sh`.
-```shell
-CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/skywalking-agent/skywalking-agent.jar"; export CATALINA_OPTS
-```
-
-- Windows Tomcat 7, Tomcat 8  
-Change the first line of `tomcat/bin/catalina.bat`.
-```shell
-set "CATALINA_OPTS=-javaagent:/path/to/skywalking-agent/skywalking-agent.jar"
-```
-- JAR file  
-Add `-javaagent` argument to command line in which you start your app. And make sure to add it before the `-jar` argument. eg:
- ```shell
- java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -jar yourApp.jar
- ```
diff --git a/docs/en/FAQ/README.md b/docs/en/FAQ/README.md
new file mode 100644
index 0000000..f27af3e
--- /dev/null
+++ b/docs/en/FAQ/README.md
@@ -0,0 +1,13 @@
+# FAQs
+These are known and common FAQs. We welcome you to contribute yours.
+
+## Compiling
+* [Protoc plugin fails in maven build](Protoc-Plugin-Fails-When-Build.md)
+* [Required items could not be found, when import project into Eclipse](Import-Project-Eclipse-RequireItems-Exception.md)
+
+## Runtime
+* [Why only traces in UI?](Why-have-traces-no-others.md)
+* [Too many GRPC logs in the console](Too-many-gRPC-logs.md)
+* [The trace doesn't continue in kafka consumer side](kafka-plugin.md)
+* [Agent or collector version upgrade](Upgrade.md)
+* [EnhanceRequireObjectCache class cast exception](EnhanceRequireObjectCache-Cast-Exception.md)
\ No newline at end of file
diff --git a/docs/en/Incubating/Abstract.md b/docs/en/Incubating/Abstract.md
deleted file mode 100644
index 34769d3..0000000
--- a/docs/en/Incubating/Abstract.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Incubating Features
-Incubating features are developed or contributed from SkyWalking community,
-but it is still a prototype or preview. At the same time, they need or their contributors 
-want to be included in the primary repository.
-
-The PMC and committer team will evaluate the feature, make sure it stays in optional,
-has compatible with current version.
-
-List some typical incubating features
-1. New storage implementor in collector, such as: ElasticSearch HTTP, MySQL...
-1. New module provided in collector.
-1. New optional plugins in agent.
-1. New features/services in collector, as the integration.
diff --git a/docs/en/Optional-plugins.md b/docs/en/Optional-plugins.md
deleted file mode 100644
index a8f889a..0000000
--- a/docs/en/Optional-plugins.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Optional plugins
-Optional plugins could be provided by source codes or in `optional-plugins` folder under agent.
-
-For using these plugins, you need to compile source codes by yourself, or copy the certain plugins to `/plugins`.
-
-
-
-
diff --git a/docs/en/concepts-and-designs/README.md b/docs/en/concepts-and-designs/README.md
new file mode 100644
index 0000000..05d88b8
--- /dev/null
+++ b/docs/en/concepts-and-designs/README.md
@@ -0,0 +1,16 @@
+# Concepts and Designs
+Concepts and Designs help you to learn and understand the SkyWalking and the landscape.
+
+- What is SkyWalking?
+  - [Overview](overview.md). Provides a high-level description and introduction, including the problems it solves.
+  - [Project Goals](project-goals.md). Provides the goals, which SkyWalking is trying to focus and provide features about them.
+- Probe
+  - [Introduction](probe-introduction.md). Lead readers to understand what the probe is, how many different probes existed and 
+why need them.
+  - [Service auto instrument agent](service-agent.md). Introduce what the auto instrument agents do and which languages does
+SkyWalking already support. 
+  - [Manual instrument SDK](manual-sdk.md). Introduce the role of the manual instrument SDKs in SkyWalking ecosystem.
+- Observability Analysis Platform Backend
+  - [Overview](oap-overview.md). Provides a high level introduction about the OAP backend.
+  - [Observability Analysis Language](oal.md). Introduces the core languages, which is designed for aggregation behaviour definition.
+  - [Query in OAP](query-oap.md). Introduces how to query data from backend, whether a simple metric data or topology map, even trace or log.
diff --git a/docs/en/OAP/README.md b/docs/en/concepts-and-designs/oal.md
similarity index 69%
rename from docs/en/OAP/README.md
rename to docs/en/concepts-and-designs/oal.md
index 25472d9..72c4f55 100644
--- a/docs/en/OAP/README.md
+++ b/docs/en/concepts-and-designs/oal.md
@@ -1,38 +1,4 @@
-# Observability Analysis Platform
-OAP(Observability Analysis Platform) is a new concept, which starts in SkyWalking 6.x. OAP replaces the 
-old SkyWalking whole backend. The capabilities of the platform are following.
-
-## OAP capabilities
-<img src="https://skywalkingtest.github.io/page-resources/6_overview.png"/>
-
-In SkyWalking 6 series, OAP accepts data from more sources, which belongs two groups: **Tracing** and **Metric**.
-
-- **Tracing**. Including, SkyWalking native data formats. Zipkin v1,v2 data formats and Jaeger data formats.
-- **Metric**. SkyWalking integrates with Service Mesh platforms, such as Istio, Envoy, Linkerd, to provide observability from data panel 
-or control panel. Also, SkyWalking native agents can run in metric mode, which highly improve the 
-performance.
-
-At the same time by using any integration solution provided, such as SkyWalking log plugin or toolkits, 
-SkyWalking provides visualization integration for binding tracing and logging together by using the 
-trace id and span id.
-
-As usual, all services provided by gRPC and HTTP protocol to make integration easier for unsupported ecosystem.
-
-## Tracing in OAP
-Tracing in OAP has two ways to process.
-1. Traditional way in SkyWalking 5 series. Format tracing data in SkyWalking trace segment and span formats, 
-even for Zipkin data format. The AOP analysis the segments to get metrics, and push the metric data into
-the streaming aggregation.
-1. Consider tracing as some kinds of logging only. Just provide save and visualization capabilities for trace. 
-
-## Metric in OAP
-Metric in OAP is totally new feature in 6 series. Build observability for a distributed system based on metric of connected nodes.
-No tracing data is required.
-
-Metric data are aggregated inside AOP cluster in streaming mode. See below about [Observability Analysis Language](#observability-analysis-language),
-which provides the easy way to do aggregation and analysis in script style. 
-
-### Observability Analysis Language
+# Observability Analysis Language
 Provide OAL(Observability Analysis Language) to analysis incoming data in streaming mode. 
 
 OAL focuses on metric in Service, Service Instance and Endpoint. Because of that, the language is easy to 
@@ -41,7 +7,7 @@ learn and use.
 Considering performance, reading and debugging, OAL is defined as a compile language. 
 The OAL scrips will be compiled to normal Java codes in package stage.
 
-#### Grammar
+## Grammar
 Scripts should be named as `*.oal`
 ```
 
@@ -50,10 +16,10 @@ METRIC_NAME = from(SCOPE.(* | [FIELD][,FIELD ...]))
 .FUNCTION([PARAM][, PARAM ...])
 ```
 
-#### Scope
+## Scope
 **SCOPE** in (`All`, `Service`, `ServiceInstance`, `Endpoint`, `ServiceRelation`, `ServiceInstanceRelation`, `EndpointRelation`).
 
-#### Field
+## Field
 By using Aggregation Function, the requests will group by time and **Group Key(s)** in each scope.
 
 - SCOPE `All`
@@ -169,14 +135,14 @@ including auto instrument agents(like Java, .NET), OpenCensus SkyWalking exporte
 | type | Represent the type of each request. Such as: Database, HTTP, RPC, gRPC. | | enum |
 | detectPoint | Represent where is the relation detected. Values: client, server, proxy. | yes | enum|
 
-#### Filter
+## Filter
 Use filter to build the conditions for the value of fields, by using field name and expression. 
 
 The expressions support to link by `and`, `or` and `(...)`. 
 The OPs support `=`, `!=`, `>`, `<`, `in (v1, v2, ...`, `like "%..."`, with type detection based of field type. Trigger compile
  or code generation error if incompatible. 
 
-#### Aggregation Function
+## Aggregation Function
 The default functions are provided by SkyWalking OAP core, and could implement more. 
 
 Provided functions
@@ -189,15 +155,15 @@ Provided functions
 - `histogram(start, step)`. Group the given value by the given step, begin with the start value.
 - `sum()`. The sum number of selected by filter. No type requirement.
 
-#### Metric name
+## Metric name
 The metric name for storage implementor, alarm and query modules. The type inference supported by core.
 
-#### Group
+## Group
 All metric data will be grouped by Scope.ID and min-level TimeBucket. 
 
 - In `Endpoint` scope, the Scope.ID = Endpoint id (the unique id based on service and its Endpoint)
 
-#### Examples
+## Examples
 ```
 // Caculate p99 of both Endpoint1 and Endpoint2
 Endpoint_p99 = from(Endpoint.latency).filter(name in ("Endpoint1", "Endpoint2")).summary(0.99)
@@ -223,85 +189,4 @@ Endpoint_500 = from(Endpoint.*).filter(responseCode like "5%").percent()
 
 // Caculate the sum of calls for each service.
 EndpointCalls = from(Endpoint.*).sum()
-```
-
-## Query in OAP
-Query is the core feature of OAP for visualization and other higher system. The query matches the metric type.
-
-There are two types of query provided.
-1. Hard codes query implementor
-1. Metric style query of implementor
-
-### Hard codes
-Hard codes query implementor, is for complex logic query, such as: topology map, dependency map, which 
-most likely relate to mapping mechanism of the node relationship.
-
-Even so, hard codes implementors are based on metric style query too, just need extra codes to assemble the 
-results.
-
-### Metric style query
-Metric style query is based on the given scope and metric name in oal scripts.
-
-Metric style query provided in two ways
-- GraphQL way. UI uses this directly, and assembles the pages.
-- API way. Most for `Hard codes query implementor` to do extra works.
-
-#### Grammar
-```
-Metric.Scope(SCOPE).Func(METRIC_NAME [, PARAM ...])
-```
-
-#### Scope
-**SCOPE** in (`All`, `Service`, `ServiceInst`, `Endpoint`, `ServiceRelation`, `ServiceInstRelation`, `EndpointRelation`).
-
-#### Metric name
-Metric name is defined in oal script. Such as **EndpointCalls** is the name defined by `EndpointCalls = from(Endpoint.*).sum()`.
-
-#### Metric Query Function
-Metric Query Functions match the Aggregation Function in most cases, but include some order or filter features.
-Try to keep the name as same as the aggregation functions.
-
-Provided functions
-- `top`
-- `trend`
-- `histogram`
-- `sum`
-
-#### Example
-For `avg` aggregate func, `top` match it, also with parameter[1] of result size and parameter[2] of order
-```
-# for Service_avg = from(Service.latency).avg()
-Metric.Scope("Service").topn("Service_avg", 10, "desc")
-```
-
-## Project structure overview
-This overview shows maven modules AOP provided.
-```
-- SkyWalking Project
-    - apm-commons
-    - ...
-    - apm-oap
-        - oap-receiver
-            - receiver-skywalking
-            - receiver-zipkin
-            - ...
-        - oap-discovery
-            - discovery-naming
-            - discovery-zookeeper
-            - discovery-standalone
-            - ...
-        - oap-register
-            - register-skywalking
-            - ...
-        - oap-analysis
-            - analysis-trace
-            - analysis-metric
-            - analysis-log
-        - oap-web
-        - oap-libs
-            - cache-lib
-            - remote-lib
-            - storage-lib
-            - client-lib
-            - server-lib
- ```
+```
\ No newline at end of file
diff --git a/docs/en/concepts-and-designs/oap-overview.md b/docs/en/concepts-and-designs/oap-overview.md
new file mode 100644
index 0000000..e7507b5
--- /dev/null
+++ b/docs/en/concepts-and-designs/oap-overview.md
@@ -0,0 +1,33 @@
+# Observability Analysis Platform
+OAP(Observability Analysis Platform) is a new concept, which starts in SkyWalking 6.x. OAP replaces the 
+old SkyWalking whole backend. The capabilities of the platform are following.
+
+## OAP capabilities
+<img src="https://skywalkingtest.github.io/page-resources/6_overview.png"/>
+
+In SkyWalking 6 series, OAP accepts data from more sources, which belongs two groups: **Tracing** and **Metric**.
+
+- **Tracing**. Including, SkyWalking native data formats. Zipkin v1,v2 data formats and Jaeger data formats.
+- **Metric**. SkyWalking integrates with Service Mesh platforms, such as Istio, Envoy, Linkerd, to provide observability from data panel 
+or control panel. Also, SkyWalking native agents can run in metric mode, which highly improve the 
+performance.
+
+At the same time by using any integration solution provided, such as SkyWalking log plugin or toolkits, 
+SkyWalking provides visualization integration for binding tracing and logging together by using the 
+trace id and span id.
+
+As usual, all services provided by gRPC and HTTP protocol to make integration easier for unsupported ecosystem.
+
+## Tracing in OAP
+Tracing in OAP has two ways to process.
+1. Traditional way in SkyWalking 5 series. Format tracing data in SkyWalking trace segment and span formats, 
+even for Zipkin data format. The AOP analysis the segments to get metrics, and push the metric data into
+the streaming aggregation.
+1. Consider tracing as some kinds of logging only. Just provide save and visualization capabilities for trace. 
+
+## Metric in OAP
+Metric in OAP is totally new feature in 6 series. Build observability for a distributed system based on metric of connected nodes.
+No tracing data is required.
+
+Metric data are aggregated inside AOP cluster in streaming mode. See about [Observability Analysis Language](oal.md),
+which provides the easy way to do aggregation and analysis in script style. 
\ No newline at end of file
diff --git a/docs/en/concepts-and-designs/overview.md b/docs/en/concepts-and-designs/overview.md
new file mode 100644
index 0000000..e69de29
diff --git a/docs/en/concepts-and-designs/query-oap.md b/docs/en/concepts-and-designs/query-oap.md
new file mode 100644
index 0000000..46ef873
--- /dev/null
+++ b/docs/en/concepts-and-designs/query-oap.md
@@ -0,0 +1,48 @@
+# Query in OAP
+Query is the core feature of OAP for visualization and other higher system. The query matches the metric type.
+
+There are two types of query provided.
+1. Hard codes query implementor
+1. Metric style query of implementor
+
+## Hard codes
+Hard codes query implementor, is for complex logic query, such as: topology map, dependency map, which 
+most likely relate to mapping mechanism of the node relationship.
+
+Even so, hard codes implementors are based on metric style query too, just need extra codes to assemble the 
+results.
+
+## Metric style query
+Metric style query is based on the given scope and metric name in oal scripts.
+
+Metric style query provided in two ways
+- GraphQL way. UI uses this directly, and assembles the pages.
+- API way. Most for `Hard codes query implementor` to do extra works.
+
+### Grammar
+```
+Metric.Scope(SCOPE).Func(METRIC_NAME [, PARAM ...])
+```
+
+### Scope
+**SCOPE** in (`All`, `Service`, `ServiceInst`, `Endpoint`, `ServiceRelation`, `ServiceInstRelation`, `EndpointRelation`).
+
+### Metric name
+Metric name is defined in oal script. Such as **EndpointCalls** is the name defined by `EndpointCalls = from(Endpoint.*).sum()`.
+
+### Metric Query Function
+Metric Query Functions match the Aggregation Function in most cases, but include some order or filter features.
+Try to keep the name as same as the aggregation functions.
+
+Provided functions
+- `top`
+- `trend`
+- `histogram`
+- `sum`
+
+### Example
+For `avg` aggregate func, `top` match it, also with parameter[1] of result size and parameter[2] of order
+```
+# for Service_avg = from(Service.latency).avg()
+Metric.Scope("Service").topn("Service_avg", 10, "desc")
+```
\ No newline at end of file
diff --git a/docs/en/How-to-release.md b/docs/en/guides/How-to-release.md
similarity index 100%
rename from docs/en/How-to-release.md
rename to docs/en/guides/How-to-release.md
diff --git a/docs/en/guides/README.md b/docs/en/guides/README.md
new file mode 100644
index 0000000..ae97903
--- /dev/null
+++ b/docs/en/guides/README.md
@@ -0,0 +1,8 @@
+# Guides
+Guides help everyone developer, including PPMC member, committer and contributor, to understand the project structure. 
+Also learn to build the project, even to release the official Apache version(If you have been accepted as the formal committer).
+
+- [Compiling Guide](../How-to-build.md). Teaches developer how to build the project in local.
+- [Apache Release Guide](How-to-release.md). Apache license allows everyone to redistribute if you keep our licenses and NOTICE
+in your redistribution. This document introduces to the committer team about doing official Apache version release, to avoid 
+breaking any Apache rule.
\ No newline at end of file
diff --git a/docs/en/protocols/README.md b/docs/en/protocols/README.md
new file mode 100644
index 0000000..40ca006
--- /dev/null
+++ b/docs/en/protocols/README.md
@@ -0,0 +1,4 @@
+# Protocols
+
+* [Cross Process Propagation Headers Protocol, v1.0](Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md)
+* [SkyWalking Trace Data Protocol](Trace-Data-Protocol.md)
\ No newline at end of file
diff --git a/docs/en/Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md b/docs/en/protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md
similarity index 100%
rename from docs/en/Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md
rename to docs/en/protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md
diff --git a/docs/en/Trace-Data-Protocol.md b/docs/en/protocols/Trace-Data-Protocol.md
similarity index 96%
rename from docs/en/Trace-Data-Protocol.md
rename to docs/en/protocols/Trace-Data-Protocol.md
index f098ae6..67426c2 100644
--- a/docs/en/Trace-Data-Protocol.md
+++ b/docs/en/protocols/Trace-Data-Protocol.md
@@ -79,14 +79,14 @@ Uplink the JVM metrics, including PermSize, HeapSize, CPU, Memory, etc., every s
 [gRPC service define](https://github.com/apache/incubator-skywalking-data-collect-protocol/blob/v1.1.1/TraceSegmentService.proto)
 
 - UniqueId represents segmentId and globalTraceId. It have 3 parts(Longs), 1) applicationInstanceId, 2) ThreadId, 3) Timestamp + 10000 + seq(seq is in [0, 100000) )
-- Span data please refs to [Plugin Development Guide](Plugin-Development-Guide.md)
+- Span data please refs to [Plugin Development Guide](../setup/service-agent/java-agent/Plugin-Development-Guide.md)
 - Id and name both exist, please use id if possible.
   - operationNameId/operationName 
   - networkAddress/networkAddressId
   - entryServiceName/entryServiceId
   - parentServiceName/parentServiceId
   - peerId/peer
-- componentIds are defined in backend, [here](../../apm-protocol/apm-network/src/main/java/org/apache/skywalking/apm/network/trace/component/ComponentsDefine.java)
+- componentIds are defined in backend, [here](../../../apm-protocol/apm-network/src/main/java/org/apache/skywalking/apm/network/trace/component/ComponentsDefine.java)
 
 # HTTP JSON Services
 All HTTP Services match the gRPC services, just adjust use short keys.
diff --git a/docs/en/setup/README.md b/docs/en/setup/README.md
new file mode 100644
index 0000000..c51e5a1
--- /dev/null
+++ b/docs/en/setup/README.md
@@ -0,0 +1,12 @@
+# Setup
+Setup based on which kind of probes are you going to use. If you don't understand, please read [Concepts and Designs](../concepts-and-designs/README.md) first.
+
+- Language agents in Service 
+  - Install agents
+    - [Java agent](service-agent/java-agent/README.md). Introduce how to install java agent to your application, without change any codes.
+    - [.NET Core agent](https://github.com/OpenSkywalking/skywalking-netcore). See .NET Core agent project document for more details.
+    - [Node.js agent](https://github.com/OpenSkywalking/skywalking-nodejs). See Node.js server side agent project document for more details.
+  - [Setup backend](service-agent/backend-setup.md). Set the backend for language agents scenario.
+- On Service Mesh
+  - Istio
+    - [SkyWalking on Istio](istio/README.md). Introduce how to use Istio Mixer SkyWalking Adapter to work with SkyWalking.
\ No newline at end of file
diff --git a/docs/en/setup/service-agent/backend-setup.md b/docs/en/setup/service-agent/backend-setup.md
new file mode 100644
index 0000000..e69de29
diff --git a/docs/en/Application-toolkit-log4j-1.x.md b/docs/en/setup/service-agent/java-agent/Application-toolkit-log4j-1.x.md
similarity index 100%
rename from docs/en/Application-toolkit-log4j-1.x.md
rename to docs/en/setup/service-agent/java-agent/Application-toolkit-log4j-1.x.md
diff --git a/docs/en/Application-toolkit-log4j-2.x.md b/docs/en/setup/service-agent/java-agent/Application-toolkit-log4j-2.x.md
similarity index 100%
rename from docs/en/Application-toolkit-log4j-2.x.md
rename to docs/en/setup/service-agent/java-agent/Application-toolkit-log4j-2.x.md
diff --git a/docs/en/Application-toolkit-logback-1.x.md b/docs/en/setup/service-agent/java-agent/Application-toolkit-logback-1.x.md
similarity index 100%
rename from docs/en/Application-toolkit-logback-1.x.md
rename to docs/en/setup/service-agent/java-agent/Application-toolkit-logback-1.x.md
diff --git a/docs/en/Application-toolkit-trace-cross-thread.md b/docs/en/setup/service-agent/java-agent/Application-toolkit-trace-cross-thread.md
similarity index 100%
rename from docs/en/Application-toolkit-trace-cross-thread.md
rename to docs/en/setup/service-agent/java-agent/Application-toolkit-trace-cross-thread.md
diff --git a/docs/en/Application-toolkit-trace.md b/docs/en/setup/service-agent/java-agent/Application-toolkit-trace.md
similarity index 100%
rename from docs/en/Application-toolkit-trace.md
rename to docs/en/setup/service-agent/java-agent/Application-toolkit-trace.md
diff --git a/docs/en/Applicaton-toolkit.md b/docs/en/setup/service-agent/java-agent/Applicaton-toolkit.md
similarity index 100%
rename from docs/en/Applicaton-toolkit.md
rename to docs/en/setup/service-agent/java-agent/Applicaton-toolkit.md
diff --git a/docs/en/Direct-uplink.md b/docs/en/setup/service-agent/java-agent/Direct-uplink.md
similarity index 100%
rename from docs/en/Direct-uplink.md
rename to docs/en/setup/service-agent/java-agent/Direct-uplink.md
diff --git a/docs/en/How-to-disable-plugin.md b/docs/en/setup/service-agent/java-agent/How-to-disable-plugin.md
similarity index 100%
rename from docs/en/How-to-disable-plugin.md
rename to docs/en/setup/service-agent/java-agent/How-to-disable-plugin.md
diff --git a/docs/en/Namespace.md b/docs/en/setup/service-agent/java-agent/Namespace.md
similarity index 93%
rename from docs/en/Namespace.md
rename to docs/en/setup/service-agent/java-agent/Namespace.md
index d5e9fa5..19582a8 100644
--- a/docs/en/Namespace.md
+++ b/docs/en/setup/service-agent/java-agent/Namespace.md
@@ -20,7 +20,7 @@ Namespace is proposal from this.It is used for tracing and monitoring isolation.
 The default value of `agent.namespace` is empty. 
 
 **Influence**
-The default header key of SkyWalking is `sw3`, more in this [document](Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md).
+The default header key of SkyWalking is `sw3`, more in this [document](../../../protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md).
 After `agent.namespace` set, the key changes to `namespace:sw3`.
 
 The across process propagation chain breaks, when the two sides are using different namespace.
diff --git a/docs/en/Opentracing.md b/docs/en/setup/service-agent/java-agent/Opentracing.md
similarity index 100%
rename from docs/en/Opentracing.md
rename to docs/en/setup/service-agent/java-agent/Opentracing.md
diff --git a/docs/en/Plugin-Development-Guide.md b/docs/en/setup/service-agent/java-agent/Plugin-Development-Guide.md
similarity index 100%
rename from docs/en/Plugin-Development-Guide.md
rename to docs/en/setup/service-agent/java-agent/Plugin-Development-Guide.md
diff --git a/docs/en/Quick-start.md b/docs/en/setup/service-agent/java-agent/Quick-start.md
similarity index 100%
rename from docs/en/Quick-start.md
rename to docs/en/setup/service-agent/java-agent/Quick-start.md
diff --git a/docs/en/setup/service-agent/java-agent/README.md b/docs/en/setup/service-agent/java-agent/README.md
new file mode 100644
index 0000000..e386023
--- /dev/null
+++ b/docs/en/setup/service-agent/java-agent/README.md
@@ -0,0 +1,77 @@
+# Setup java agent
+1. Find `agent` folder in SkyWalking 
+2. Add `-javaagent:/path/to/skywalking-agent/skywalking-agent.jar` to VM argument. 
+
+New agent package looks like this:
+```
++-- skywalking-agent
+    +-- activations
+         apm-toolkit-log4j-1.x-activation.jar
+         apm-toolkit-log4j-2.x-activation.jar
+         apm-toolkit-logback-1.x-activation.jar
+         ...
+    +-- config
+         agent.config  
+    +-- plugins
+         apm-dubbo-plugin.jar
+         apm-feign-default-http-9.x.jar
+         apm-httpClient-4.x-plugin.jar
+         .....
+    skywalking-agent.jar
+```
+
+- Start your application.
+
+## Advanced features
+- All plugins are in `/plugins` folder. The plugin jar is active when it is in there. Remove the plugin jar, it disabled.
+- The default logging output folder is `/logs`.
+
+## Install javaagent FAQs
+- Linux Tomcat 7, Tomcat 8  
+Change the first line of `tomcat/bin/catalina.sh`.
+```shell
+CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/skywalking-agent/skywalking-agent.jar"; export CATALINA_OPTS
+```
+
+- Windows Tomcat 7, Tomcat 8  
+Change the first line of `tomcat/bin/catalina.bat`.
+```shell
+set "CATALINA_OPTS=-javaagent:/path/to/skywalking-agent/skywalking-agent.jar"
+```
+- JAR file  
+Add `-javaagent` argument to command line in which you start your app. And make sure to add it before the `-jar` argument. eg:
+ ```shell
+ java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -jar yourApp.jar
+ ```
+## Supported middlewares, frameworks and libraries
+See [supported list](Supported-list.md).
+
+## Plugins
+Java agent plugins are all pluggable. Optional plugins could be provided by source codes or in `optional-plugins` folder under agent.
+For using these plugins, you need to compile source codes by yourself, or copy the certain plugins to `/plugins`.
+
+Now, we have the following known plugins.
+* [Trace Spring beans](agent-optional-plugins/Spring-bean-plugins.md)
+* [Trace Oracle and Resin](agent-optional-plugins/Oracle-Resin-plugins.md)
+* [Filter traces through custom services](agent-optional-plugins/trace-ignore-plugin.md)
+
+## Advanced Features
+* [Override settings through System.properties](en/java-agent/Setting-override.md)
+* [Direct uplink and disable naming discovery](en/java-agent/Direct-uplink.md)
+* [Open TLS](en/java-agent/TLS.md)
+* [Namespace Isolation](en/java-agent/Namespace.md)
+* [Token Authentication](en/java-agent/Token-auth.md)
+* Application Toolkit
+    * [Overview](en/java-agent/Applicaton-toolkit.md)
+    * [Use SkyWalking OpenTracing compatible tracer](en/java-agent/Opentracing.md)
+    * Integration with log frameworks
+      * [log4j](en/java-agent/Application-toolkit-log4j-1.x.md)
+      * [log4j2](en/java-agent/Application-toolkit-log4j-2.x.md)
+      * [logback](en/java-agent/Application-toolkit-logback-1.x.md)
+    * [Trace by SkyWalking manual APIs](en/java-agent/Application-toolkit-trace.md)
+    * [Trace across threads](en/java-agent/Application-toolkit-trace-cross-thread.md)
+
+# Test
+If you are interested in plugin compatible tests or agent performance, see the following reports.
+* [Plugin Test](https://github.com/SkywalkingTest/agent-integration-test-report)
+* [Java Agent Performance Test](https://skywalkingtest.github.io/Agent-Benchmarks/)
\ No newline at end of file
diff --git a/docs/en/Setting-override.md b/docs/en/setup/service-agent/java-agent/Setting-override.md
similarity index 100%
rename from docs/en/Setting-override.md
rename to docs/en/setup/service-agent/java-agent/Setting-override.md
diff --git a/docs/Supported-list.md b/docs/en/setup/service-agent/java-agent/Supported-list.md
similarity index 100%
rename from docs/Supported-list.md
rename to docs/en/setup/service-agent/java-agent/Supported-list.md
diff --git a/docs/en/TLS.md b/docs/en/setup/service-agent/java-agent/TLS.md
similarity index 91%
rename from docs/en/TLS.md
rename to docs/en/setup/service-agent/java-agent/TLS.md
index 7843ca0..b95d636 100644
--- a/docs/en/TLS.md
+++ b/docs/en/setup/service-agent/java-agent/TLS.md
@@ -18,7 +18,7 @@ So we didn't support TLS in naming service of HTTP service.
 
 ## Authentication Mode
 Only support **no mutual auth**.
-- Use this [script](../../tools/TLS/tls_key_generate.sh) if you are not familiar with how to generate key files.
+- Use this [script](../../../tools/TLS/tls_key_generate.sh) if you are not familiar with how to generate key files.
 - Find `ca.crt`, and use it at client side
 - Find `server.crt` and `server.pem`. Use them at server side.
 
diff --git a/docs/en/Token-auth.md b/docs/en/setup/service-agent/java-agent/Token-auth.md
similarity index 100%
rename from docs/en/Token-auth.md
rename to docs/en/setup/service-agent/java-agent/Token-auth.md
diff --git a/docs/en/Use-ShardingJDBC-as-storage-implementor.md b/docs/en/setup/service-agent/java-agent/Use-ShardingJDBC-as-storage-implementor.md
similarity index 100%
rename from docs/en/Use-ShardingJDBC-as-storage-implementor.md
rename to docs/en/setup/service-agent/java-agent/Use-ShardingJDBC-as-storage-implementor.md
diff --git a/docs/en/agent-optional-plugins/Oracle-Resin-plugins.md b/docs/en/setup/service-agent/java-agent/agent-optional-plugins/Oracle-Resin-plugins.md
similarity index 100%
rename from docs/en/agent-optional-plugins/Oracle-Resin-plugins.md
rename to docs/en/setup/service-agent/java-agent/agent-optional-plugins/Oracle-Resin-plugins.md
diff --git a/docs/en/agent-optional-plugins/Spring-bean-plugins.md b/docs/en/setup/service-agent/java-agent/agent-optional-plugins/Spring-bean-plugins.md
similarity index 100%
rename from docs/en/agent-optional-plugins/Spring-bean-plugins.md
rename to docs/en/setup/service-agent/java-agent/agent-optional-plugins/Spring-bean-plugins.md
diff --git a/docs/en/setup/service-agent/java-agent/agent-optional-plugins/trace-ignore-plugin.md b/docs/en/setup/service-agent/java-agent/agent-optional-plugins/trace-ignore-plugin.md
new file mode 100644
index 0000000..89195e4
--- /dev/null
+++ b/docs/en/setup/service-agent/java-agent/agent-optional-plugins/trace-ignore-plugin.md
@@ -0,0 +1,17 @@
+## Support custom trace ignore
+Here is an optional plugin `apm-trace-ignore-plugin`
+
+## Introduce
+- The purpose of this plugin is to filter custom services which are expected to ignore from the tracing system.
+- You can set up multiple URL path patterns, The services matches these patterns means won't be traced and analysis by agent and collector.
+- The current matching rule follows `Ant Path` match style , like `/path/*`, `/path/**`, `/path/?`.
+- Copy `apm-trace-ignore-plugin-x.jar` to `agent/plugins`, restarting the `agent` can effect the plugin.                                                                                                         
+
+## How to configure
+There are two ways to configure ignore patterns. Settings through system env has higher priority.
+ 1. Set through the system environment variable,you need to add `skywalking.trace.ignore_path` to the system variables, the value is the path that you need to ignore, multiple paths should be separated by `,`
+ 2. Copy`/agent/optional-plugins/apm-trace-ignore-plugin/apm-trace-ignore-plugin.config` to `/agent/config/` dir, and add rules to filter traces
+```
+trace.ignore_path=/your/path/1/**,/your/path/2/**
+```
+