You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by gi...@apache.org on 2021/02/21 12:48:56 UTC

[skywalking-website] branch asf-site updated: deploy: 90dcc3492d0f67ca5025701bf2d7b8f805179866

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

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/skywalking-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new aa1c736  deploy: 90dcc3492d0f67ca5025701bf2d7b8f805179866
aa1c736 is described below

commit aa1c7369326d23ff081f620c4649a7ab1252c72b
Author: kezhenxu94 <ke...@users.noreply.github.com>
AuthorDate: Sun Feb 21 12:48:48 2021 +0000

    deploy: 90dcc3492d0f67ca5025701bf2d7b8f805179866
---
 blog/2018-05-24-skywalking-net/index.html          |   2 +-
 .../index.html                                     |   2 +-
 blog/2019-01-01-understand-trace/index.html        |   2 +-
 blog/2019-01-25-mesh-loadtest/index.html           |   2 +-
 blog/2019-09-25-alarm-webhook-share/index.html     |   2 +-
 .../index.html                                     |   2 +-
 .../index.html                                     |   2 +-
 blog/2020-07-26-apdex-and-skywalking/index.html    |   2 +-
 blog/2020-08-03-skywalking8-1-release/index.html   |   2 +-
 blog/2020-08-11-observability-at-scale/index.html  |   2 +-
 blog/2020-10-29-skywalking8-2-release/index.html   |   2 +-
 blog/2020-11-21-apachecon-keynote/index.html       |   2 +-
 blog/2020-11-21-apachecon-obs-apisix/index.html    |   2 +-
 .../index.html                                     |   2 +-
 .../index.html                                     |   2 +-
 blog/2020-11-21-apachecon-obs-storage/index.html   |   2 +-
 .../index.html                                     |   2 +-
 .../index.html                                     |   2 +-
 blog/2021-01-01-300-contributors-mark/index.html   |   2 +-
 blog/2021-01-17-elastic-change-license/index.html  |   2 +-
 .../index.html                                     |   2 +-
 blog/2021-02-01-e2e-verifier-design/index.html     |   2 +-
 .../index.html                                     |   2 +-
 .../index.html                                     |   4 +-
 blog/e2e-design/index.html                         |   2 +-
 blog/index.html                                    |  35 +--
 blog/index.xml                                     | 161 +++++++++-
 .../obs-service-mesh-vm-with-sw-and-als/image1.png | Bin 0 -> 112262 bytes
 .../obs-service-mesh-vm-with-sw-and-als/image2.png | Bin 0 -> 132748 bytes
 .../obs-service-mesh-vm-with-sw-and-als/image3.png | Bin 0 -> 230538 bytes
 .../obs-service-mesh-vm-with-sw-and-als/image4.png | Bin 0 -> 94280 bytes
 .../obs-service-mesh-vm-with-sw-and-als/image5.png | Bin 0 -> 180438 bytes
 .../obs-service-mesh-vm-with-sw-and-als/image6.png | Bin 0 -> 335111 bytes
 .../obs-service-mesh-vm-with-sw-and-als/image7.png | Bin 0 -> 271826 bytes
 .../obs-service-mesh-vm-with-sw-and-als/image8.png | Bin 0 -> 228943 bytes
 .../obs-service-mesh-vm-with-sw-and-als/image9.png | Bin 0 -> 215018 bytes
 .../index.html                                     | 339 ++++++++++-----------
 .../stone-arch.jpg                                 | Bin 0 -> 119192 bytes
 blog/page/2/index.html                             |  35 ++-
 blog/page/3/index.html                             |  19 +-
 blog/skywalking8-4-release/index.html              |   2 +-
 .../backend-overview/index.html                    |   2 +-
 .../en/concepts-and-designs/event/index.html       |   2 +-
 .../latest/en/concepts-and-designs/mal/index.html  |   4 +-
 .../en/concepts-and-designs/manual-sdk/index.html  |   2 +-
 .../en/concepts-and-designs/meter/index.html       |   2 +-
 .../latest/en/concepts-and-designs/oal/index.html  |   2 +-
 .../en/concepts-and-designs/overview/index.html    |   2 +-
 .../probe-introduction/index.html                  |   2 +-
 .../concepts-and-designs/project-goals/index.html  |   2 +-
 .../en/concepts-and-designs/readme/index.html      |   2 +-
 .../scope-definitions/index.html                   |   2 +-
 .../concepts-and-designs/service-agent/index.html  |   2 +-
 .../service-mesh-probe/index.html                  |   2 +-
 .../en/concepts-and-designs/ui-overview/index.html |   2 +-
 .../index.html                                     |   2 +-
 .../index.html                                     |   2 +-
 docs/main/latest/en/faq/es-server-faq/index.html   |   2 +-
 .../en/faq/hour-day-metrics-stopping/index.html    |   2 +-
 .../en/faq/how-to-build-with-mac-m1/index.html     |   2 +-
 .../index.html                                     |   2 +-
 .../en/faq/install_agent_on_websphere/index.html   |   2 +-
 docs/main/latest/en/faq/kafka-plugin/index.html    |   2 +-
 .../en/faq/maven-compile-npm-failure/index.html    |   2 +-
 .../memory-leak-enhance-worker-thread/index.html   |   2 +-
 .../faq/protoc-plugin-fails-when-build/index.html  |   2 +-
 docs/main/latest/en/faq/readme/index.html          |   2 +-
 docs/main/latest/en/faq/thrift-plugin/index.html   |   2 +-
 .../latest/en/faq/time-and-timezone/index.html     |   2 +-
 .../en/faq/unexpected-endpoint-register/index.html |   2 +-
 .../latest/en/faq/v3-version-upgrade/index.html    |   2 +-
 .../latest/en/faq/v6-version-upgrade/index.html    |   2 +-
 .../latest/en/faq/v8-version-upgrade/index.html    |   2 +-
 docs/main/latest/en/faq/vnode/index.html           |   2 +-
 .../en/faq/why-have-traces-no-others/index.html    |   2 +-
 .../latest/en/faq/why_mq_not_involved/index.html   |   2 +-
 .../main/latest/en/guides/asf/committer/index.html |   2 +-
 .../en/guides/backend-oal-scripts/index.html       |   2 +-
 .../en/guides/backend-profile-export/index.html    |   2 +-
 .../latest/en/guides/backend-profile/index.html    |   4 +-
 .../guides/component-library-settings/index.html   |   2 +-
 .../en/guides/e2e-local-remote-debug/index.html    |   2 +-
 docs/main/latest/en/guides/how-to-build/index.html |   4 +-
 .../latest/en/guides/how-to-release/index.html     |   2 +-
 .../java-plugin-development-guide/index.html       |   4 +-
 docs/main/latest/en/guides/plugin-test/index.html  |  24 +-
 docs/main/latest/en/guides/readme/index.html       |   4 +-
 .../latest/en/guides/source-extension/index.html   |   2 +-
 .../latest/en/guides/storage-extention/index.html  |   2 +-
 .../protocols/browser-http-api-protocol/index.html |   2 +-
 .../en/protocols/browser-protocol/index.html       |   2 +-
 .../en/protocols/http-api-protocol/index.html      |   2 +-
 .../latest/en/protocols/jvm-protocol/index.html    |   2 +-
 .../en/protocols/log-data-protocol/index.html      |   2 +-
 .../latest/en/protocols/query-protocol/index.html  |   4 +-
 docs/main/latest/en/protocols/readme/index.html    |   2 +-
 .../index.html                                     |   2 +-
 .../index.html                                     |   2 +-
 .../en/protocols/trace-data-protocol-v3/index.html |   2 +-
 .../setup/backend/advanced-deployment/index.html   |   2 +-
 .../en/setup/backend/apdex-threshold/index.html    |   2 +-
 .../en/setup/backend/backend-alarm/index.html      |   2 +-
 .../en/setup/backend/backend-cluster/index.html    |   2 +-
 .../en/setup/backend/backend-fetcher/index.html    |   4 +-
 .../setup/backend/backend-health-check/index.html  |   2 +-
 .../en/setup/backend/backend-init-mode/index.html  |   2 +-
 .../en/setup/backend/backend-ip-port/index.html    |   2 +-
 .../latest/en/setup/backend/backend-k8s/index.html |   2 +-
 .../en/setup/backend/backend-meter/index.html      |   4 +-
 .../en/setup/backend/backend-receivers/index.html  |   2 +-
 .../backend/backend-setting-override/index.html    |   2 +-
 .../en/setup/backend/backend-setup/index.html      |   2 +-
 .../setup/backend/backend-start-up-mode/index.html |   2 +-
 .../en/setup/backend/backend-storage/index.html    |  31 +-
 .../en/setup/backend/backend-telemetry/index.html  |   2 +-
 .../en/setup/backend/backend-token-auth/index.html |   2 +-
 .../en/setup/backend/backend-ui-setup/index.html   |   2 +-
 .../en/setup/backend/backend-zabbix/index.html     |   4 +-
 .../backend/configuration-vocabulary/index.html    |  44 ++-
 .../en/setup/backend/dynamic-config/index.html     |   4 +-
 .../backend/endpoint-grouping-rules/index.html     |   2 +-
 .../latest/en/setup/backend/grpc-ssl/index.html    |   4 +-
 .../en/setup/backend/metrics-exporter/index.html   |   2 +-
 .../setup/backend/service-auto-grouping/index.html |   2 +-
 .../en/setup/backend/slow-db-statement/index.html  |   2 +-
 .../setup/backend/spring-sleuth-setup/index.html   |   4 +-
 .../en/setup/backend/trace-sampling/index.html     |   2 +-
 docs/main/latest/en/setup/backend/ttl/index.html   |   2 +-
 .../latest/en/setup/backend/ui-setup/index.html    |   2 +-
 .../backend/uninstrumented-gateways/index.html     |   2 +-
 .../latest/en/setup/envoy/als_setting/index.html   |   2 +-
 .../setup/envoy/examples/metrics/readme/index.html |   2 +-
 .../setup/envoy/metrics_service_setting/index.html |   2 +-
 docs/main/latest/en/setup/istio/readme/index.html  |   2 +-
 docs/main/latest/en/setup/readme/index.html        |   4 +-
 .../kotlin-coroutine-plugin/index.html             |   2 +-
 .../oracle-resin-plugins/index.html                |   2 +-
 .../spring-annotation-plugin/index.html            |   2 +-
 .../trace-ignore-plugin/index.html                 |   2 +-
 .../application-toolkit-log4j-1.x/index.html       |   2 +-
 .../application-toolkit-log4j-2.x/index.html       |   2 +-
 .../application-toolkit-logback-1.x/index.html     |   2 +-
 .../application-toolkit-meter/index.html           |   2 +-
 .../application-toolkit-micrometer/index.html      |   2 +-
 .../index.html                                     |   2 +-
 .../application-toolkit-trace/index.html           |   2 +-
 .../java-agent/configuration-discovery/index.html  |   2 +-
 .../java-agent/customize-enhance-trace/index.html  |   2 +-
 .../java-agent/how-to-disable-plugin/index.html    |   2 +-
 .../how-to-enable-kafka-reporter/index.html        |   2 +-
 .../how-to-tolerate-exceptions/index.html          |   2 +-
 .../service-agent/java-agent/namespace/index.html  |   2 +-
 .../java-agent/opentracing/index.html              |   2 +-
 .../java-agent/plugin-list/index.html              |   2 +-
 .../service-agent/java-agent/readme/index.html     |   2 +-
 .../java-agent/setting-override/index.html         |   2 +-
 .../java-agent/specified-agent-config/index.html   |   2 +-
 .../java-agent/supported-list/index.html           |   2 +-
 .../setup/service-agent/java-agent/tls/index.html  |   4 +-
 .../service-agent/java-agent/token-auth/index.html |   2 +-
 docs/main/latest/en/ui/readme/index.html           |   2 +-
 docs/main/latest/readme/index.html                 |   4 +-
 false/index.html                                   |   2 +-
 index.json                                         |   2 +-
 index.xml                                          | 161 +++++++++-
 sitemap.xml                                        |  34 ++-
 tags/agent/index.html                              |   2 +-
 tags/browser/index.html                            |   2 +-
 tags/conference/index.html                         |   2 +-
 tags/design/index.html                             |   2 +-
 tags/dotnetcore/index.html                         |   2 +-
 tags/index.html                                    |   2 +-
 tags/index.xml                                     |   2 +-
 tags/infrastructure-monitoring/index.html          |   2 +-
 tags/java/index.html                               |   2 +-
 tags/kafka/index.html                              |   2 +-
 tags/logs/index.html                               |   2 +-
 tags/performance/index.html                        |   2 +-
 tags/profiling/index.html                          |   2 +-
 tags/release-blog/index.html                       |   2 +-
 tags/satellite/index.html                          |   2 +-
 tags/service-mesh/index.html                       |  33 +-
 tags/service-mesh/index.xml                        | 161 +++++++++-
 tags/spring/index.html                             |   2 +-
 tags/testing/index.html                            |   2 +-
 tags/tracing/index.html                            |   2 +-
 tags/user-manual/index.html                        |   2 +-
 tags/video/index.html                              |   2 +-
 tango/index.html                                   |   2 +-
 true/index.html                                    |   2 +-
 zh_tags/agent/index.html                           |   2 +-
 zh_tags/conference/index.html                      |   2 +-
 zh_tags/development/index.html                     |   2 +-
 zh_tags/dotnetcore/index.html                      |   2 +-
 zh_tags/elasticsearch/index.html                   |   2 +-
 zh_tags/index.html                                 |   2 +-
 zh_tags/java/index.html                            |   2 +-
 zh_tags/open-source-contribution/index.html        |   2 +-
 zh_tags/open-source-promotion-plan/index.html      |   2 +-
 zh_tags/profiling/index.html                       |   2 +-
 zh_tags/release-blog/index.html                    |   2 +-
 zh_tags/service-mesh/index.html                    |   2 +-
 zh_tags/source-code/index.html                     |   2 +-
 zh_tags/tracing/index.html                         |   2 +-
 zh_tags/use-case/index.html                        |   2 +-
 zh_tags/user-manual/index.html                     |   2 +-
 zh_tags/user-manual/page/2/index.html              |   2 +-
 zh_tags/video/index.html                           |   2 +-
 zh_tags/web-ui/index.html                          |   2 +-
 209 files changed, 1028 insertions(+), 455 deletions(-)

diff --git a/blog/2018-05-24-skywalking-net/index.html b/blog/2018-05-24-skywalking-net/index.html
index f4ca9cd..b3ad628 100644
--- a/blog/2018-05-24-skywalking-net/index.html
+++ b/blog/2018-05-24-skywalking-net/index.html
@@ -325,7 +325,7 @@ dotnet run -p sample/SkyWalking.Sample.Frontend</p>
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2018-12-12-skywalking-service-mesh-ready/index.html b/blog/2018-12-12-skywalking-service-mesh-ready/index.html
index 51f08eb..2867d04 100644
--- a/blog/2018-12-12-skywalking-service-mesh-ready/index.html
+++ b/blog/2018-12-12-skywalking-service-mesh-ready/index.html
@@ -369,7 +369,7 @@ This is why we are embracing Skywalking, which makes service performance observa
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2019-01-01-understand-trace/index.html b/blog/2019-01-01-understand-trace/index.html
index fd557f0..6769bac 100644
--- a/blog/2019-01-01-understand-trace/index.html
+++ b/blog/2019-01-01-understand-trace/index.html
@@ -326,7 +326,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2019-01-25-mesh-loadtest/index.html b/blog/2019-01-25-mesh-loadtest/index.html
index ee83c96..86c2859 100644
--- a/blog/2019-01-25-mesh-loadtest/index.html
+++ b/blog/2019-01-25-mesh-loadtest/index.html
@@ -328,7 +328,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2019-09-25-alarm-webhook-share/index.html b/blog/2019-09-25-alarm-webhook-share/index.html
index 69e917d..74353b7 100644
--- a/blog/2019-09-25-alarm-webhook-share/index.html
+++ b/blog/2019-09-25-alarm-webhook-share/index.html
@@ -313,7 +313,7 @@ bash build/build.sh
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2020-01-20-celebrate-200th-contributor/index.html b/blog/2020-01-20-celebrate-200th-contributor/index.html
index 87be439..60bd0d6 100644
--- a/blog/2020-01-20-celebrate-200th-contributor/index.html
+++ b/blog/2020-01-20-celebrate-200th-contributor/index.html
@@ -294,7 +294,7 @@ At the moment of graduation in spring 2019, the project had 100 contributors. No
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2020-04-13-apache-skywalking-profiling/index.html b/blog/2020-04-13-apache-skywalking-profiling/index.html
index 2286fa0..9235cad 100644
--- a/blog/2020-04-13-apache-skywalking-profiling/index.html
+++ b/blog/2020-04-13-apache-skywalking-profiling/index.html
@@ -342,7 +342,7 @@ try {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2020-07-26-apdex-and-skywalking/index.html b/blog/2020-07-26-apdex-and-skywalking/index.html
index cbeab09..7bacefa 100644
--- a/blog/2020-07-26-apdex-and-skywalking/index.html
+++ b/blog/2020-07-26-apdex-and-skywalking/index.html
@@ -345,7 +345,7 @@ Apdex Score  =  ------------------------------------------------------
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2020-08-03-skywalking8-1-release/index.html b/blog/2020-08-03-skywalking8-1-release/index.html
index 0ca9868..8fb023c 100644
--- a/blog/2020-08-03-skywalking8-1-release/index.html
+++ b/blog/2020-08-03-skywalking8-1-release/index.html
@@ -312,7 +312,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2020-08-11-observability-at-scale/index.html b/blog/2020-08-11-observability-at-scale/index.html
index a13287c..8e376f5 100644
--- a/blog/2020-08-11-observability-at-scale/index.html
+++ b/blog/2020-08-11-observability-at-scale/index.html
@@ -349,7 +349,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2020-10-29-skywalking8-2-release/index.html b/blog/2020-10-29-skywalking8-2-release/index.html
index 26a9509..e6db4ec 100644
--- a/blog/2020-10-29-skywalking8-2-release/index.html
+++ b/blog/2020-10-29-skywalking8-2-release/index.html
@@ -312,7 +312,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2020-11-21-apachecon-keynote/index.html b/blog/2020-11-21-apachecon-keynote/index.html
index 74e2502..86f7440 100644
--- a/blog/2020-11-21-apachecon-keynote/index.html
+++ b/blog/2020-11-21-apachecon-keynote/index.html
@@ -285,7 +285,7 @@ Many developers have joined the ASF as new contributors, committers, foundation
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2020-11-21-apachecon-obs-apisix/index.html b/blog/2020-11-21-apachecon-obs-apisix/index.html
index d9ca93d..219f134 100644
--- a/blog/2020-11-21-apachecon-obs-apisix/index.html
+++ b/blog/2020-11-21-apachecon-obs-apisix/index.html
@@ -283,7 +283,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2020-11-21-apachecon-obs-shardingsphere/index.html b/blog/2020-11-21-apachecon-obs-shardingsphere/index.html
index cadabc0..b319a8a 100644
--- a/blog/2020-11-21-apachecon-obs-shardingsphere/index.html
+++ b/blog/2020-11-21-apachecon-obs-shardingsphere/index.html
@@ -284,7 +284,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2020-11-21-apachecon-obs-sourcemarker/index.html b/blog/2020-11-21-apachecon-obs-sourcemarker/index.html
index 9d986d5..b15401d 100644
--- a/blog/2020-11-21-apachecon-obs-sourcemarker/index.html
+++ b/blog/2020-11-21-apachecon-obs-sourcemarker/index.html
@@ -284,7 +284,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2020-11-21-apachecon-obs-storage/index.html b/blog/2020-11-21-apachecon-obs-storage/index.html
index b8f83bd..26f687c 100644
--- a/blog/2020-11-21-apachecon-obs-storage/index.html
+++ b/blog/2020-11-21-apachecon-obs-storage/index.html
@@ -284,7 +284,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2020-11-25-skywalking-satellite-0.1.0-design/index.html b/blog/2020-11-25-skywalking-satellite-0.1.0-design/index.html
index 1404095..83ad899 100644
--- a/blog/2020-11-25-skywalking-satellite-0.1.0-design/index.html
+++ b/blog/2020-11-25-skywalking-satellite-0.1.0-design/index.html
@@ -491,7 +491,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2020-12-03-obs-service-mesh-with-sw-and-als/index.html b/blog/2020-12-03-obs-service-mesh-with-sw-and-als/index.html
index f9374ab..f6d7faa 100644
--- a/blog/2020-12-03-obs-service-mesh-with-sw-and-als/index.html
+++ b/blog/2020-12-03-obs-service-mesh-with-sw-and-als/index.html
@@ -419,7 +419,7 @@ If you want to  have commercial support for the ALS solution or hybrid mesh obse
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2021-01-01-300-contributors-mark/index.html b/blog/2021-01-01-300-contributors-mark/index.html
index 09ffe1c..eda5cf6 100644
--- a/blog/2021-01-01-300-contributors-mark/index.html
+++ b/blog/2021-01-01-300-contributors-mark/index.html
@@ -673,7 +673,7 @@ quicker than before, like why we named the project as SkyWalking, we will have a
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2021-01-17-elastic-change-license/index.html b/blog/2021-01-17-elastic-change-license/index.html
index d3c65c2..b71f722 100644
--- a/blog/2021-01-17-elastic-change-license/index.html
+++ b/blog/2021-01-17-elastic-change-license/index.html
@@ -302,7 +302,7 @@ In the later 2021, we will begin to invest the posibility of creating SkyWalking
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2021-01-23-tencent-cloud-violates-aplv2/index.html b/blog/2021-01-23-tencent-cloud-violates-aplv2/index.html
index 79cb810..bbfdfc3 100644
--- a/blog/2021-01-23-tencent-cloud-violates-aplv2/index.html
+++ b/blog/2021-01-23-tencent-cloud-violates-aplv2/index.html
@@ -310,7 +310,7 @@ took the following actions to connect with Tencent.</p>
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2021-02-01-e2e-verifier-design/index.html b/blog/2021-02-01-e2e-verifier-design/index.html
index 0c16bf9..19bf3e2 100644
--- a/blog/2021-02-01-e2e-verifier-design/index.html
+++ b/blog/2021-02-01-e2e-verifier-design/index.html
@@ -407,7 +407,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2021-02-07-infrastructure-monitoring/index.html b/blog/2021-02-07-infrastructure-monitoring/index.html
index d08fadf..059ff84 100644
--- a/blog/2021-02-07-infrastructure-monitoring/index.html
+++ b/blog/2021-02-07-infrastructure-monitoring/index.html
@@ -434,7 +434,7 @@ Note: Clear the browser local cache if you used it to access deployments of  pre
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/2021-02-09-skywalking-trace-threadpool/index.html b/blog/2021-02-09-skywalking-trace-threadpool/index.html
index a0d67b2..2270757 100644
--- a/blog/2021-02-09-skywalking-trace-threadpool/index.html
+++ b/blog/2021-02-09-skywalking-trace-threadpool/index.html
@@ -240,7 +240,7 @@ SkyWalking agent instrumentation have finished. For example,</p>
   <li>
     <a href="/blog/2021-02-07-infrastructure-monitoring/" class="btn btn-primary "><span class="mr-1">←</span> Previous</a>
   </li>
-    <a  class="btn btn-primary  disabled">Next <span class="ml-1">→</span></a>
+    <a href="/blog/obs-service-mesh-vm-with-sw-and-als/" class="btn btn-primary ">Next <span class="ml-1">→</span></a>
   </li>
 </ul>
 
@@ -324,7 +324,7 @@ SkyWalking agent instrumentation have finished. For example,</p>
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/e2e-design/index.html b/blog/e2e-design/index.html
index 2d1eef8..fd600b6 100644
--- a/blog/e2e-design/index.html
+++ b/blog/e2e-design/index.html
@@ -512,7 +512,7 @@ func run() {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/index.html b/blog/index.html
index 05f7b8d..e466799 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -173,6 +173,23 @@ if (!doNotTrack) {
 			
 			<li class="media mb-4">
 				<div class="media-body">
+					<h5 class="mt-0 mb-1"><a href="/blog/obs-service-mesh-vm-with-sw-and-als/">Observe VM Service Meshes with Apache SkyWalking and the Envoy Access Log Service</a></h5>
+					<p class="mb-2 mb-md-3"><small class="text-muted">Sunday, February 21, 2021 in Blog</small></p>
+					
+
+
+
+
+
+					<p class="pt-0 mt-0"> Origin: Observe VM Service Meshes with Apache SkyWalking and the Envoy Access Log Service - The New Stack
+ Apache SkyWalking: an APM (application performance monitor) system, especially designed for microservices, cloud native, and container-based …</p>
+					<p class="pt-0 mt-0">In this tutorial, you can learn how to use Apache SkyWalking for service mesh observability, in Kubernetes and / or in virtual machines.</p>
+					<p class="pt-0"><a href="/blog/obs-service-mesh-vm-with-sw-and-als/">Read more</a></p>
+				</div>
+			</li>
+			
+			<li class="media mb-4">
+				<div class="media-body">
 					<h5 class="mt-0 mb-1"><a href="/blog/2021-02-09-skywalking-trace-threadpool/">Apache SkyWalking: How to propagate context between threads when using ThreadPoolExecutor</a></h5>
 					<p class="mb-2 mb-md-3"><small class="text-muted">Tuesday, February 09, 2021 in Blog</small></p>
 					
@@ -326,22 +343,6 @@ Just 11 months ago, on Jan. 20th, 2020, SkyWalking hit the 200 contributors mark
 				</div>
 			</li>
 			
-			<li class="media mb-4">
-				<div class="media-body">
-					<h5 class="mt-0 mb-1"><a href="/blog/2020-11-25-skywalking-satellite-0.1.0-design/">The first design of Satellite 0.1.0</a></h5>
-					<p class="mb-2 mb-md-3"><small class="text-muted">Wednesday, November 25, 2020 in Blog</small></p>
-					
-
-
-
-
-
-					<p class="pt-0 mt-0"> Author: Jiapeng Liu. Baidu. skywalking-satellite: The Sidecar Project of Apache SkyWalking Nov. 25th, 2020  A lightweight collector/sidecar which can be deployed close to the target monitored system, to collect metrics, traces, and logs. It also …</p>
-					<p class="pt-0 mt-0">The design of Satellite 0.1.0.  The structure of the project would follow this design.</p>
-					<p class="pt-0"><a href="/blog/2020-11-25-skywalking-satellite-0.1.0-design/">Read more</a></p>
-				</div>
-			</li>
-			
 		</ul>
 		
 	</div>
@@ -454,7 +455,7 @@ Just 11 months ago, on Jan. 20th, 2020, SkyWalking hit the 200 contributors mark
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/index.xml b/blog/index.xml
index bf89767..2311b7b 100644
--- a/blog/index.xml
+++ b/blog/index.xml
@@ -4,7 +4,7 @@
     <link>/blog/</link>
     <description>Recent content in Blog on Apache SkyWalking</description>
     <generator>Hugo -- gohugo.io</generator>
-    <lastBuildDate>Tue, 09 Feb 2021 00:00:00 +0000</lastBuildDate>
+    <lastBuildDate>Sun, 21 Feb 2021 00:00:00 +0000</lastBuildDate>
     
 	  <atom:link href="/blog/index.xml" rel="self" type="application/rss+xml" />
     
@@ -15,6 +15,165 @@
     
     
     <item>
+      <title>Blog: Observe VM Service Meshes with Apache SkyWalking and the Envoy Access Log Service</title>
+      <link>/blog/obs-service-mesh-vm-with-sw-and-als/</link>
+      <pubDate>Sun, 21 Feb 2021 00:00:00 +0000</pubDate>
+      
+      <guid>/blog/obs-service-mesh-vm-with-sw-and-als/</guid>
+      <description>
+        
+        
+        &lt;p&gt;&lt;img src=&#34;stone-arch.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;p&gt;Origin: &lt;a href=&#34;https://thenewstack.io/observe-virtual-machine-service-meshes-with-apache-skywalking-and-the-envoy-access-log-service&#34;&gt;Observe VM Service Meshes with Apache SkyWalking and the Envoy Access Log Service - The New Stack&lt;/a&gt;&lt;/p&gt;
+&lt;/blockquote&gt;
+&lt;p&gt;&lt;a href=&#34;https://github.com/apache/skywalking&#34;&gt;Apache SkyWalking&lt;/a&gt;: an APM (application performance monitor) system, especially
+designed for microservices, cloud native, and container-based (Docker, Kubernetes, Mesos) architectures.&lt;/p&gt;
+&lt;p&gt;&lt;a href=&#34;https://www.envoyproxy.io/docs/envoy/latest/api-v2/service/accesslog/v2/als.proto&#34;&gt;Envoy Access Log Service&lt;/a&gt;: Access
+Log Service (ALS) is an Envoy extension that emits detailed access logs of all requests going through Envoy.&lt;/p&gt;
+&lt;h2 id=&#34;background&#34;&gt;Background&lt;/h2&gt;
+&lt;p&gt;In the &lt;a href=&#34;/blog/obs-service-mesh-with-sw-and-als&#34;&gt;previous post&lt;/a&gt;, we talked about the observability of service mesh under
+Kubernetes environment, and applied it to the bookinfo application in practice. We also mentioned that, in order to map
+the IP addresses into services, SkyWalking needs access to the service metadata from a Kubernetes cluster, which is not
+available for services deployed in virtual machines (VMs). In this post, we will introduce a new analyzer in SkyWalking
+that leverages Envoy’s metadata exchange mechanism to decouple with Kubernetes. The analyzer is designed to work in
+Kubernetes environments, VM environments, and hybrid environments. If there are virtual machines in your service mesh,
+you might want to try out this new analyzer for better observability, which we will demonstrate in this tutorial.&lt;/p&gt;
+&lt;h2 id=&#34;how-it-works&#34;&gt;How it works&lt;/h2&gt;
+&lt;p&gt;The mechanism of how the analyzer works is the same as what we discussed in
+the &lt;a href=&#34;/blog/obs-service-mesh-with-sw-and-als&#34;&gt;previous post&lt;/a&gt;. What makes VMs different from Kubernetes is that, for VM
+services, there are no places where we can fetch the metadata to map the IP addresses into services.&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
+&lt;p&gt;The basic idea we present in this article is to carry the metadata along with Envoy’s access logs, which is called
+metadata-exchange mechanism in Envoy. When Istio pilot-agent starts an Envoy proxy as a sidecar of a service, it
+collects the metadata of that service from the Kubernetes platform, or a file on the VM where that service is deployed,
+and injects the metadata into the bootstrap configuration of Envoy. Envoy will carry the metadata transparently when
+emitting access logs to the SkyWalking receiver.&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image2.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
+&lt;p&gt;But how does Envoy compose a piece of a complete access log that involves the client side and server side? When a
+request goes out from Envoy, a plugin of istio-proxy named &amp;ldquo;metadata-exchange&amp;rdquo; injects the metadata into the http
+headers (with a prefix like &lt;code&gt;x-envoy-downstream-&lt;/code&gt;), and the metadata is propagated to the server side. The Envoy sidecar
+of the server side receives the request and parses the headers into metadata, and puts the metadata into the access log,
+keyed by &lt;code&gt;wasm.downstream_peer&lt;/code&gt;. The server side Envoy also puts its own metadata into the access log keyed
+by &lt;code&gt;wasm.upstream_peer.&lt;/code&gt; Hence the two sides of a single request are completed.&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image3.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
+&lt;p&gt;With the metadata-exchange mechanism, we can use the metadata directly without any extra query.&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image4.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
+&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
+&lt;p&gt;In this tutorial, we will use another demo
+application &lt;a href=&#34;http://github.com/GoogleCloudPlatform/microservices-demo&#34;&gt;Online Boutique&lt;/a&gt; that consists of 10+ services so
+that we can deploy some of them in VMs and make them communicate with other services deployed in Kubernetes.&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image5.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
+&lt;p&gt;Topology of Online Boutique In order to cover as many cases as possible, we will deploy &lt;code&gt;CheckoutService&lt;/code&gt;
+and &lt;code&gt;PaymentService&lt;/code&gt; on VM and all the other services on Kubernetes, so that we can cover the cases like Kubernetes →
+VM (e.g. &lt;code&gt;Frontend&lt;/code&gt; → &lt;code&gt;CheckoutService&lt;/code&gt;), VM → Kubernetes (e.g. &lt;code&gt;CheckoutService&lt;/code&gt; → &lt;code&gt;ShippingService&lt;/code&gt;), and VM → VM (
+e.g. &lt;code&gt;CheckoutService&lt;/code&gt; → &lt;code&gt;PaymentService&lt;/code&gt;).&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: All the commands used in this tutorial are accessible
+on &lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts&#34;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
+&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;git clone https://github.com/SkyAPMTest/sw-als-vm-demo-scripts
+cd sw-als-vm-demo-scripts
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Make sure to init the &lt;code&gt;gcloud&lt;/code&gt; SDK properly before moving on. Modify the &lt;code&gt;GCP_PROJECT&lt;/code&gt; in file &lt;code&gt;env.sh&lt;/code&gt; to your own
+project name. Most of the other variables should be OK to work if you keep them intact. If you would like to
+use &lt;code&gt;ISTIO_VERSION&lt;/code&gt; &amp;gt;/= 1.8.0, please make sure &lt;a href=&#34;https://github.com/istio/istio/pull/28956&#34;&gt;this patch&lt;/a&gt; is included.&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;
+&lt;p&gt;Prepare Kubernetes cluster and VM instances
+&lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/00-create-cluster-and-vms.sh&#34;&gt;&lt;code&gt;00-create-cluster-and-vms.sh&lt;/code&gt;&lt;/a&gt;
+creates a new GKE cluster and 2 VM instances that will be used through the entire tutorial, and sets up some necessary
+firewall rules for them to communicate with each other.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Install Istio and SkyWalking
+&lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/01a-install-istio.sh&#34;&gt;&lt;code&gt;01a-install-istio.sh&lt;/code&gt;&lt;/a&gt;
+installs Istio Operator with spec &lt;code&gt;resources/vmintegration.yaml&lt;/code&gt;. In the YAML file, we enable the &lt;code&gt;meshExpansion&lt;/code&gt; that
+supports VM in mesh. We also enable the Envoy access log service and specify the
+address &lt;code&gt;skywalking-oap.istio-system.svc.cluster.local:11800&lt;/code&gt; to which Envoy emits the access logs.
+&lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/01b-install-skywalking.sh&#34;&gt;&lt;code&gt;01b-install-skywalking.sh&lt;/code&gt;&lt;/a&gt;
+installs Apache SkyWalking and sets the analyzer to &lt;code&gt;mx-mesh&lt;/code&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Create files to initialize the VM
+&lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/02-create-files-to-transfer-to-vm.sh&#34;&gt;&lt;code&gt;02-create-files-to-transfer-to-vm.sh&lt;/code&gt;&lt;/a&gt;
+creates necessary files that will be used to initialize the VMs.
+&lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/03-copy-work-files-to-vm.sh&#34;&gt;&lt;code&gt;03-copy-work-files-to-vm.sh&lt;/code&gt;&lt;/a&gt;
+securely transfers the generated files to the VMs with &lt;code&gt;gcloud scp&lt;/code&gt; command. Now use &lt;code&gt;./ssh.sh checkoutservice&lt;/code&gt;
+and &lt;code&gt;./ssh.sh paymentservice&lt;/code&gt; to log into the two VMs respectively, and &lt;code&gt;cd&lt;/code&gt; to the &lt;code&gt;~/work&lt;/code&gt; directory,
+execute &lt;code&gt;./prep-checkoutservice.sh&lt;/code&gt; on &lt;code&gt;checkoutservice&lt;/code&gt; VM instance and &lt;code&gt;./prep-paymentservice.sh&lt;/code&gt;
+on &lt;code&gt;paymentservice&lt;/code&gt; VM instance. The Istio sidecar should be installed and started properly. To verify that,
+use &lt;code&gt;tail -f /var/logs/istio/istio.log&lt;/code&gt; to check the Istio logs. The output should be something like:&lt;/p&gt;
+&lt;pre&gt;&lt;code&gt;2020-12-12T08:07:07.348329Z	info	sds	resource:default new connection
+2020-12-12T08:07:07.348401Z	info	sds	Skipping waiting for gateway secret
+2020-12-12T08:07:07.348401Z	info	sds	Skipping waiting for gateway secret
+2020-12-12T08:07:07.568676Z	info	cache	Root cert has changed, start rotating root cert for SDS clients
+2020-12-12T08:07:07.568718Z	info	cache	GenerateSecret default
+2020-12-12T08:07:07.569398Z	info	sds	resource:default pushed key/cert pair to proxy
+2020-12-12T08:07:07.949156Z	info	cache	Loaded root cert from certificate ROOTCA
+2020-12-12T08:07:07.949348Z	info	sds	resource:ROOTCA pushed root cert to proxy
+2020-12-12T20:12:07.384782Z	info	sds	resource:default pushed key/cert pair to proxy
+2020-12-12T20:12:07.384832Z	info	sds	Dynamic push for secret default
+&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The dnsmasq configuration &lt;code&gt;address=/.svc.cluster.local/{ISTIO_SERVICE_IP_STUB}&lt;/code&gt; also resolves the domain names ended
+with &lt;code&gt;.svc.cluster.local&lt;/code&gt; to Istio service IP, so that you are able to access the Kubernetes services in the VM by
+fully qualified domain name (FQDN) such as &lt;code&gt;httpbin.default.svc.cluster.local&lt;/code&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Deploy demo application Because we want to deploy &lt;code&gt;CheckoutService&lt;/code&gt; and &lt;code&gt;PaymentService&lt;/code&gt; manually on
+VM, &lt;code&gt;resources/google-demo.yaml&lt;/code&gt; removes the two services
+from &lt;a href=&#34;https://github.com/GoogleCloudPlatform/microservices-demo/blob/master/release/kubernetes-manifests.yaml&#34;&gt;the original YAML&lt;/a&gt;
+.
+&lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/04a-deploy-demo-app.sh&#34;&gt;&lt;code&gt;04a-deploy-demo-app.sh&lt;/code&gt;&lt;/a&gt;
+deploys the other services on Kubernetes. Then log into the 2 VMs, run &lt;code&gt;~/work/deploy-checkoutservice.sh&lt;/code&gt;
+and &lt;code&gt;~/work/deploy-paymentservice.sh&lt;/code&gt; respectively to deploy &lt;code&gt;CheckoutService&lt;/code&gt; and &lt;code&gt;PaymentService&lt;/code&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Register VMs to Istio Services on VMs can access the services on Kubernetes by FQDN, but that’s not the case when the
+Kubernetes services want to talk to the VM services. The mesh has no idea where to forward the requests such
+as &lt;code&gt;checkoutservice.default.svc.cluster.local&lt;/code&gt; because &lt;code&gt;checkoutservice&lt;/code&gt; is isolated in the VM. Therefore, we need to
+register the services to the
+mesh. &lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/04b-register-vm-with-istio.sh&#34;&gt;&lt;code&gt;04b-register-vm-with-istio.sh&lt;/code&gt;&lt;/a&gt;
+registers the VM services to the mesh by creating a &amp;ldquo;dummy&amp;rdquo; service without running Pods, and a &lt;code&gt;WorkloadEntry&lt;/code&gt; to
+bridge the &amp;ldquo;dummy&amp;rdquo; service with the VM service.&lt;/p&gt;
+&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h2 id=&#34;done&#34;&gt;Done!&lt;/h2&gt;
+&lt;p&gt;The demo application contains a &lt;code&gt;load generator&lt;/code&gt; service that performs requests repeatedly. We only need to wait a few
+seconds, and then open the SkyWalking web UI to check the results.&lt;/p&gt;
+&lt;pre&gt;&lt;code&gt;export POD_NAME=$(kubectl get pods --namespace istio-system -l &amp;quot;app=skywalking,release=skywalking,component=ui&amp;quot; -o jsonpath=&amp;quot;{.items[0].metadata.name}&amp;quot;)
+echo &amp;quot;Visit http://127.0.0.1:8080 to use your application&amp;quot;
+kubectl port-forward $POD_NAME 8080:8080 --namespace istio-system
+&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Navigate the browser to http://localhost:8080 . The metrics, topology should be there.&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image6.png&#34; alt=&#34;Topology&#34;&gt;&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image7.png&#34; alt=&#34;Global metrics&#34;&gt;&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image8.png&#34; alt=&#34;Metrics of CheckoutService&#34;&gt;&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image9.png&#34; alt=&#34;Metrics of PaymentService&#34;&gt;&lt;/p&gt;
+&lt;h2 id=&#34;troubleshooting&#34;&gt;Troubleshooting&lt;/h2&gt;
+&lt;p&gt;If you face any trouble when walking through the steps, here are some common problems and possible solutions:&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;
+&lt;p&gt;VM service cannot access Kubernetes services? It’s likely the DNS on the VM doesn’t correctly resolve the fully
+qualified domain names. Try to verify that with &lt;code&gt;nslookup istiod.istio-system.svc.cluster.local&lt;/code&gt;. If it doesn’t
+resolve to the Kubernetes CIDR address, recheck the step in &lt;code&gt;prep-checkoutservice.sh&lt;/code&gt; and &lt;code&gt;prep-paymentservice.sh&lt;/code&gt;. If
+the DNS works correctly, try to verify that Envoy has fetched the upstream clusters from the control plane
+with &lt;code&gt;curl http://localhost:15000/clusters&lt;/code&gt;. If it doesn’t contain the target service,
+recheck &lt;code&gt;prep-checkoutservice.sh&lt;/code&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Services are normal but nothing on SkyWalking WebUI? Check the SkyWalking OAP logs
+via &lt;code&gt;kubectl -n istio-system logs -f $(kubectl get pod -A -l &amp;quot;app=skywalking,release=skywalking,component=oap&amp;quot; -o name)&lt;/code&gt;
+and WebUI logs
+via &lt;code&gt;kubectl -n istio-system logs -f $(kubectl get pod -A -l &amp;quot;app=skywalking,release=skywalking,component=ui&amp;quot; -o name)&lt;/code&gt;
+to see whether there are any error logs . Also, make sure the time zone at the bottom-right of the browser is set
+to &lt;code&gt;UTC +0&lt;/code&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h2 id=&#34;additional-resources&#34;&gt;Additional Resources&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;&lt;a href=&#34;/blog/obs-service-mesh-with-sw-and-als&#34;&gt;Observe a Service Mesh with Envoy ALS&lt;/a&gt;.&lt;/li&gt;
+&lt;/ul&gt;
+
+      </description>
+    </item>
+    
+    <item>
       <title>Blog: Apache SkyWalking: How to propagate context between threads when using ThreadPoolExecutor</title>
       <link>/blog/2021-02-09-skywalking-trace-threadpool/</link>
       <pubDate>Tue, 09 Feb 2021 00:00:00 +0000</pubDate>
diff --git a/blog/obs-service-mesh-vm-with-sw-and-als/image1.png b/blog/obs-service-mesh-vm-with-sw-and-als/image1.png
new file mode 100644
index 0000000..f33e273
Binary files /dev/null and b/blog/obs-service-mesh-vm-with-sw-and-als/image1.png differ
diff --git a/blog/obs-service-mesh-vm-with-sw-and-als/image2.png b/blog/obs-service-mesh-vm-with-sw-and-als/image2.png
new file mode 100644
index 0000000..5502e00
Binary files /dev/null and b/blog/obs-service-mesh-vm-with-sw-and-als/image2.png differ
diff --git a/blog/obs-service-mesh-vm-with-sw-and-als/image3.png b/blog/obs-service-mesh-vm-with-sw-and-als/image3.png
new file mode 100644
index 0000000..360dbdc
Binary files /dev/null and b/blog/obs-service-mesh-vm-with-sw-and-als/image3.png differ
diff --git a/blog/obs-service-mesh-vm-with-sw-and-als/image4.png b/blog/obs-service-mesh-vm-with-sw-and-als/image4.png
new file mode 100644
index 0000000..bec99cc
Binary files /dev/null and b/blog/obs-service-mesh-vm-with-sw-and-als/image4.png differ
diff --git a/blog/obs-service-mesh-vm-with-sw-and-als/image5.png b/blog/obs-service-mesh-vm-with-sw-and-als/image5.png
new file mode 100644
index 0000000..0ae2a2c
Binary files /dev/null and b/blog/obs-service-mesh-vm-with-sw-and-als/image5.png differ
diff --git a/blog/obs-service-mesh-vm-with-sw-and-als/image6.png b/blog/obs-service-mesh-vm-with-sw-and-als/image6.png
new file mode 100644
index 0000000..267b4a9
Binary files /dev/null and b/blog/obs-service-mesh-vm-with-sw-and-als/image6.png differ
diff --git a/blog/obs-service-mesh-vm-with-sw-and-als/image7.png b/blog/obs-service-mesh-vm-with-sw-and-als/image7.png
new file mode 100644
index 0000000..3a387fd
Binary files /dev/null and b/blog/obs-service-mesh-vm-with-sw-and-als/image7.png differ
diff --git a/blog/obs-service-mesh-vm-with-sw-and-als/image8.png b/blog/obs-service-mesh-vm-with-sw-and-als/image8.png
new file mode 100644
index 0000000..6bd48a6
Binary files /dev/null and b/blog/obs-service-mesh-vm-with-sw-and-als/image8.png differ
diff --git a/blog/obs-service-mesh-vm-with-sw-and-als/image9.png b/blog/obs-service-mesh-vm-with-sw-and-als/image9.png
new file mode 100644
index 0000000..e1aa1c9
Binary files /dev/null and b/blog/obs-service-mesh-vm-with-sw-and-als/image9.png differ
diff --git a/blog/2021-02-07-infrastructure-monitoring/index.html b/blog/obs-service-mesh-vm-with-sw-and-als/index.html
similarity index 52%
copy from blog/2021-02-07-infrastructure-monitoring/index.html
copy to blog/obs-service-mesh-vm-with-sw-and-als/index.html
index d08fadf..5848958 100644
--- a/blog/2021-02-07-infrastructure-monitoring/index.html
+++ b/blog/obs-service-mesh-vm-with-sw-and-als/index.html
@@ -19,24 +19,24 @@
 <meta name="msapplication-TileColor" content="#da532c">
 <meta name="theme-color" content="#ffffff">
 
-<title>SkyWalking 8.4 provides infrastructure monitoring | Apache SkyWalking</title><meta property="og:title" content="SkyWalking 8.4 provides infrastructure monitoring" />
-<meta property="og:description" content="In this tutorial, learn how to use Apache SkyWalking for infrastructure monitoring" />
+<title>Observe VM Service Meshes with Apache SkyWalking and the Envoy Access Log Service | Apache SkyWalking</title><meta property="og:title" content="Observe VM Service Meshes with Apache SkyWalking and the Envoy Access Log Service" />
+<meta property="og:description" content="In this tutorial, you can learn how to use Apache SkyWalking for service mesh observability, in Kubernetes and / or in virtual machines." />
 <meta property="og:type" content="article" />
-<meta property="og:url" content="/blog/2021-02-07-infrastructure-monitoring/" />
-<meta property="article:published_time" content="2021-02-08T00:00:00+00:00" />
+<meta property="og:url" content="/blog/obs-service-mesh-vm-with-sw-and-als/" />
+<meta property="article:published_time" content="2021-02-21T00:00:00+00:00" />
 
-<meta itemprop="name" content="SkyWalking 8.4 provides infrastructure monitoring">
-<meta itemprop="description" content="In this tutorial, learn how to use Apache SkyWalking for infrastructure monitoring">
-<meta itemprop="datePublished" content="2021-02-08T00:00:00+00:00" />
+<meta itemprop="name" content="Observe VM Service Meshes with Apache SkyWalking and the Envoy Access Log Service">
+<meta itemprop="description" content="In this tutorial, you can learn how to use Apache SkyWalking for service mesh observability, in Kubernetes and / or in virtual machines.">
+<meta itemprop="datePublished" content="2021-02-21T00:00:00+00:00" />
 
-<meta itemprop="wordCount" content="798">
+<meta itemprop="wordCount" content="1285">
 
 
 
-<meta itemprop="keywords" content="Infrastructure Monitoring," />
+<meta itemprop="keywords" content="Service Mesh," />
 <meta name="twitter:card" content="summary"/>
-<meta name="twitter:title" content="SkyWalking 8.4 provides infrastructure monitoring"/>
-<meta name="twitter:description" content="In this tutorial, learn how to use Apache SkyWalking for infrastructure monitoring"/>
+<meta name="twitter:title" content="Observe VM Service Meshes with Apache SkyWalking and the Envoy Access Log Service"/>
+<meta name="twitter:description" content="In this tutorial, you can learn how to use Apache SkyWalking for service mesh observability, in Kubernetes and / or in virtual machines."/>
 
 <script type="application/javascript">
 var doNotTrack = false;
@@ -65,7 +65,7 @@ if (!doNotTrack) {
 
 
 
-    <title>SkyWalking 8.4 provides infrastructure monitoring | Apache SkyWalking</title>
+    <title>Observe VM Service Meshes with Apache SkyWalking and the Envoy Access Log Service | Apache SkyWalking</title>
   </head>
   <body class="td-page td-blog">
     <header>
@@ -166,191 +166,178 @@ if (!doNotTrack) {
           <main class="col-12 col-md-12 col-xl-10 pl-md-4 pr-md-4" role="main">
             
 <div class="td-content">
-	<h1>SkyWalking 8.4 provides infrastructure monitoring</h1>
-	<div class="lead">In this tutorial, learn how to use Apache SkyWalking for infrastructure monitoring</div>
+	<h1>Observe VM Service Meshes with Apache SkyWalking and the Envoy Access Log Service</h1>
+	<div class="lead">In this tutorial, you can learn how to use Apache SkyWalking for service mesh observability, in Kubernetes and / or in virtual machines.</div>
 	<div class="td-byline mb-4">
-		By <b>Kai Wan, Sheng Wu. tetrate.io</b> |
-		<time datetime="2021-02-08" class="text-muted">Monday, February 08, 2021</time>
+		By <b><a href="http://github.com/kezhenxu94">Zhenxu Ke</a> and Hongtao Gao. tetrate.io</b> |
+		<time datetime="2021-02-21" class="text-muted">Sunday, February 21, 2021</time>
 
 
 		
 		<p class="mt-1 tags-box">
 			<i class="fas fa-tags" aria-hidden="true"></i>Tags |
 			
-			<span> <a href="/tags/infrastructure-monitoring">Infrastructure Monitoring</a></span>
+			<span> <a href="/tags/service-mesh">Service Mesh</a></span>
 			
 		</p>
 		
 
 
 	</div>
-	<p><img src="apache-skywalking.jpeg" alt=""></p>
+	<p><img src="stone-arch.jpg" alt=""></p>
 <blockquote>
-<p>Origin: <a href="https://www.tetrate.io/blog/skywalking-8-4-provides-infrastucture-monitoring-for-vms/">Tetrate.io blog</a></p>
+<p>Origin: <a href="https://thenewstack.io/observe-virtual-machine-service-meshes-with-apache-skywalking-and-the-envoy-access-log-service">Observe VM Service Meshes with Apache SkyWalking and the Envoy Access Log Service - The New Stack</a></p>
 </blockquote>
+<p><a href="https://github.com/apache/skywalking">Apache SkyWalking</a>: an APM (application performance monitor) system, especially
+designed for microservices, cloud native, and container-based (Docker, Kubernetes, Mesos) architectures.</p>
+<p><a href="https://www.envoyproxy.io/docs/envoy/latest/api-v2/service/accesslog/v2/als.proto">Envoy Access Log Service</a>: Access
+Log Service (ALS) is an Envoy extension that emits detailed access logs of all requests going through Envoy.</p>
 <h2 id="background">Background</h2>
-<p>Apache SkyWalking&ndash; the APM tool for distributed systems&ndash;  has historically focused on providing observability around tracing and metrics, but service performance is often affected by the host. The newest release, SkyWalking 8.4.0, introduces a new  feature for monitoring  virtual machines. Users can easily detect possible problems from the dashboard&ndash; for example, when CPU usage is overloaded, when there’s not enough memory or disk space, or when the network status is [...]
+<p>In the <a href="/blog/obs-service-mesh-with-sw-and-als">previous post</a>, we talked about the observability of service mesh under
+Kubernetes environment, and applied it to the bookinfo application in practice. We also mentioned that, in order to map
+the IP addresses into services, SkyWalking needs access to the service metadata from a Kubernetes cluster, which is not
+available for services deployed in virtual machines (VMs). In this post, we will introduce a new analyzer in SkyWalking
+that leverages Envoy’s metadata exchange mechanism to decouple with Kubernetes. The analyzer is designed to work in
+Kubernetes environments, VM environments, and hybrid environments. If there are virtual machines in your service mesh,
+you might want to try out this new analyzer for better observability, which we will demonstrate in this tutorial.</p>
 <h2 id="how-it-works">How it works</h2>
-<p>SkyWalking leverages Prometheus and OpenTelemetry for collecting metrics data as we did for Istio control panel metrics; Prometheus is mature and widely used, and we expect to see increased adoption of the new CNCF project, OpenTelemetry. The SkyWalking OAP Server receives these metrics data of OpenCensus format from OpenTelemetry. The process is as follows:</p>
-<p><img src="how-it-works.png" alt="The monitring work process"></p>
-<ol>
-<li>Prometheus Node Exporter collects metrics data from the VMs.</li>
-<li>OpenTelemetry Collector fetches metrics from Node Exporters via Prometheus Receiver,  and pushes metrics to SkyWalking OAP Server via the OpenCensus GRPC Exporter.</li>
-<li>The SkyWalking OAP Server parses the expression with <a href="https://github.com/apache/skywalking/blob/master/docs/en/concepts-and-designs/mal.md">MAL</a> to filter/calculate/aggregate and store the results. The expression rules are in <code>/config/otel-oc-rules/vm.yaml</code>.</li>
-<li>We can now see the data on the SkyWalking WebUI dashboard.</li>
-</ol>
-<h2 id="what-to-monitor">What to monitor</h2>
-<p>SkyWalking provides default monitoring metrics including:</p>
+<p>The mechanism of how the analyzer works is the same as what we discussed in
+the <a href="/blog/obs-service-mesh-with-sw-and-als">previous post</a>. What makes VMs different from Kubernetes is that, for VM
+services, there are no places where we can fetch the metadata to map the IP addresses into services.</p>
+<p><img src="image1.png" alt=""></p>
+<p>The basic idea we present in this article is to carry the metadata along with Envoy’s access logs, which is called
+metadata-exchange mechanism in Envoy. When Istio pilot-agent starts an Envoy proxy as a sidecar of a service, it
+collects the metadata of that service from the Kubernetes platform, or a file on the VM where that service is deployed,
+and injects the metadata into the bootstrap configuration of Envoy. Envoy will carry the metadata transparently when
+emitting access logs to the SkyWalking receiver.</p>
+<p><img src="image2.png" alt=""></p>
+<p>But how does Envoy compose a piece of a complete access log that involves the client side and server side? When a
+request goes out from Envoy, a plugin of istio-proxy named &ldquo;metadata-exchange&rdquo; injects the metadata into the http
+headers (with a prefix like <code>x-envoy-downstream-</code>), and the metadata is propagated to the server side. The Envoy sidecar
+of the server side receives the request and parses the headers into metadata, and puts the metadata into the access log,
+keyed by <code>wasm.downstream_peer</code>. The server side Envoy also puts its own metadata into the access log keyed
+by <code>wasm.upstream_peer.</code> Hence the two sides of a single request are completed.</p>
+<p><img src="image3.png" alt=""></p>
+<p>With the metadata-exchange mechanism, we can use the metadata directly without any extra query.</p>
+<p><img src="image4.png" alt=""></p>
+<h2 id="example">Example</h2>
+<p>In this tutorial, we will use another demo
+application <a href="http://github.com/GoogleCloudPlatform/microservices-demo">Online Boutique</a> that consists of 10+ services so
+that we can deploy some of them in VMs and make them communicate with other services deployed in Kubernetes.</p>
+<p><img src="image5.png" alt=""></p>
+<p>Topology of Online Boutique In order to cover as many cases as possible, we will deploy <code>CheckoutService</code>
+and <code>PaymentService</code> on VM and all the other services on Kubernetes, so that we can cover the cases like Kubernetes →
+VM (e.g. <code>Frontend</code> → <code>CheckoutService</code>), VM → Kubernetes (e.g. <code>CheckoutService</code> → <code>ShippingService</code>), and VM → VM (
+e.g. <code>CheckoutService</code> → <code>PaymentService</code>).</p>
+<p><strong>NOTE</strong>: All the commands used in this tutorial are accessible
+on <a href="https://github.com/SkyAPMTest/sw-als-vm-demo-scripts">GitHub</a>.</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">git clone https://github.com/SkyAPMTest/sw-als-vm-demo-scripts
+cd sw-als-vm-demo-scripts
+</code></pre></div><p>Make sure to init the <code>gcloud</code> SDK properly before moving on. Modify the <code>GCP_PROJECT</code> in file <code>env.sh</code> to your own
+project name. Most of the other variables should be OK to work if you keep them intact. If you would like to
+use <code>ISTIO_VERSION</code> &gt;/= 1.8.0, please make sure <a href="https://github.com/istio/istio/pull/28956">this patch</a> is included.</p>
 <ul>
-<li>CPU Usage (%)</li>
-<li>Memory RAM Usage (MB)</li>
-<li>Memory Swap Usage (MB)</li>
-<li>CPU Average Used</li>
-<li>CPU Load</li>
-<li>Memory RAM (total/available/used MB)</li>
-<li>Memory Swap (total/free MB)</li>
-<li>File System Mount point Usage (%)</li>
-<li>Disk R/W (KB/s)</li>
-<li>Network Bandwidth Usage (receive/transmit KB/s)</li>
-<li>Network Status (tcp_curr_estab/tcp_tw/tcp_alloc/sockets_used/udp_inuse)</li>
-<li>File fd Allocated</li>
+<li>
+<p>Prepare Kubernetes cluster and VM instances
+<a href="https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/00-create-cluster-and-vms.sh"><code>00-create-cluster-and-vms.sh</code></a>
+creates a new GKE cluster and 2 VM instances that will be used through the entire tutorial, and sets up some necessary
+firewall rules for them to communicate with each other.</p>
+</li>
+<li>
+<p>Install Istio and SkyWalking
+<a href="https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/01a-install-istio.sh"><code>01a-install-istio.sh</code></a>
+installs Istio Operator with spec <code>resources/vmintegration.yaml</code>. In the YAML file, we enable the <code>meshExpansion</code> that
+supports VM in mesh. We also enable the Envoy access log service and specify the
+address <code>skywalking-oap.istio-system.svc.cluster.local:11800</code> to which Envoy emits the access logs.
+<a href="https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/01b-install-skywalking.sh"><code>01b-install-skywalking.sh</code></a>
+installs Apache SkyWalking and sets the analyzer to <code>mx-mesh</code>.</p>
+</li>
+<li>
+<p>Create files to initialize the VM
+<a href="https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/02-create-files-to-transfer-to-vm.sh"><code>02-create-files-to-transfer-to-vm.sh</code></a>
+creates necessary files that will be used to initialize the VMs.
+<a href="https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/03-copy-work-files-to-vm.sh"><code>03-copy-work-files-to-vm.sh</code></a>
+securely transfers the generated files to the VMs with <code>gcloud scp</code> command. Now use <code>./ssh.sh checkoutservice</code>
+and <code>./ssh.sh paymentservice</code> to log into the two VMs respectively, and <code>cd</code> to the <code>~/work</code> directory,
+execute <code>./prep-checkoutservice.sh</code> on <code>checkoutservice</code> VM instance and <code>./prep-paymentservice.sh</code>
+on <code>paymentservice</code> VM instance. The Istio sidecar should be installed and started properly. To verify that,
+use <code>tail -f /var/logs/istio/istio.log</code> to check the Istio logs. The output should be something like:</p>
+<pre><code>2020-12-12T08:07:07.348329Z	info	sds	resource:default new connection
+2020-12-12T08:07:07.348401Z	info	sds	Skipping waiting for gateway secret
+2020-12-12T08:07:07.348401Z	info	sds	Skipping waiting for gateway secret
+2020-12-12T08:07:07.568676Z	info	cache	Root cert has changed, start rotating root cert for SDS clients
+2020-12-12T08:07:07.568718Z	info	cache	GenerateSecret default
+2020-12-12T08:07:07.569398Z	info	sds	resource:default pushed key/cert pair to proxy
+2020-12-12T08:07:07.949156Z	info	cache	Loaded root cert from certificate ROOTCA
+2020-12-12T08:07:07.949348Z	info	sds	resource:ROOTCA pushed root cert to proxy
+2020-12-12T20:12:07.384782Z	info	sds	resource:default pushed key/cert pair to proxy
+2020-12-12T20:12:07.384832Z	info	sds	Dynamic push for secret default
+</code></pre><p>The dnsmasq configuration <code>address=/.svc.cluster.local/{ISTIO_SERVICE_IP_STUB}</code> also resolves the domain names ended
+with <code>.svc.cluster.local</code> to Istio service IP, so that you are able to access the Kubernetes services in the VM by
+fully qualified domain name (FQDN) such as <code>httpbin.default.svc.cluster.local</code>.</p>
+</li>
+<li>
+<p>Deploy demo application Because we want to deploy <code>CheckoutService</code> and <code>PaymentService</code> manually on
+VM, <code>resources/google-demo.yaml</code> removes the two services
+from <a href="https://github.com/GoogleCloudPlatform/microservices-demo/blob/master/release/kubernetes-manifests.yaml">the original YAML</a>
+.
+<a href="https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/04a-deploy-demo-app.sh"><code>04a-deploy-demo-app.sh</code></a>
+deploys the other services on Kubernetes. Then log into the 2 VMs, run <code>~/work/deploy-checkoutservice.sh</code>
+and <code>~/work/deploy-paymentservice.sh</code> respectively to deploy <code>CheckoutService</code> and <code>PaymentService</code>.</p>
+</li>
+<li>
+<p>Register VMs to Istio Services on VMs can access the services on Kubernetes by FQDN, but that’s not the case when the
+Kubernetes services want to talk to the VM services. The mesh has no idea where to forward the requests such
+as <code>checkoutservice.default.svc.cluster.local</code> because <code>checkoutservice</code> is isolated in the VM. Therefore, we need to
+register the services to the
+mesh. <a href="https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/04b-register-vm-with-istio.sh"><code>04b-register-vm-with-istio.sh</code></a>
+registers the VM services to the mesh by creating a &ldquo;dummy&rdquo; service without running Pods, and a <code>WorkloadEntry</code> to
+bridge the &ldquo;dummy&rdquo; service with the VM service.</p>
+</li>
+</ul>
+<h2 id="done">Done!</h2>
+<p>The demo application contains a <code>load generator</code> service that performs requests repeatedly. We only need to wait a few
+seconds, and then open the SkyWalking web UI to check the results.</p>
+<pre><code>export POD_NAME=$(kubectl get pods --namespace istio-system -l &quot;app=skywalking,release=skywalking,component=ui&quot; -o jsonpath=&quot;{.items[0].metadata.name}&quot;)
+echo &quot;Visit http://127.0.0.1:8080 to use your application&quot;
+kubectl port-forward $POD_NAME 8080:8080 --namespace istio-system
+</code></pre><p>Navigate the browser to http://localhost:8080 . The metrics, topology should be there.</p>
+<p><img src="image6.png" alt="Topology"></p>
+<p><img src="image7.png" alt="Global metrics"></p>
+<p><img src="image8.png" alt="Metrics of CheckoutService"></p>
+<p><img src="image9.png" alt="Metrics of PaymentService"></p>
+<h2 id="troubleshooting">Troubleshooting</h2>
+<p>If you face any trouble when walking through the steps, here are some common problems and possible solutions:</p>
+<ul>
+<li>
+<p>VM service cannot access Kubernetes services? It’s likely the DNS on the VM doesn’t correctly resolve the fully
+qualified domain names. Try to verify that with <code>nslookup istiod.istio-system.svc.cluster.local</code>. If it doesn’t
+resolve to the Kubernetes CIDR address, recheck the step in <code>prep-checkoutservice.sh</code> and <code>prep-paymentservice.sh</code>. If
+the DNS works correctly, try to verify that Envoy has fetched the upstream clusters from the control plane
+with <code>curl http://localhost:15000/clusters</code>. If it doesn’t contain the target service,
+recheck <code>prep-checkoutservice.sh</code>.</p>
+</li>
+<li>
+<p>Services are normal but nothing on SkyWalking WebUI? Check the SkyWalking OAP logs
+via <code>kubectl -n istio-system logs -f $(kubectl get pod -A -l &quot;app=skywalking,release=skywalking,component=oap&quot; -o name)</code>
+and WebUI logs
+via <code>kubectl -n istio-system logs -f $(kubectl get pod -A -l &quot;app=skywalking,release=skywalking,component=ui&quot; -o name)</code>
+to see whether there are any error logs . Also, make sure the time zone at the bottom-right of the browser is set
+to <code>UTC +0</code>.</p>
+</li>
 </ul>
-<p>The following is how it looks when we monitor Linux:</p>
-<p><img src="monitoring-screen-shot1.png" alt=""></p>
-<p><img src="monitoring-screen-shot2.png" alt=""></p>
-<h2 id="how-to-use">How to use</h2>
-<p>To enable this feature, we need to install Prometheus Node Exporter and OpenTelemetry Collector and activate the VM monitoring rules in SkyWalking OAP Server.</p>
-<h3 id="install-prometheus-node-exporter">Install Prometheus Node Exporter</h3>
-<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz
-tar xvfz node_exporter-1.0.1.linux-amd64.tar.gz
-cd node_exporter-1.0.1.linux-amd64
-./node_exporter
-</code></pre></div><p>In linux Node Exporter  exposes metrics on port <code>9100</code> by default. When it is running, we can get the metrics  from the <code>/metrics</code> endpoint. Use a web browser or command <code>curl</code> to verify.</p>
-<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">curl http://localhost:9100/metrics
-</code></pre></div><p>We should see all the metrics from the output like:</p>
-<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell"><span style="color:#75715e"># HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.</span>
-<span style="color:#75715e"># TYPE go_gc_duration_seconds summary</span>
-go_gc_duration_seconds<span style="color:#f92672">{</span>quantile<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;0&#34;</span><span style="color:#f92672">}</span> 7.7777e-05
-go_gc_duration_seconds<span style="color:#f92672">{</span>quantile<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;0.25&#34;</span><span style="color:#f92672">}</span> 0.000113756
-go_gc_duration_seconds<span style="color:#f92672">{</span>quantile<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;0.5&#34;</span><span style="color:#f92672">}</span> 0.000127199
-go_gc_duration_seconds<span style="color:#f92672">{</span>quantile<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;0.75&#34;</span><span style="color:#f92672">}</span> 0.000147778
-go_gc_duration_seconds<span style="color:#f92672">{</span>quantile<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;1&#34;</span><span style="color:#f92672">}</span> 0.000371894
-go_gc_duration_seconds_sum 0.292994058
-go_gc_duration_seconds_count <span style="color:#ae81ff">2029</span>
-...
-</code></pre></div><p>Note: We only need to install Node Exporter,  rather than Prometheus server.
-If you want to get more information about Prometheus Node Exporter  see: <a href="https://prometheus.io/docs/guides/node-exporter/">https://prometheus.io/docs/guides/node-exporter/</a></p>
-<h3 id="install-opentelemetry-collector">Install OpenTelemetry Collector</h3>
-<p>We can quickly install a OpenTelemetry Collector instance by using <code>docker-compose</code> with the following steps:</p>
-<ol>
-<li>Create a directory to store the configuration files, like <code>/usr/local/otel</code>.</li>
-<li>Create <code>docker-compose.yaml</code> and <code>otel-collector-config.yaml</code> in this directory represented below:</li>
-</ol>
-<p><code>docker-compose.yaml</code></p>
-<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml"><span style="color:#f92672">version</span>: <span style="color:#e6db74">&#34;2&#34;</span>
-<span style="color:#f92672">services</span>:
-  <span style="color:#75715e"># Collector</span>
-  <span style="color:#f92672">otel-collector</span>:
-    <span style="color:#75715e"># Specify the image to start the container from</span>
-    <span style="color:#f92672">image</span>: <span style="color:#ae81ff">otel/opentelemetry-collector:0.19.0</span>
-    <span style="color:#75715e"># Set the  otel-collector configfile </span>
-    <span style="color:#f92672">command</span>: [<span style="color:#e6db74">&#34;--config=/etc/otel-collector-config.yaml&#34;</span>]
-    <span style="color:#75715e"># Mapping the configfile to host directory</span>
-    <span style="color:#f92672">volumes</span>:
-      - <span style="color:#ae81ff">./otel-collector-config.yaml:/etc/otel-collector-config.yaml</span>
-    <span style="color:#f92672">ports</span>:
-      - <span style="color:#e6db74">&#34;13133:13133&#34;</span> <span style="color:#75715e"># health_check extension</span>
-      - <span style="color:#e6db74">&#34;55678&#34;</span>       <span style="color:#75715e"># OpenCensus receiver</span>
-</code></pre></div><p><code>otel-collector-config.yaml</code></p>
-<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml"><span style="color:#f92672">extensions</span>:
-  <span style="color:#f92672">health_check</span>:
-<span style="color:#75715e"># A receiver is how data gets into the OpenTelemetry Collector</span>
-<span style="color:#f92672">receivers</span>:
-  <span style="color:#75715e"># Set Prometheus Receiver to collects metrics from targets</span>
-  <span style="color:#75715e"># It’s supports the full set of Prometheus configuration</span>
-  <span style="color:#f92672">prometheus</span>:
-    <span style="color:#f92672">config</span>:
-      <span style="color:#f92672">scrape_configs</span>:
-        - <span style="color:#f92672">job_name</span>: <span style="color:#e6db74">&#39;otel-collector&#39;</span>
-          <span style="color:#f92672">scrape_interval</span>: <span style="color:#ae81ff">10s</span>
-          <span style="color:#f92672">static_configs</span>: 
-              <span style="color:#75715e"># Replace the IP to your VMs‘s IP which has installed Node Exporter</span>
-            - <span style="color:#f92672">targets</span>: [ <span style="color:#e6db74">&#39;vm1:9100&#39;</span> ] 
-            - <span style="color:#f92672">targets</span>: [ <span style="color:#e6db74">&#39;vm2:9100&#39;</span> ]
-            - <span style="color:#f92672">targets</span>: [ <span style="color:#ae81ff">‘vm3:9100&#39; ]</span>
-
-<span style="color:#f92672">processors</span>:
-  <span style="color:#f92672">batch</span>:
-
-<span style="color:#75715e"># An exporter is how data gets sent to different systems/back-ends</span>
-<span style="color:#f92672">exporters</span>:
-  <span style="color:#75715e"># Exports metrics via gRPC using OpenCensus format</span>
-  <span style="color:#f92672">opencensus</span>:
-    <span style="color:#f92672">endpoint</span>: <span style="color:#e6db74">&#34;docker.for.mac.host.internal:11800&#34;</span> <span style="color:#75715e"># The OAP Server address</span>
-    <span style="color:#f92672">insecure</span>: <span style="color:#66d9ef">true</span>
-  <span style="color:#f92672">logging</span>:
-    <span style="color:#f92672">logLevel</span>: <span style="color:#ae81ff">debug</span>
-
-<span style="color:#f92672">service</span>:
-  <span style="color:#f92672">pipelines</span>:
-    <span style="color:#f92672">metrics</span>:
-      <span style="color:#f92672">receivers</span>: [<span style="color:#ae81ff">prometheus]</span>
-      <span style="color:#f92672">processors</span>: [<span style="color:#ae81ff">batch]</span>
-      <span style="color:#f92672">exporters</span>: [<span style="color:#ae81ff">logging, opencensus]</span>
-
-  <span style="color:#f92672">extensions</span>: [<span style="color:#ae81ff">health_check]</span>
-</code></pre></div><ol start="3">
-<li>In this  directory use command <code>docker-compose</code> to start up the container:</li>
-</ol>
-<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">docker-compose up -d
-</code></pre></div><p>After the container is up and running, you should see metrics already exported in the logs:</p>
-<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">...
-Metric <span style="color:#75715e">#165</span>
-Descriptor:
--&gt; Name: node_network_receive_compressed_total
--&gt; Description: Network device statistic receive_compressed.
--&gt; Unit:
--&gt; DataType: DoubleSum
--&gt; IsMonotonic: true
--&gt; AggregationTemporality: AGGREGATION_TEMPORALITY_CUMULATIVE
-DoubleDataPoints <span style="color:#75715e">#0</span>
-Data point labels:
--&gt; device: ens4
-StartTime: <span style="color:#ae81ff">1612234754364000000</span>
-Timestamp: <span style="color:#ae81ff">1612235563448000000</span>
-Value: 0.000000
-DoubleDataPoints <span style="color:#75715e">#1</span>
-Data point labels:
--&gt; device: lo
-StartTime: <span style="color:#ae81ff">1612234754364000000</span>
-Timestamp: <span style="color:#ae81ff">1612235563448000000</span>
-Value: 0.000000
-...
-</code></pre></div><p>If you want to get more information about OpenTelemetry Collector  see: <a href="https://opentelemetry.io/docs/collector/">https://opentelemetry.io/docs/collector/</a></p>
-<h3 id="set-up-skywalking-oap-server">Set up SkyWalking OAP Server</h3>
-<p>To activate the oc handler and vm relevant rules, set your environment variables:</p>
-<pre><code>SW_OTEL_RECEIVER=default
-SW_OTEL_RECEIVER_ENABLED_OC_RULES=vm
-</code></pre><p>Note: If there are other rules already activated , you can add vm with use <code>,</code> as a separator.</p>
-<pre><code>SW_OTEL_RECEIVER_ENABLED_OC_RULES=vm,oap
-</code></pre><p>Start the SkyWalking OAP Server.</p>
-<h3 id="done">Done!</h3>
-<p>After all of the above steps are completed, check out the SkyWalking WebUI.  Dashboard <code>VM</code> provides the default metrics of all observed virtual machines.
-Note: Clear the browser local cache if you used it to access deployments of  previous SkyWalking versions.</p>
-<p><img src="monitoring-screen-shot3.png" alt=""></p>
 <h2 id="additional-resources">Additional Resources</h2>
 <ul>
-<li>Read more about the <a href="https://github.com/apache/skywalking/blob/v8.4.0/changes/changes-8.4.0.md">SkyWalking 8.4 release highlights</a>.</li>
-<li>Get more SkyWalking updates on <a href="https://twitter.com/ASFSkyWalking">Twitter</a>.</li>
+<li><a href="/blog/obs-service-mesh-with-sw-and-als">Observe a Service Mesh with Envoy ALS</a>.</li>
 </ul>
 
 	
 
 	<ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5">
   <li>
-    <a href="/blog/skywalking8-4-release/" class="btn btn-primary "><span class="mr-1">←</span> Previous</a>
+    <a href="/blog/2021-02-09-skywalking-trace-threadpool/" class="btn btn-primary "><span class="mr-1">←</span> Previous</a>
   </li>
-    <a href="/blog/2021-02-09-skywalking-trace-threadpool/" class="btn btn-primary ">Next <span class="ml-1">→</span></a>
+    <a  class="btn btn-primary  disabled">Next <span class="ml-1">→</span></a>
   </li>
 </ul>
 
@@ -434,7 +421,7 @@ Note: Clear the browser local cache if you used it to access deployments of  pre
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
@@ -495,15 +482,9 @@ Note: Clear the browser local cache if you used it to access deployments of  pre
   <ul>
     <li><a href="#background">Background</a></li>
     <li><a href="#how-it-works">How it works</a></li>
-    <li><a href="#what-to-monitor">What to monitor</a></li>
-    <li><a href="#how-to-use">How to use</a>
-      <ul>
-        <li><a href="#install-prometheus-node-exporter">Install Prometheus Node Exporter</a></li>
-        <li><a href="#install-opentelemetry-collector">Install OpenTelemetry Collector</a></li>
-        <li><a href="#set-up-skywalking-oap-server">Set up SkyWalking OAP Server</a></li>
-        <li><a href="#done">Done!</a></li>
-      </ul>
-    </li>
+    <li><a href="#example">Example</a></li>
+    <li><a href="#done">Done!</a></li>
+    <li><a href="#troubleshooting">Troubleshooting</a></li>
     <li><a href="#additional-resources">Additional Resources</a></li>
   </ul>
 </nav>
diff --git a/blog/obs-service-mesh-vm-with-sw-and-als/stone-arch.jpg b/blog/obs-service-mesh-vm-with-sw-and-als/stone-arch.jpg
new file mode 100644
index 0000000..3e9a0a7
Binary files /dev/null and b/blog/obs-service-mesh-vm-with-sw-and-als/stone-arch.jpg differ
diff --git a/blog/page/2/index.html b/blog/page/2/index.html
index 1bfdcf3..b1485db 100644
--- a/blog/page/2/index.html
+++ b/blog/page/2/index.html
@@ -172,6 +172,22 @@ if (!doNotTrack) {
 			
 			<li class="media mb-4">
 				<div class="media-body">
+					<h5 class="mt-0 mb-1"><a href="/blog/2020-11-25-skywalking-satellite-0.1.0-design/">The first design of Satellite 0.1.0</a></h5>
+					<p class="mb-2 mb-md-3"><small class="text-muted">Wednesday, November 25, 2020 in Blog</small></p>
+					
+
+
+
+
+
+					<p class="pt-0 mt-0"> Author: Jiapeng Liu. Baidu. skywalking-satellite: The Sidecar Project of Apache SkyWalking Nov. 25th, 2020  A lightweight collector/sidecar which can be deployed close to the target monitored system, to collect metrics, traces, and logs. It also …</p>
+					<p class="pt-0 mt-0">The design of Satellite 0.1.0.  The structure of the project would follow this design.</p>
+					<p class="pt-0"><a href="/blog/2020-11-25-skywalking-satellite-0.1.0-design/">Read more</a></p>
+				</div>
+			</li>
+			
+			<li class="media mb-4">
+				<div class="media-body">
 					<h5 class="mt-0 mb-1"><a href="/blog/2020-11-21-apachecon-obs-storage/">[Video] The history of distributed tracing storage</a></h5>
 					<p class="mb-2 mb-md-3"><small class="text-muted">Saturday, November 21, 2020 in Blog</small></p>
 					
@@ -314,23 +330,6 @@ if (!doNotTrack) {
 				</div>
 			</li>
 			
-			<li class="media mb-4">
-				<div class="media-body">
-					<h5 class="mt-0 mb-1"><a href="/blog/2020-04-13-apache-skywalking-profiling/">Apache SkyWalking: Use Profiling to Fix the Blind Spot of Distributed Tracing</a></h5>
-					<p class="mb-2 mb-md-3"><small class="text-muted">Monday, April 13, 2020 in Blog</small></p>
-					
-
-
-
-
-
-					<p class="pt-0 mt-0">This post originally appears on The New Stack
-This post introduces a way to automatically profile code in production with Apache SkyWalking. We believe the profile method helps reduce maintenance and overhead while increasing the precision in root …</p>
-					<p class="pt-0 mt-0">This post introduces a way to automatically profile code in production with Apache SkyWalking. We believe the profile method helps reduce maintenance and overhead while increasing the precision in root cause analysis.</p>
-					<p class="pt-0"><a href="/blog/2020-04-13-apache-skywalking-profiling/">Read more</a></p>
-				</div>
-			</li>
-			
 		</ul>
 		
 	</div>
@@ -443,7 +442,7 @@ This post introduces a way to automatically profile code in production with Apac
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/page/3/index.html b/blog/page/3/index.html
index 9348135..181af22 100644
--- a/blog/page/3/index.html
+++ b/blog/page/3/index.html
@@ -172,6 +172,23 @@ if (!doNotTrack) {
 			
 			<li class="media mb-4">
 				<div class="media-body">
+					<h5 class="mt-0 mb-1"><a href="/blog/2020-04-13-apache-skywalking-profiling/">Apache SkyWalking: Use Profiling to Fix the Blind Spot of Distributed Tracing</a></h5>
+					<p class="mb-2 mb-md-3"><small class="text-muted">Monday, April 13, 2020 in Blog</small></p>
+					
+
+
+
+
+
+					<p class="pt-0 mt-0">This post originally appears on The New Stack
+This post introduces a way to automatically profile code in production with Apache SkyWalking. We believe the profile method helps reduce maintenance and overhead while increasing the precision in root …</p>
+					<p class="pt-0 mt-0">This post introduces a way to automatically profile code in production with Apache SkyWalking. We believe the profile method helps reduce maintenance and overhead while increasing the precision in root cause analysis.</p>
+					<p class="pt-0"><a href="/blog/2020-04-13-apache-skywalking-profiling/">Read more</a></p>
+				</div>
+			</li>
+			
+			<li class="media mb-4">
+				<div class="media-body">
 					<h5 class="mt-0 mb-1"><a href="/blog/2020-01-20-celebrate-200th-contributor/">SkyWalking hits 200 contributors mark</a></h5>
 					<p class="mb-2 mb-md-3"><small class="text-muted">Monday, January 20, 2020 in Blog</small></p>
 					
@@ -393,7 +410,7 @@ In many big systems, distributed and especially microservice architectures becom
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/blog/skywalking8-4-release/index.html b/blog/skywalking8-4-release/index.html
index 7a19d80..ad7c12f 100644
--- a/blog/skywalking8-4-release/index.html
+++ b/blog/skywalking8-4-release/index.html
@@ -333,7 +333,7 @@ Figure 5: Grouped Service Topology</p>
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/docs/main/latest/en/concepts-and-designs/backend-overview/index.html b/docs/main/latest/en/concepts-and-designs/backend-overview/index.html
index d741c15..3492bb7 100644
--- a/docs/main/latest/en/concepts-and-designs/backend-overview/index.html
+++ b/docs/main/latest/en/concepts-and-designs/backend-overview/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/concepts-and-designs/event/index.html b/docs/main/latest/en/concepts-and-designs/event/index.html
index dee13ad..d7bcafe 100644
--- a/docs/main/latest/en/concepts-and-designs/event/index.html
+++ b/docs/main/latest/en/concepts-and-designs/event/index.html
@@ -832,7 +832,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/concepts-and-designs/mal/index.html b/docs/main/latest/en/concepts-and-designs/mal/index.html
index 4cc42bc..06c3a87 100644
--- a/docs/main/latest/en/concepts-and-designs/mal/index.html
+++ b/docs/main/latest/en/concepts-and-designs/mal/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
@@ -1072,7 +1072,7 @@ extracts instance level labels from the second array argument.</li>
 extracts endpoint level labels from the second array argument.</li>
 </ul>
 <h2 id="more-examples">More Examples</h2>
-<p>Please refer to <a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/oap-server/server-bootstrap/src/main/resources/fetcher-prom-rules/self.yaml">OAP Self-Observability</a></p>
+<p>Please refer to <a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/oap-server/server-bootstrap/src/main/resources/fetcher-prom-rules/self.yaml">OAP Self-Observability</a></p>
 
 
 
diff --git a/docs/main/latest/en/concepts-and-designs/manual-sdk/index.html b/docs/main/latest/en/concepts-and-designs/manual-sdk/index.html
index 40589fb..cb0d389 100644
--- a/docs/main/latest/en/concepts-and-designs/manual-sdk/index.html
+++ b/docs/main/latest/en/concepts-and-designs/manual-sdk/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/concepts-and-designs/meter/index.html b/docs/main/latest/en/concepts-and-designs/meter/index.html
index b76315d..8f163c8 100644
--- a/docs/main/latest/en/concepts-and-designs/meter/index.html
+++ b/docs/main/latest/en/concepts-and-designs/meter/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/concepts-and-designs/oal/index.html b/docs/main/latest/en/concepts-and-designs/oal/index.html
index 41502ad..652f2de 100644
--- a/docs/main/latest/en/concepts-and-designs/oal/index.html
+++ b/docs/main/latest/en/concepts-and-designs/oal/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/concepts-and-designs/overview/index.html b/docs/main/latest/en/concepts-and-designs/overview/index.html
index c27db0e..30411ae 100644
--- a/docs/main/latest/en/concepts-and-designs/overview/index.html
+++ b/docs/main/latest/en/concepts-and-designs/overview/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/concepts-and-designs/probe-introduction/index.html b/docs/main/latest/en/concepts-and-designs/probe-introduction/index.html
index 06f9ca7..edd6597 100644
--- a/docs/main/latest/en/concepts-and-designs/probe-introduction/index.html
+++ b/docs/main/latest/en/concepts-and-designs/probe-introduction/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/concepts-and-designs/project-goals/index.html b/docs/main/latest/en/concepts-and-designs/project-goals/index.html
index c44786a..1dbe972 100644
--- a/docs/main/latest/en/concepts-and-designs/project-goals/index.html
+++ b/docs/main/latest/en/concepts-and-designs/project-goals/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/concepts-and-designs/readme/index.html b/docs/main/latest/en/concepts-and-designs/readme/index.html
index ec86021..0445358 100644
--- a/docs/main/latest/en/concepts-and-designs/readme/index.html
+++ b/docs/main/latest/en/concepts-and-designs/readme/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/concepts-and-designs/scope-definitions/index.html b/docs/main/latest/en/concepts-and-designs/scope-definitions/index.html
index 1a75c11..42b7789 100644
--- a/docs/main/latest/en/concepts-and-designs/scope-definitions/index.html
+++ b/docs/main/latest/en/concepts-and-designs/scope-definitions/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/concepts-and-designs/service-agent/index.html b/docs/main/latest/en/concepts-and-designs/service-agent/index.html
index 83e6722..f460c13 100644
--- a/docs/main/latest/en/concepts-and-designs/service-agent/index.html
+++ b/docs/main/latest/en/concepts-and-designs/service-agent/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/concepts-and-designs/service-mesh-probe/index.html b/docs/main/latest/en/concepts-and-designs/service-mesh-probe/index.html
index 2cc32b3..371ce70 100644
--- a/docs/main/latest/en/concepts-and-designs/service-mesh-probe/index.html
+++ b/docs/main/latest/en/concepts-and-designs/service-mesh-probe/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/concepts-and-designs/ui-overview/index.html b/docs/main/latest/en/concepts-and-designs/ui-overview/index.html
index 7fc41ee..7f59e35 100644
--- a/docs/main/latest/en/concepts-and-designs/ui-overview/index.html
+++ b/docs/main/latest/en/concepts-and-designs/ui-overview/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/compatible-with-other-javaagent-bytecode-processing/index.html b/docs/main/latest/en/faq/compatible-with-other-javaagent-bytecode-processing/index.html
index 1421cc6..2081877 100644
--- a/docs/main/latest/en/faq/compatible-with-other-javaagent-bytecode-processing/index.html
+++ b/docs/main/latest/en/faq/compatible-with-other-javaagent-bytecode-processing/index.html
@@ -841,7 +841,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/enhancerequireobjectcache-cast-exception/index.html b/docs/main/latest/en/faq/enhancerequireobjectcache-cast-exception/index.html
index 5da5a2a..f5bb44c 100644
--- a/docs/main/latest/en/faq/enhancerequireobjectcache-cast-exception/index.html
+++ b/docs/main/latest/en/faq/enhancerequireobjectcache-cast-exception/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/es-server-faq/index.html b/docs/main/latest/en/faq/es-server-faq/index.html
index 650ee81..12698ea 100644
--- a/docs/main/latest/en/faq/es-server-faq/index.html
+++ b/docs/main/latest/en/faq/es-server-faq/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/hour-day-metrics-stopping/index.html b/docs/main/latest/en/faq/hour-day-metrics-stopping/index.html
index e8ecaa4..4a76ac0 100644
--- a/docs/main/latest/en/faq/hour-day-metrics-stopping/index.html
+++ b/docs/main/latest/en/faq/hour-day-metrics-stopping/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/how-to-build-with-mac-m1/index.html b/docs/main/latest/en/faq/how-to-build-with-mac-m1/index.html
index 874371f..cae008a 100644
--- a/docs/main/latest/en/faq/how-to-build-with-mac-m1/index.html
+++ b/docs/main/latest/en/faq/how-to-build-with-mac-m1/index.html
@@ -832,7 +832,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/import-project-eclipse-requireitems-exception/index.html b/docs/main/latest/en/faq/import-project-eclipse-requireitems-exception/index.html
index 3f578f1..08fb078 100644
--- a/docs/main/latest/en/faq/import-project-eclipse-requireitems-exception/index.html
+++ b/docs/main/latest/en/faq/import-project-eclipse-requireitems-exception/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/install_agent_on_websphere/index.html b/docs/main/latest/en/faq/install_agent_on_websphere/index.html
index d89f9a0..0a2bdb9 100644
--- a/docs/main/latest/en/faq/install_agent_on_websphere/index.html
+++ b/docs/main/latest/en/faq/install_agent_on_websphere/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/kafka-plugin/index.html b/docs/main/latest/en/faq/kafka-plugin/index.html
index 66dd76d..2f747eb 100644
--- a/docs/main/latest/en/faq/kafka-plugin/index.html
+++ b/docs/main/latest/en/faq/kafka-plugin/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/maven-compile-npm-failure/index.html b/docs/main/latest/en/faq/maven-compile-npm-failure/index.html
index a2af5de..aa60688 100644
--- a/docs/main/latest/en/faq/maven-compile-npm-failure/index.html
+++ b/docs/main/latest/en/faq/maven-compile-npm-failure/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/memory-leak-enhance-worker-thread/index.html b/docs/main/latest/en/faq/memory-leak-enhance-worker-thread/index.html
index 4a9a2d6..c45a6d9 100644
--- a/docs/main/latest/en/faq/memory-leak-enhance-worker-thread/index.html
+++ b/docs/main/latest/en/faq/memory-leak-enhance-worker-thread/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/protoc-plugin-fails-when-build/index.html b/docs/main/latest/en/faq/protoc-plugin-fails-when-build/index.html
index 509fbf3..206365d 100644
--- a/docs/main/latest/en/faq/protoc-plugin-fails-when-build/index.html
+++ b/docs/main/latest/en/faq/protoc-plugin-fails-when-build/index.html
@@ -832,7 +832,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/readme/index.html b/docs/main/latest/en/faq/readme/index.html
index bf376d7..079c8e1 100644
--- a/docs/main/latest/en/faq/readme/index.html
+++ b/docs/main/latest/en/faq/readme/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/thrift-plugin/index.html b/docs/main/latest/en/faq/thrift-plugin/index.html
index 3f90c81..b39cd2b 100644
--- a/docs/main/latest/en/faq/thrift-plugin/index.html
+++ b/docs/main/latest/en/faq/thrift-plugin/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/time-and-timezone/index.html b/docs/main/latest/en/faq/time-and-timezone/index.html
index 821d698..e66883a 100644
--- a/docs/main/latest/en/faq/time-and-timezone/index.html
+++ b/docs/main/latest/en/faq/time-and-timezone/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/unexpected-endpoint-register/index.html b/docs/main/latest/en/faq/unexpected-endpoint-register/index.html
index 829bcca..8d129fc 100644
--- a/docs/main/latest/en/faq/unexpected-endpoint-register/index.html
+++ b/docs/main/latest/en/faq/unexpected-endpoint-register/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/v3-version-upgrade/index.html b/docs/main/latest/en/faq/v3-version-upgrade/index.html
index a916b86..418f731 100644
--- a/docs/main/latest/en/faq/v3-version-upgrade/index.html
+++ b/docs/main/latest/en/faq/v3-version-upgrade/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/v6-version-upgrade/index.html b/docs/main/latest/en/faq/v6-version-upgrade/index.html
index 0d23c91..3aecfd2 100644
--- a/docs/main/latest/en/faq/v6-version-upgrade/index.html
+++ b/docs/main/latest/en/faq/v6-version-upgrade/index.html
@@ -841,7 +841,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/v8-version-upgrade/index.html b/docs/main/latest/en/faq/v8-version-upgrade/index.html
index 8695f30..179e06a 100644
--- a/docs/main/latest/en/faq/v8-version-upgrade/index.html
+++ b/docs/main/latest/en/faq/v8-version-upgrade/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/vnode/index.html b/docs/main/latest/en/faq/vnode/index.html
index 2b6d0f6..fbbb275 100644
--- a/docs/main/latest/en/faq/vnode/index.html
+++ b/docs/main/latest/en/faq/vnode/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/why-have-traces-no-others/index.html b/docs/main/latest/en/faq/why-have-traces-no-others/index.html
index ac467c8..9d7f836 100644
--- a/docs/main/latest/en/faq/why-have-traces-no-others/index.html
+++ b/docs/main/latest/en/faq/why-have-traces-no-others/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/faq/why_mq_not_involved/index.html b/docs/main/latest/en/faq/why_mq_not_involved/index.html
index dca9520..2ec7f7f 100644
--- a/docs/main/latest/en/faq/why_mq_not_involved/index.html
+++ b/docs/main/latest/en/faq/why_mq_not_involved/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/guides/asf/committer/index.html b/docs/main/latest/en/guides/asf/committer/index.html
index a15be39..490c149 100644
--- a/docs/main/latest/en/guides/asf/committer/index.html
+++ b/docs/main/latest/en/guides/asf/committer/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/guides/backend-oal-scripts/index.html b/docs/main/latest/en/guides/backend-oal-scripts/index.html
index 4dcb27e..e1cf373 100644
--- a/docs/main/latest/en/guides/backend-oal-scripts/index.html
+++ b/docs/main/latest/en/guides/backend-oal-scripts/index.html
@@ -844,7 +844,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/guides/backend-profile-export/index.html b/docs/main/latest/en/guides/backend-profile-export/index.html
index 6717a0f..2d1b989 100644
--- a/docs/main/latest/en/guides/backend-profile-export/index.html
+++ b/docs/main/latest/en/guides/backend-profile-export/index.html
@@ -832,7 +832,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/guides/backend-profile/index.html b/docs/main/latest/en/guides/backend-profile/index.html
index d59672d..8777db0 100644
--- a/docs/main/latest/en/guides/backend-profile/index.html
+++ b/docs/main/latest/en/guides/backend-profile/index.html
@@ -832,7 +832,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
@@ -985,7 +985,7 @@ If not, then add this element.</li>
 </li>
 </ul>
 <h2 id="profile-data-debug">Profile data debug</h2>
-<p>Please follow the <a href="../backend-profile-export#export-command-line-usage">exporter tool</a> to package profile data. Unzip the profile data and using <a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap/src/test/java/org/apache/skywalking/oap/server/tool/profile/exporter/profileexportedanalyze.java">analyzer main function</a> to run it.</p>
+<p>Please follow the <a href="../backend-profile-export#export-command-line-usage">exporter tool</a> to package profile data. Unzip the profile data and using <a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap/src/test/java/org/apache/skywalking/oap/server/tool/profile/exporter/profileexportedanalyze.java">analyzer main function</a> to run it.</p>
 
 
 
diff --git a/docs/main/latest/en/guides/component-library-settings/index.html b/docs/main/latest/en/guides/component-library-settings/index.html
index b4d1d24..deb1b03 100644
--- a/docs/main/latest/en/guides/component-library-settings/index.html
+++ b/docs/main/latest/en/guides/component-library-settings/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/guides/e2e-local-remote-debug/index.html b/docs/main/latest/en/guides/e2e-local-remote-debug/index.html
index b7853b0..7108c54 100644
--- a/docs/main/latest/en/guides/e2e-local-remote-debug/index.html
+++ b/docs/main/latest/en/guides/e2e-local-remote-debug/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/guides/how-to-build/index.html b/docs/main/latest/en/guides/how-to-build/index.html
index db13473..fa4f8ab 100644
--- a/docs/main/latest/en/guides/how-to-build/index.html
+++ b/docs/main/latest/en/guides/how-to-build/index.html
@@ -841,7 +841,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
@@ -1025,7 +1025,7 @@ If you just want to recompile part of the project, you have following options</p
 </blockquote>
 <h3 id="build-docker-images">Build docker images</h3>
 <p>We can build docker images of <code>backend</code> and <code>ui</code> with <code>Makefile</code> located in root folder.</p>
-<p>Refer to <a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/docker">Build docker image</a> for more details.</p>
+<p>Refer to <a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/docker">Build docker image</a> for more details.</p>
 <h2 id="setup-your-intellij-idea">Setup your IntelliJ IDEA</h2>
 <p><strong>NOTICE</strong>: If you clone the codes from GitHub, please make sure that you had finished step 1 to 3 in section <strong><a href="#build-from-github">Build from GitHub</a></strong>, if you download the source codes from the official website of SkyWalking, please make sure that you had followed the steps in section <strong><a href="#build-from-apache-source-code-release">Build from Apache source code release</a></strong>.</p>
 <ol>
diff --git a/docs/main/latest/en/guides/how-to-release/index.html b/docs/main/latest/en/guides/how-to-release/index.html
index 451cf1c..8dcca64 100644
--- a/docs/main/latest/en/guides/how-to-release/index.html
+++ b/docs/main/latest/en/guides/how-to-release/index.html
@@ -841,7 +841,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/guides/java-plugin-development-guide/index.html b/docs/main/latest/en/guides/java-plugin-development-guide/index.html
index 50f9f93..f57b713 100644
--- a/docs/main/latest/en/guides/java-plugin-development-guide/index.html
+++ b/docs/main/latest/en/guides/java-plugin-development-guide/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
@@ -1242,7 +1242,7 @@ ref in interceptor.</p>
   witnessMethodList<span style="color:#f92672">.</span><span style="color:#a6e22e">add</span><span style="color:#f92672">(</span>witnessMethod<span style="color:#f92672">);</span>
   <span style="color:#66d9ef">return</span> witnessMethodList<span style="color:#f92672">;</span>
 <span style="color:#f92672">}</span>
-</code></pre></div><p>For more example, see <a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/plugin/witness/witnesstest.java">WitnessTest.java</a></p>
+</code></pre></div><p>For more example, see <a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/plugin/witness/witnesstest.java">WitnessTest.java</a></p>
 </li>
 </ol>
 <h3 id="implement-an-interceptor">Implement an interceptor</h3>
diff --git a/docs/main/latest/en/guides/plugin-test/index.html b/docs/main/latest/en/guides/plugin-test/index.html
index 720cd34..e7547e8 100644
--- a/docs/main/latest/en/guides/plugin-test/index.html
+++ b/docs/main/latest/en/guides/plugin-test/index.html
@@ -832,7 +832,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
@@ -961,16 +961,16 @@ OAP backend is running to check the segments data sent from agents.</p>
 <h2 id="case-base-image-introduction">Case Base Image Introduction</h2>
 <p>The test framework provides <code>JVM-container</code> and <code>Tomcat-container</code> base images including JDK8, JDK14. You could choose the suitable one for your test case, if both are suitable, <strong><code>JVM-container</code> is preferred</strong>.</p>
 <h3 id="jvm-container-image-introduction">JVM-container Image Introduction</h3>
-<p><a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/test/plugin/containers/jvm-container">JVM-container</a> uses <code>openjdk:8</code> as the base image. <code>JVM-container</code> has supported JDK14, which inherits <code>openjdk:14</code>.
+<p><a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/test/plugin/containers/jvm-container">JVM-container</a> uses <code>openjdk:8</code> as the base image. <code>JVM-container</code> has supported JDK14, which inherits <code>openjdk:14</code>.
 The test case project is required to be packaged as <code>project-name.zip</code>, including <code>startup.sh</code> and uber jar, by using <code>mvn clean package</code>.</p>
 <p>Take the following test projects as good examples</p>
 <ul>
-<li><a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/test/plugin/scenarios/sofarpc-scenario">sofarpc-scenario</a> as a single project case.</li>
-<li><a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/test/plugin/scenarios/webflux-scenario">webflux-scenario</a> as a case including multiple projects.</li>
-<li><a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/test/plugin/scenarios/jdk14-with-gson-scenario">jdk14-with-gson-scenario</a> as a single project case with JDK14.</li>
+<li><a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/test/plugin/scenarios/sofarpc-scenario">sofarpc-scenario</a> as a single project case.</li>
+<li><a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/test/plugin/scenarios/webflux-scenario">webflux-scenario</a> as a case including multiple projects.</li>
+<li><a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/test/plugin/scenarios/jdk14-with-gson-scenario">jdk14-with-gson-scenario</a> as a single project case with JDK14.</li>
 </ul>
 <h3 id="tomcat-container-image-introduction">Tomcat-container Image Introduction</h3>
-<p><a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/test/plugin/containers/tomcat-container">Tomcat-container</a> uses <code>tomcat:8.5.57-jdk8-openjdk</code> or <code>tomcat:8.5.57-jdk14-openjdk</code> as the base image.
+<p><a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/test/plugin/containers/tomcat-container">Tomcat-container</a> uses <code>tomcat:8.5.57-jdk8-openjdk</code> or <code>tomcat:8.5.57-jdk14-openjdk</code> as the base image.
 The test case project is required to be packaged as <code>project-name.war</code> by using <code>mvn package</code>.</p>
 <p>Take the following test project as a good example</p>
 <ul>
@@ -1174,10 +1174,10 @@ don&rsquo;t need mapping any port to the host VM, or mount any folder.</p>
 </blockquote>
 <p><strong>Take following test cases as examples</strong></p>
 <ul>
-<li><a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/test/plugin/scenarios/dubbo-2.7.x-scenario/configuration.yml">dubbo-2.7.x with JVM-container</a></li>
-<li><a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/test/plugin/scenarios/jetty-scenario/configuration.yml">jetty with JVM-container</a></li>
-<li><a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/test/plugin/scenarios/gateway-2.1.x-scenario/configuration.yml">gateway with runningMode</a></li>
-<li><a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/test/plugin/scenarios/canal-scenario/configuration.yml">canal with docker-compose</a></li>
+<li><a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/test/plugin/scenarios/dubbo-2.7.x-scenario/configuration.yml">dubbo-2.7.x with JVM-container</a></li>
+<li><a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/test/plugin/scenarios/jetty-scenario/configuration.yml">jetty with JVM-container</a></li>
+<li><a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/test/plugin/scenarios/gateway-2.1.x-scenario/configuration.yml">gateway with runningMode</a></li>
+<li><a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/test/plugin/scenarios/canal-scenario/configuration.yml">canal with docker-compose</a></li>
 </ul>
 <h3 id="expecteddatayaml">expectedData.yaml</h3>
 <p><strong>Operator for number</strong></p>
@@ -1521,8 +1521,8 @@ java -jar <span style="color:#e6db74">${</span>agent_opts<span style="color:#e6d
 </blockquote>
 <p><strong>Take the following test cases as examples</strong></p>
 <ul>
-<li><a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/test/plugin/scenarios/undertow-scenario/bin/startup.sh">undertow</a></li>
-<li><a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/test/plugin/scenarios/webflux-scenario/webflux-dist/bin/startup.sh">webflux</a></li>
+<li><a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/test/plugin/scenarios/undertow-scenario/bin/startup.sh">undertow</a></li>
+<li><a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/test/plugin/scenarios/webflux-scenario/webflux-dist/bin/startup.sh">webflux</a></li>
 </ul>
 <h2 id="best-practices">Best Practices</h2>
 <h3 id="how-to-use-the-archetype-to-create-a-test-case-project">How To Use The Archetype To Create A Test Case Project</h3>
diff --git a/docs/main/latest/en/guides/readme/index.html b/docs/main/latest/en/guides/readme/index.html
index 537cc1e..644536b 100644
--- a/docs/main/latest/en/guides/readme/index.html
+++ b/docs/main/latest/en/guides/readme/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
@@ -1063,7 +1063,7 @@ in SkyWalking release, after 6.0.0-GA.</li>
 SkyWalking is supposed to follow the <a href="https://apache.org/legal/resolved.html">ASF 3RD PARTY LICENSE POLICY</a>,
 so if you&rsquo;re adding new dependencies to the project, you&rsquo;re responsible to check the newly-added dependencies
 won&rsquo;t break the policy, and add their LICENSE&rsquo;s and NOTICES&rsquo;s to the project.</p>
-<p>We have a <a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/tools/dependencies/check-license.sh">simple script</a> to help you make sure that you didn&rsquo;t
+<p>We have a <a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/tools/dependencies/check-license.sh">simple script</a> to help you make sure that you didn&rsquo;t
 miss any newly-added dependency:</p>
 <ul>
 <li>Build a distribution package and unzip/untar it to folder <code>dist</code>.</li>
diff --git a/docs/main/latest/en/guides/source-extension/index.html b/docs/main/latest/en/guides/source-extension/index.html
index 8103560..c63699c 100644
--- a/docs/main/latest/en/guides/source-extension/index.html
+++ b/docs/main/latest/en/guides/source-extension/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/guides/storage-extention/index.html b/docs/main/latest/en/guides/storage-extention/index.html
index d4a9ee2..2ca1116 100644
--- a/docs/main/latest/en/guides/storage-extention/index.html
+++ b/docs/main/latest/en/guides/storage-extention/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/protocols/browser-http-api-protocol/index.html b/docs/main/latest/en/protocols/browser-http-api-protocol/index.html
index c64ba6f..b8fb054 100644
--- a/docs/main/latest/en/protocols/browser-http-api-protocol/index.html
+++ b/docs/main/latest/en/protocols/browser-http-api-protocol/index.html
@@ -844,7 +844,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/protocols/browser-protocol/index.html b/docs/main/latest/en/protocols/browser-protocol/index.html
index 96f7436..176aa97 100644
--- a/docs/main/latest/en/protocols/browser-protocol/index.html
+++ b/docs/main/latest/en/protocols/browser-protocol/index.html
@@ -844,7 +844,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/protocols/http-api-protocol/index.html b/docs/main/latest/en/protocols/http-api-protocol/index.html
index 42a8a42..38a6f0d 100644
--- a/docs/main/latest/en/protocols/http-api-protocol/index.html
+++ b/docs/main/latest/en/protocols/http-api-protocol/index.html
@@ -844,7 +844,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/protocols/jvm-protocol/index.html b/docs/main/latest/en/protocols/jvm-protocol/index.html
index d5cceb4..388f560 100644
--- a/docs/main/latest/en/protocols/jvm-protocol/index.html
+++ b/docs/main/latest/en/protocols/jvm-protocol/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/protocols/log-data-protocol/index.html b/docs/main/latest/en/protocols/log-data-protocol/index.html
index 746106e..7504546 100644
--- a/docs/main/latest/en/protocols/log-data-protocol/index.html
+++ b/docs/main/latest/en/protocols/log-data-protocol/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/protocols/query-protocol/index.html b/docs/main/latest/en/protocols/query-protocol/index.html
index addb5f9..4e37555 100644
--- a/docs/main/latest/en/protocols/query-protocol/index.html
+++ b/docs/main/latest/en/protocols/query-protocol/index.html
@@ -841,7 +841,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
@@ -1028,7 +1028,7 @@ by the values.</p>
 <li>Trace. Query distributed traces by this.</li>
 <li>Alarm. Through alarm query, you can have alarm trend and details.</li>
 </ol>
-<p>The actual query GraphQL scrips could be found inside <code>query-protocol</code> folder in <a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources">here</a>.</p>
+<p>The actual query GraphQL scrips could be found inside <code>query-protocol</code> folder in <a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources">here</a>.</p>
 <h2 id="condition">Condition</h2>
 <h3 id="duration">Duration</h3>
 <p>Duration is a widely used parameter type as the APM data is time related. The explanations are as following.
diff --git a/docs/main/latest/en/protocols/readme/index.html b/docs/main/latest/en/protocols/readme/index.html
index 82f0d47..44ec08f 100644
--- a/docs/main/latest/en/protocols/readme/index.html
+++ b/docs/main/latest/en/protocols/readme/index.html
@@ -841,7 +841,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/protocols/skywalking-cross-process-correlation-headers-protocol-v1/index.html b/docs/main/latest/en/protocols/skywalking-cross-process-correlation-headers-protocol-v1/index.html
index 7901acd..2c4f28f 100644
--- a/docs/main/latest/en/protocols/skywalking-cross-process-correlation-headers-protocol-v1/index.html
+++ b/docs/main/latest/en/protocols/skywalking-cross-process-correlation-headers-protocol-v1/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/protocols/skywalking-cross-process-propagation-headers-protocol-v3/index.html b/docs/main/latest/en/protocols/skywalking-cross-process-propagation-headers-protocol-v3/index.html
index 131c4af..ee08e2f 100644
--- a/docs/main/latest/en/protocols/skywalking-cross-process-propagation-headers-protocol-v3/index.html
+++ b/docs/main/latest/en/protocols/skywalking-cross-process-propagation-headers-protocol-v3/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/protocols/trace-data-protocol-v3/index.html b/docs/main/latest/en/protocols/trace-data-protocol-v3/index.html
index 0d09e23..bd2d4c6 100644
--- a/docs/main/latest/en/protocols/trace-data-protocol-v3/index.html
+++ b/docs/main/latest/en/protocols/trace-data-protocol-v3/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/advanced-deployment/index.html b/docs/main/latest/en/setup/backend/advanced-deployment/index.html
index 3100384..215cb7d 100644
--- a/docs/main/latest/en/setup/backend/advanced-deployment/index.html
+++ b/docs/main/latest/en/setup/backend/advanced-deployment/index.html
@@ -841,7 +841,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/apdex-threshold/index.html b/docs/main/latest/en/setup/backend/apdex-threshold/index.html
index 7de12f9..a19d5dd 100644
--- a/docs/main/latest/en/setup/backend/apdex-threshold/index.html
+++ b/docs/main/latest/en/setup/backend/apdex-threshold/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/backend-alarm/index.html b/docs/main/latest/en/setup/backend/backend-alarm/index.html
index beda9c9..3b9468a 100644
--- a/docs/main/latest/en/setup/backend/backend-alarm/index.html
+++ b/docs/main/latest/en/setup/backend/backend-alarm/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/backend-cluster/index.html b/docs/main/latest/en/setup/backend/backend-cluster/index.html
index 7351a71..b1dfb86 100644
--- a/docs/main/latest/en/setup/backend/backend-cluster/index.html
+++ b/docs/main/latest/en/setup/backend/backend-cluster/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/backend-fetcher/index.html b/docs/main/latest/en/setup/backend/backend-fetcher/index.html
index c72cf40..1b2a8cd 100644
--- a/docs/main/latest/en/setup/backend/backend-fetcher/index.html
+++ b/docs/main/latest/en/setup/backend/backend-fetcher/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
@@ -948,7 +948,7 @@ services and their instances, as well as which rule files to load.</p>
 <p>OAP can load the configuration at bootstrap. If the new configuration is not well-formed, OAP fails to start up. The files
 are located at <code>$CLASSPATH/fetcher-prom-rules</code>.</p>
 <p>The file is written in YAML format, defined by the scheme described below. Brackets indicate that a parameter is optional.</p>
-<p>A full example can be found <a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/oap-server/server-bootstrap/src/main/resources/fetcher-prom-rules/self.yaml">here</a></p>
+<p>A full example can be found <a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/oap-server/server-bootstrap/src/main/resources/fetcher-prom-rules/self.yaml">here</a></p>
 <p>Generic placeholders are defined as follows:</p>
 <ul>
 <li><code>&lt;duration&gt;</code>: a duration This will parse a textual representation of a duration. The formats accepted are based on
diff --git a/docs/main/latest/en/setup/backend/backend-health-check/index.html b/docs/main/latest/en/setup/backend/backend-health-check/index.html
index 3f6813d..37b6191 100644
--- a/docs/main/latest/en/setup/backend/backend-health-check/index.html
+++ b/docs/main/latest/en/setup/backend/backend-health-check/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/backend-init-mode/index.html b/docs/main/latest/en/setup/backend/backend-init-mode/index.html
index 7c231c0..85d4145 100644
--- a/docs/main/latest/en/setup/backend/backend-init-mode/index.html
+++ b/docs/main/latest/en/setup/backend/backend-init-mode/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/backend-ip-port/index.html b/docs/main/latest/en/setup/backend/backend-ip-port/index.html
index ba72fd0..910e599 100644
--- a/docs/main/latest/en/setup/backend/backend-ip-port/index.html
+++ b/docs/main/latest/en/setup/backend/backend-ip-port/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/backend-k8s/index.html b/docs/main/latest/en/setup/backend/backend-k8s/index.html
index db88480..bf95b28 100644
--- a/docs/main/latest/en/setup/backend/backend-k8s/index.html
+++ b/docs/main/latest/en/setup/backend/backend-k8s/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/backend-meter/index.html b/docs/main/latest/en/setup/backend/backend-meter/index.html
index 8d7443f..9605f84 100644
--- a/docs/main/latest/en/setup/backend/backend-meter/index.html
+++ b/docs/main/latest/en/setup/backend/backend-meter/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
@@ -951,7 +951,7 @@ from agents, as well as which rule files to load.</p>
 <p>OAP can load the configuration at bootstrap. If the new configuration is not well-formed, OAP fails to start up. The files
 are located at <code>$CLASSPATH/meter-analyzer-config</code>.</p>
 <p>The file is written in YAML format, defined by the scheme described below. Brackets indicate that a parameter is optional.</p>
-<p>An example can be found <a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/oap-server/server-bootstrap/src/main/resources/meter-analyzer-config/spring-sleuth.yaml">here</a>.
+<p>An example can be found <a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/oap-server/server-bootstrap/src/main/resources/meter-analyzer-config/spring-sleuth.yaml">here</a>.
 If you&rsquo;re using Spring sleuth, you could use <a href="../spring-sleuth-setup">Spring Sleuth Setup</a>.</p>
 <h3 id="meters-configure">Meters configure</h3>
 <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml"><span style="color:#75715e"># expSuffix is appended to all expression in this file.</span>
diff --git a/docs/main/latest/en/setup/backend/backend-receivers/index.html b/docs/main/latest/en/setup/backend/backend-receivers/index.html
index a3560c8..2a199ed 100644
--- a/docs/main/latest/en/setup/backend/backend-receivers/index.html
+++ b/docs/main/latest/en/setup/backend/backend-receivers/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/backend-setting-override/index.html b/docs/main/latest/en/setup/backend/backend-setting-override/index.html
index 698b41f..e55b4c8 100644
--- a/docs/main/latest/en/setup/backend/backend-setting-override/index.html
+++ b/docs/main/latest/en/setup/backend/backend-setting-override/index.html
@@ -853,7 +853,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/backend-setup/index.html b/docs/main/latest/en/setup/backend/backend-setup/index.html
index ca22ba5..24e0ba8 100644
--- a/docs/main/latest/en/setup/backend/backend-setup/index.html
+++ b/docs/main/latest/en/setup/backend/backend-setup/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/backend-start-up-mode/index.html b/docs/main/latest/en/setup/backend/backend-start-up-mode/index.html
index bd82def..e076281 100644
--- a/docs/main/latest/en/setup/backend/backend-start-up-mode/index.html
+++ b/docs/main/latest/en/setup/backend/backend-start-up-mode/index.html
@@ -841,7 +841,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/backend-storage/index.html b/docs/main/latest/en/setup/backend/backend-storage/index.html
index b98b611..eec9ca3 100644
--- a/docs/main/latest/en/setup/backend/backend-storage/index.html
+++ b/docs/main/latest/en/setup/backend/backend-storage/index.html
@@ -22,7 +22,7 @@
 <title>Backend storage | Apache SkyWalking</title><meta property="og:title" content="Backend storage" />
 <meta property="og:description" content="Backend storage SkyWalking storage is pluggable, we have provided the following storage solutions, you could easily use one of them by specifying it as the selector in the application.yml:
 storage: selector: ${SW_STORAGE:elasticsearch7} Native supported storage
- H2 ElasticSearch 6, 7 MySQL TiDB InfluxDB  Redistribution version with supported storage.
+ H2 ElasticSearch 6, 7 MySQL TiDB InfluxDB PostgreSQL  Redistribution version with supported storage.
  ElasticSearch 5  H2 Active H2 as storage, set storage provider to H2 In-Memory Databases. Default in distribution package. Please read Database URL Overview in H2 official document, you could set the target to H2 in Embedded, Server and Mixed modes." />
 <meta property="og:type" content="article" />
 <meta property="og:url" content="/docs/main/latest/en/setup/backend/backend-storage/" />
@@ -30,10 +30,10 @@ storage: selector: ${SW_STORAGE:elasticsearch7} Native supported storage
 <meta itemprop="name" content="Backend storage">
 <meta itemprop="description" content="Backend storage SkyWalking storage is pluggable, we have provided the following storage solutions, you could easily use one of them by specifying it as the selector in the application.yml:
 storage: selector: ${SW_STORAGE:elasticsearch7} Native supported storage
- H2 ElasticSearch 6, 7 MySQL TiDB InfluxDB  Redistribution version with supported storage.
+ H2 ElasticSearch 6, 7 MySQL TiDB InfluxDB PostgreSQL  Redistribution version with supported storage.
  ElasticSearch 5  H2 Active H2 as storage, set storage provider to H2 In-Memory Databases. Default in distribution package. Please read Database URL Overview in H2 official document, you could set the target to H2 in Embedded, Server and Mixed modes.">
 
-<meta itemprop="wordCount" content="1433">
+<meta itemprop="wordCount" content="1510">
 
 
 
@@ -42,7 +42,7 @@ storage: selector: ${SW_STORAGE:elasticsearch7} Native supported storage
 <meta name="twitter:title" content="Backend storage"/>
 <meta name="twitter:description" content="Backend storage SkyWalking storage is pluggable, we have provided the following storage solutions, you could easily use one of them by specifying it as the selector in the application.yml:
 storage: selector: ${SW_STORAGE:elasticsearch7} Native supported storage
- H2 ElasticSearch 6, 7 MySQL TiDB InfluxDB  Redistribution version with supported storage.
+ H2 ElasticSearch 6, 7 MySQL TiDB InfluxDB PostgreSQL  Redistribution version with supported storage.
  ElasticSearch 5  H2 Active H2 as storage, set storage provider to H2 In-Memory Databases. Default in distribution package. Please read Database URL Overview in H2 official document, you could set the target to H2 in Embedded, Server and Mixed modes."/>
 
 <script type="application/javascript">
@@ -841,7 +841,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
@@ -891,6 +891,7 @@ if (!doNotTrack) {
     <li><a href="#mysql">MySQL</a></li>
     <li><a href="#tidb">TiDB</a></li>
     <li><a href="#influxdb">InfluxDB</a></li>
+    <li><a href="#postgresql">PostgreSQL</a></li>
     <li><a href="#elasticsearch-5">ElasticSearch 5</a></li>
     <li><a href="#more-storage-solution-extension">More storage solution extension</a></li>
   </ul>
@@ -959,6 +960,7 @@ use one of them by specifying it as the <code>selector</code> in the <code>appli
 <li>MySQL</li>
 <li>TiDB</li>
 <li>InfluxDB</li>
+<li>PostgreSQL</li>
 </ul>
 <p>Redistribution version with supported storage.</p>
 <ul>
@@ -1161,6 +1163,25 @@ These settings can refer to the configuration of <em>MySQL</em> above.</p>
     <span style="color:#f92672">duration</span>: <span style="color:#ae81ff">${SW_STORAGE_INFLUXDB_DURATION:1000}</span> <span style="color:#75715e"># the time to wait at most (milliseconds)</span>
     <span style="color:#f92672">fetchTaskLogMaxSize</span>: <span style="color:#ae81ff">${SW_STORAGE_INFLUXDB_FETCH_TASK_LOG_MAX_SIZE:5000}</span> <span style="color:#75715e"># the max number of fetch task log in a request</span>
 </code></pre></div><p>All connection related settings including link url, username and password are in <code>application.yml</code>. The Metadata storage provider settings can refer to the configuration of <strong>H2/MySQL</strong> above.</p>
+<h2 id="postgresql">PostgreSQL</h2>
+<p>PostgreSQL jdbc driver uses version 42.2.18, it supports PostgreSQL 8.2 or newer.
+Active PostgreSQL as storage, set storage provider to <strong>postgresql</strong>.</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml"><span style="color:#f92672">storage</span>:
+  <span style="color:#f92672">selector</span>: <span style="color:#ae81ff">${SW_STORAGE:postgresql}</span>
+  <span style="color:#f92672">postgresql</span>:
+    <span style="color:#f92672">properties</span>:
+      <span style="color:#f92672">jdbcUrl</span>: <span style="color:#ae81ff">${SW_JDBC_URL:&#34;jdbc:postgresql://localhost:5432/skywalking&#34;}</span>
+      <span style="color:#f92672">dataSource.user</span>: <span style="color:#ae81ff">${SW_DATA_SOURCE_USER:postgres}</span>
+      <span style="color:#f92672">dataSource.password</span>: <span style="color:#ae81ff">${SW_DATA_SOURCE_PASSWORD:123456}</span>
+      <span style="color:#f92672">dataSource.cachePrepStmts</span>: <span style="color:#ae81ff">${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}</span>
+      <span style="color:#f92672">dataSource.prepStmtCacheSize</span>: <span style="color:#ae81ff">${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}</span>
+      <span style="color:#f92672">dataSource.prepStmtCacheSqlLimit</span>: <span style="color:#ae81ff">${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}</span>
+      <span style="color:#f92672">dataSource.useServerPrepStmts</span>: <span style="color:#ae81ff">${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}</span>
+    <span style="color:#f92672">metadataQueryMaxSize</span>: <span style="color:#ae81ff">${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}</span>
+    <span style="color:#f92672">maxSizeOfArrayColumn</span>: <span style="color:#ae81ff">${SW_STORAGE_MAX_SIZE_OF_ARRAY_COLUMN:20}</span>
+    <span style="color:#f92672">numOfSearchableValuesPerTag</span>: <span style="color:#ae81ff">${SW_STORAGE_NUM_OF_SEARCHABLE_VALUES_PER_TAG:2}</span>
+</code></pre></div><p>All connection related settings including link url, username and password are in <code>application.yml</code>.
+Here are some of the settings, please follow <a href="https://github.com/brettwooldridge/HikariCP">HikariCP</a> connection pool document for all the settings.</p>
 <h2 id="elasticsearch-5">ElasticSearch 5</h2>
 <p>ElasticSearch 5 is incompatible with ElasticSearch 6 Java client jar, so it could not be included in native distribution.
 <a href="https://github.com/OpenSkywalking/SkyWalking-With-Es5x-Storage">OpenSkyWalking/SkyWalking-With-Es5x-Storage</a> repo includes the distribution version.</p>
diff --git a/docs/main/latest/en/setup/backend/backend-telemetry/index.html b/docs/main/latest/en/setup/backend/backend-telemetry/index.html
index f8d035b..f52012d 100644
--- a/docs/main/latest/en/setup/backend/backend-telemetry/index.html
+++ b/docs/main/latest/en/setup/backend/backend-telemetry/index.html
@@ -841,7 +841,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/backend-token-auth/index.html b/docs/main/latest/en/setup/backend/backend-token-auth/index.html
index a4bf21b..f8a472d 100644
--- a/docs/main/latest/en/setup/backend/backend-token-auth/index.html
+++ b/docs/main/latest/en/setup/backend/backend-token-auth/index.html
@@ -841,7 +841,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/backend-ui-setup/index.html b/docs/main/latest/en/setup/backend/backend-ui-setup/index.html
index 2f0c384..42236a9 100644
--- a/docs/main/latest/en/setup/backend/backend-ui-setup/index.html
+++ b/docs/main/latest/en/setup/backend/backend-ui-setup/index.html
@@ -841,7 +841,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/backend-zabbix/index.html b/docs/main/latest/en/setup/backend/backend-zabbix/index.html
index 689408f..fd52c57 100644
--- a/docs/main/latest/en/setup/backend/backend-zabbix/index.html
+++ b/docs/main/latest/en/setup/backend/backend-zabbix/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
@@ -948,7 +948,7 @@ from agents, as well as which rule files to load.</p>
 <p>OAP can load the configuration at bootstrap. If the new configuration is not well-formed, OAP fails to start up. The files
 are located at <code>$CLASSPATH/zabbix-rules</code>.</p>
 <p>The file is written in YAML format, defined by the scheme described below. Square brackets indicate that a parameter is optional.</p>
-<p>An example for zabbix agent configuration could be found <a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/test/e2e/e2e-test/docker/zabbix/zabbix_agentd.conf">here</a>.
+<p>An example for zabbix agent configuration could be found <a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/test/e2e/e2e-test/docker/zabbix/zabbix_agentd.conf">here</a>.
 You could find the Zabbix agent detail items from <a href="https://www.zabbix.com/documentation/current/manual/config/items/itemtypes/zabbix_agent">Zabbix Agent documentation</a>.</p>
 <h3 id="configuration-file-1">Configuration file</h3>
 <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml"><span style="color:#75715e"># insert metricPrefix into metric name:  &lt;metricPrefix&gt;_&lt;raw_metric_name&gt;</span>
diff --git a/docs/main/latest/en/setup/backend/configuration-vocabulary/index.html b/docs/main/latest/en/setup/backend/configuration-vocabulary/index.html
index 4a4ddbf..385266a 100644
--- a/docs/main/latest/en/setup/backend/configuration-vocabulary/index.html
+++ b/docs/main/latest/en/setup/backend/configuration-vocabulary/index.html
@@ -29,7 +29,7 @@
 <meta itemprop="description" content="Configuration Vocabulary Configuration Vocabulary lists all available configurations provided by application.yml.
    Module Provider Settings Value(s) and Explanation System Environment Variable¹ Default     core default role Option values, Mixed/Receiver/Aggregator. Receiver mode OAP open the service to the agents, analysis and aggregate the results and forward the results for distributed aggregation. Aggregator mode OAP receives data from Mixer and Receiver role OAP nodes, and do 2nd level aggregation.">
 
-<meta itemprop="wordCount" content="4047">
+<meta itemprop="wordCount" content="4182">
 
 
 
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
@@ -1966,6 +1966,46 @@ if (!doNotTrack) {
 </tr>
 <tr>
 <td>-</td>
+<td>postgresql</td>
+<td>-</td>
+<td>PostgreSQL storage.</td>
+<td>-</td>
+<td>-</td>
+</tr>
+<tr>
+<td>-</td>
+<td>-</td>
+<td>properties</td>
+<td>Hikari connection pool configurations</td>
+<td>-</td>
+<td>Listed in the <code>application.yaml</code>.</td>
+</tr>
+<tr>
+<td>-</td>
+<td>-</td>
+<td>metadataQueryMaxSize</td>
+<td>The max size of metadata per query.</td>
+<td>SW_STORAGE_MYSQL_QUERY_MAX_SIZE</td>
+<td>5000</td>
+</tr>
+<tr>
+<td>-</td>
+<td>-</td>
+<td>maxSizeOfArrayColumn</td>
+<td>Some entities, such as trace segment, include the logic column with multiple values. In the PostgreSQL, we use multiple physical columns to host the values, such as, Change column_a with values [1,2,3,4,5] to <code>column_a_0 = 1, column_a_1 = 2, column_a_2 = 3 , column_a_3 = 4, column_a_4 = 5</code></td>
+<td>SW_STORAGE_MAX_SIZE_OF_ARRAY_COLUMN</td>
+<td>20</td>
+</tr>
+<tr>
+<td>-</td>
+<td>-</td>
+<td>numOfSearchableValuesPerTag</td>
+<td>In a trace segment, it includes multiple spans with multiple tags. Different spans could have same tag keys, such as multiple HTTP exit spans all have their own <code>http.method</code> tag. This configuration set the limitation of max num of values for the same tag key.</td>
+<td>SW_STORAGE_NUM_OF_SEARCHABLE_VALUES_PER_TAG</td>
+<td>2</td>
+</tr>
+<tr>
+<td>-</td>
 <td>influxdb</td>
 <td>-</td>
 <td>InfluxDB storage.</td>
diff --git a/docs/main/latest/en/setup/backend/dynamic-config/index.html b/docs/main/latest/en/setup/backend/dynamic-config/index.html
index 6d55234..6bf2c51 100644
--- a/docs/main/latest/en/setup/backend/dynamic-config/index.html
+++ b/docs/main/latest/en/setup/backend/dynamic-config/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
@@ -999,7 +999,7 @@ At the same time, some of them are supporting dynamic settings from upstream man
     <span style="color:#f92672">period</span>: <span style="color:#ae81ff">${SW_DCS_PERIOD:20}</span>
   <span style="color:#75715e"># ... other implementations</span>
 </code></pre></div><h2 id="dynamic-configuration-service-dcs">Dynamic Configuration Service, DCS</h2>
-<p><a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/oap-server/server-configuration/grpc-configuration-sync/src/main/proto/configuration-service.proto">Dynamic Configuration Service</a>
+<p><a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/oap-server/server-configuration/grpc-configuration-sync/src/main/proto/configuration-service.proto">Dynamic Configuration Service</a>
 is a gRPC service, which requires the upstream system implemented.
 The SkyWalking OAP fetches the configuration from the implementation(any system), after you open this implementation like this.</p>
 <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml"><span style="color:#f92672">configuration</span>:
diff --git a/docs/main/latest/en/setup/backend/endpoint-grouping-rules/index.html b/docs/main/latest/en/setup/backend/endpoint-grouping-rules/index.html
index b330321..43d5adf 100644
--- a/docs/main/latest/en/setup/backend/endpoint-grouping-rules/index.html
+++ b/docs/main/latest/en/setup/backend/endpoint-grouping-rules/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/grpc-ssl/index.html b/docs/main/latest/en/setup/backend/grpc-ssl/index.html
index 9952dc8..8fe2aaa 100644
--- a/docs/main/latest/en/setup/backend/grpc-ssl/index.html
+++ b/docs/main/latest/en/setup/backend/grpc-ssl/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
@@ -929,7 +929,7 @@ exchanges. Now OAP supports to enable SSL transportation for gRPC receivers.</p>
 <h2 id="creating-ssltls-certificates">Creating SSL/TLS Certificates</h2>
 <p>It seems like step one is to generate certificates and key files for encrypting communication. I thought this would be
 fairly straightforward using <code>openssl</code> from the command line.</p>
-<p>Use this <a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/tools/tls/tls_key_generate.sh">script</a> if you are not familiar with how to generate key files.</p>
+<p>Use this <a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/tools/tls/tls_key_generate.sh">script</a> if you are not familiar with how to generate key files.</p>
 <p>We need below files:</p>
 <ul>
 <li><code>server.pem</code> a private RSA key to sign and authenticate the public key. It&rsquo;s either a PKCS#8(PEM) or PKCS#1(DER).</li>
diff --git a/docs/main/latest/en/setup/backend/metrics-exporter/index.html b/docs/main/latest/en/setup/backend/metrics-exporter/index.html
index c718c3e..d1ca985 100644
--- a/docs/main/latest/en/setup/backend/metrics-exporter/index.html
+++ b/docs/main/latest/en/setup/backend/metrics-exporter/index.html
@@ -841,7 +841,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/service-auto-grouping/index.html b/docs/main/latest/en/setup/backend/service-auto-grouping/index.html
index 1c6f162..62d48f3 100644
--- a/docs/main/latest/en/setup/backend/service-auto-grouping/index.html
+++ b/docs/main/latest/en/setup/backend/service-auto-grouping/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/slow-db-statement/index.html b/docs/main/latest/en/setup/backend/slow-db-statement/index.html
index d731286..03bad78 100644
--- a/docs/main/latest/en/setup/backend/slow-db-statement/index.html
+++ b/docs/main/latest/en/setup/backend/slow-db-statement/index.html
@@ -844,7 +844,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/spring-sleuth-setup/index.html b/docs/main/latest/en/setup/backend/spring-sleuth-setup/index.html
index 9de0cf4..7b5a02f 100644
--- a/docs/main/latest/en/setup/backend/spring-sleuth-setup/index.html
+++ b/docs/main/latest/en/setup/backend/spring-sleuth-setup/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
@@ -960,7 +960,7 @@ SkywalkingMeterRegistry <span style="color:#a6e22e">skywalkingMeterRegistry</spa
   <span style="color:#f92672">selector</span>: <span style="color:#ae81ff">${SW_RECEIVER_METER:default}</span>
   <span style="color:#f92672">default</span>:
 </code></pre></div><ol start="2">
-<li>Configure the meter config file, It already has the <a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/oap-server/server-bootstrap/src/main/resources/meter-analyzer-config/spring-sleuth.yaml">spring sleuth meter config</a>.
+<li>Configure the meter config file, It already has the <a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/oap-server/server-bootstrap/src/main/resources/meter-analyzer-config/spring-sleuth.yaml">spring sleuth meter config</a>.
 If you also has some customized meter at the agent side, please read <a href="../backend-meter#meters-configure">meter document</a> to configure meter.</li>
 </ol>
 <h2 id="add-ui-dashboard">Add UI dashboard</h2>
diff --git a/docs/main/latest/en/setup/backend/trace-sampling/index.html b/docs/main/latest/en/setup/backend/trace-sampling/index.html
index f0ee09d..aaf14c6 100644
--- a/docs/main/latest/en/setup/backend/trace-sampling/index.html
+++ b/docs/main/latest/en/setup/backend/trace-sampling/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/ttl/index.html b/docs/main/latest/en/setup/backend/ttl/index.html
index cb11acb..c0d72ae 100644
--- a/docs/main/latest/en/setup/backend/ttl/index.html
+++ b/docs/main/latest/en/setup/backend/ttl/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/ui-setup/index.html b/docs/main/latest/en/setup/backend/ui-setup/index.html
index 0d459ce..68b2b05 100644
--- a/docs/main/latest/en/setup/backend/ui-setup/index.html
+++ b/docs/main/latest/en/setup/backend/ui-setup/index.html
@@ -841,7 +841,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/backend/uninstrumented-gateways/index.html b/docs/main/latest/en/setup/backend/uninstrumented-gateways/index.html
index 6188c13..a0dd7bd 100644
--- a/docs/main/latest/en/setup/backend/uninstrumented-gateways/index.html
+++ b/docs/main/latest/en/setup/backend/uninstrumented-gateways/index.html
@@ -832,7 +832,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/envoy/als_setting/index.html b/docs/main/latest/en/setup/envoy/als_setting/index.html
index ef2d165..6bb07d3 100644
--- a/docs/main/latest/en/setup/envoy/als_setting/index.html
+++ b/docs/main/latest/en/setup/envoy/als_setting/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/envoy/examples/metrics/readme/index.html b/docs/main/latest/en/setup/envoy/examples/metrics/readme/index.html
index fbc0775..ff0c312 100644
--- a/docs/main/latest/en/setup/envoy/examples/metrics/readme/index.html
+++ b/docs/main/latest/en/setup/envoy/examples/metrics/readme/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/envoy/metrics_service_setting/index.html b/docs/main/latest/en/setup/envoy/metrics_service_setting/index.html
index 9e4b3b3..3165f68 100644
--- a/docs/main/latest/en/setup/envoy/metrics_service_setting/index.html
+++ b/docs/main/latest/en/setup/envoy/metrics_service_setting/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/istio/readme/index.html b/docs/main/latest/en/setup/istio/readme/index.html
index 212b463..21ac569 100644
--- a/docs/main/latest/en/setup/istio/readme/index.html
+++ b/docs/main/latest/en/setup/istio/readme/index.html
@@ -841,7 +841,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/readme/index.html b/docs/main/latest/en/setup/readme/index.html
index 26fb804..a20f41d 100644
--- a/docs/main/latest/en/setup/readme/index.html
+++ b/docs/main/latest/en/setup/readme/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
@@ -1004,7 +1004,7 @@ for the Browser or JavaScript based mobile app.</p>
 <h2 id="setup-backend">Setup backend</h2>
 <p>Follow <a href="../backend/backend-ui-setup">backend and UI setup document</a> to understand how the backend and UI configuration works. Different scenarios and advanced features are also explained.</p>
 <h2 id="changes-log">Changes log</h2>
-<p>Backend, UI and Java agent changes are available <a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/changes">here</a>.</p>
+<p>Backend, UI and Java agent changes are available <a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/changes">here</a>.</p>
 
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/agent-optional-plugins/kotlin-coroutine-plugin/index.html b/docs/main/latest/en/setup/service-agent/java-agent/agent-optional-plugins/kotlin-coroutine-plugin/index.html
index 43aedb6..936d604 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/agent-optional-plugins/kotlin-coroutine-plugin/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/agent-optional-plugins/kotlin-coroutine-plugin/index.html
@@ -841,7 +841,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/agent-optional-plugins/oracle-resin-plugins/index.html b/docs/main/latest/en/setup/service-agent/java-agent/agent-optional-plugins/oracle-resin-plugins/index.html
index ee295fe..9470dc3 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/agent-optional-plugins/oracle-resin-plugins/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/agent-optional-plugins/oracle-resin-plugins/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/agent-optional-plugins/spring-annotation-plugin/index.html b/docs/main/latest/en/setup/service-agent/java-agent/agent-optional-plugins/spring-annotation-plugin/index.html
index 69674be..0ff384c 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/agent-optional-plugins/spring-annotation-plugin/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/agent-optional-plugins/spring-annotation-plugin/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/agent-optional-plugins/trace-ignore-plugin/index.html b/docs/main/latest/en/setup/service-agent/java-agent/agent-optional-plugins/trace-ignore-plugin/index.html
index c9e38c8..de98bba 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/agent-optional-plugins/trace-ignore-plugin/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/agent-optional-plugins/trace-ignore-plugin/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-log4j-1.x/index.html b/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-log4j-1.x/index.html
index 771a7a4..970231d 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-log4j-1.x/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-log4j-1.x/index.html
@@ -832,7 +832,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-log4j-2.x/index.html b/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-log4j-2.x/index.html
index 5969a3d..6b263f2 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-log4j-2.x/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-log4j-2.x/index.html
@@ -832,7 +832,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-logback-1.x/index.html b/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-logback-1.x/index.html
index feee2e0..5d7b8a3 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-logback-1.x/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-logback-1.x/index.html
@@ -832,7 +832,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-meter/index.html b/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-meter/index.html
index 60fa2d2..ea59339 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-meter/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-meter/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-micrometer/index.html b/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-micrometer/index.html
index a2cee20..0477dcf 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-micrometer/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-micrometer/index.html
@@ -832,7 +832,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-trace-cross-thread/index.html b/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-trace-cross-thread/index.html
index 8892efd..9ae38c5 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-trace-cross-thread/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-trace-cross-thread/index.html
@@ -832,7 +832,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-trace/index.html b/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-trace/index.html
index 3265850..2e6e19f 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-trace/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/application-toolkit-trace/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/configuration-discovery/index.html b/docs/main/latest/en/setup/service-agent/java-agent/configuration-discovery/index.html
index 4b655f6..4308165 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/configuration-discovery/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/configuration-discovery/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/customize-enhance-trace/index.html b/docs/main/latest/en/setup/service-agent/java-agent/customize-enhance-trace/index.html
index 8a53ad0..b02d2c4 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/customize-enhance-trace/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/customize-enhance-trace/index.html
@@ -844,7 +844,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/how-to-disable-plugin/index.html b/docs/main/latest/en/setup/service-agent/java-agent/how-to-disable-plugin/index.html
index 198ec77..1d5208c 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/how-to-disable-plugin/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/how-to-disable-plugin/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/how-to-enable-kafka-reporter/index.html b/docs/main/latest/en/setup/service-agent/java-agent/how-to-enable-kafka-reporter/index.html
index 17dc5f8..bdf05a0 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/how-to-enable-kafka-reporter/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/how-to-enable-kafka-reporter/index.html
@@ -838,7 +838,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/how-to-tolerate-exceptions/index.html b/docs/main/latest/en/setup/service-agent/java-agent/how-to-tolerate-exceptions/index.html
index 475787a..6919ba6 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/how-to-tolerate-exceptions/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/how-to-tolerate-exceptions/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/namespace/index.html b/docs/main/latest/en/setup/service-agent/java-agent/namespace/index.html
index f5aea3e..ac84ede 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/namespace/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/namespace/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/opentracing/index.html b/docs/main/latest/en/setup/service-agent/java-agent/opentracing/index.html
index 6e27b9f..aeb8302 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/opentracing/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/opentracing/index.html
@@ -832,7 +832,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/plugin-list/index.html b/docs/main/latest/en/setup/service-agent/java-agent/plugin-list/index.html
index ab1d76f..b1bb0a8 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/plugin-list/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/plugin-list/index.html
@@ -832,7 +832,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/readme/index.html b/docs/main/latest/en/setup/service-agent/java-agent/readme/index.html
index a1ea10f..0415bbf 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/readme/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/readme/index.html
@@ -832,7 +832,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/setting-override/index.html b/docs/main/latest/en/setup/service-agent/java-agent/setting-override/index.html
index a47d854..2982a0c 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/setting-override/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/setting-override/index.html
@@ -847,7 +847,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/specified-agent-config/index.html b/docs/main/latest/en/setup/service-agent/java-agent/specified-agent-config/index.html
index e9d3355..b72c1c2 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/specified-agent-config/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/specified-agent-config/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/supported-list/index.html b/docs/main/latest/en/setup/service-agent/java-agent/supported-list/index.html
index f013b31..b896a84 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/supported-list/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/supported-list/index.html
@@ -835,7 +835,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/tls/index.html b/docs/main/latest/en/setup/service-agent/java-agent/tls/index.html
index 879631f..c9536d4 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/tls/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/tls/index.html
@@ -844,7 +844,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
@@ -949,7 +949,7 @@ at the same time, the SkyWalking backend is in another region (VPC).</p>
 <h2 id="authentication-mode">Authentication Mode</h2>
 <p>Only support <strong>no mutual auth</strong>.</p>
 <ul>
-<li>Use this <a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/tools/tls/tls_key_generate.sh">script</a> if you are not familiar with how to generate key files.</li>
+<li>Use this <a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/tools/tls/tls_key_generate.sh">script</a> if you are not familiar with how to generate key files.</li>
 <li>Find <code>ca.crt</code>, and use it at client side</li>
 <li>Find <code>server.crt</code> ,<code>server.pem</code> and <code>ca.crt</code>. Use them at server side. Please refer to <a href="../../../backend/grpc-ssl">gRPC SSL</a>
 for more details.</li>
diff --git a/docs/main/latest/en/setup/service-agent/java-agent/token-auth/index.html b/docs/main/latest/en/setup/service-agent/java-agent/token-auth/index.html
index e7e39bc..77801d2 100644
--- a/docs/main/latest/en/setup/service-agent/java-agent/token-auth/index.html
+++ b/docs/main/latest/en/setup/service-agent/java-agent/token-auth/index.html
@@ -844,7 +844,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/en/ui/readme/index.html b/docs/main/latest/en/ui/readme/index.html
index 2dd5208..2fffe2e 100644
--- a/docs/main/latest/en/ui/readme/index.html
+++ b/docs/main/latest/en/ui/readme/index.html
@@ -844,7 +844,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
diff --git a/docs/main/latest/readme/index.html b/docs/main/latest/readme/index.html
index 8010b84..9b609c5 100644
--- a/docs/main/latest/readme/index.html
+++ b/docs/main/latest/readme/index.html
@@ -841,7 +841,7 @@ if (!doNotTrack) {
 
     
 </ul>
-                    <div class="commit-id">Commit Id: 6d92bc6</div>
+                    <div class="commit-id">Commit Id: 9de9311</div>
                     
 
 
@@ -951,7 +951,7 @@ if (!doNotTrack) {
 <p>In addition, you might find these links interesting:</p>
 <ul>
 <li>
-<p>The latest and old releases are all available at <a href="http://skywalking.apache.org/downloads/">Apache SkyWalking release page</a>. The change logs are <a href="https://github.com/apache/skywalking/tree/6d92bc66ddded41cff37efc8155e23b17d814dcb/changes">here</a>.</p>
+<p>The latest and old releases are all available at <a href="http://skywalking.apache.org/downloads/">Apache SkyWalking release page</a>. The change logs are <a href="https://github.com/apache/skywalking/tree/9de93119e2e616e419c540a17de00e6f1719c2b2/changes">here</a>.</p>
 </li>
 <li>
 <p><a href="https://cwiki.apache.org/confluence/display/SKYWALKING/Home">SkyWalking WIKI</a> hosts the context of some changes and events.</p>
diff --git a/false/index.html b/false/index.html
index c9a3609..73f2340 100644
--- a/false/index.html
+++ b/false/index.html
@@ -238,7 +238,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/index.json b/index.json
index 0ff2d84..3e66606 100644
--- a/index.json
+++ b/index.json
@@ -1 +1 @@
-[{"body":"","excerpt":"","ref":"/tags/agent/","title":"Agent"},{"body":"  #td-cover-block-0 { background-image: url(/home_background_hu0af614851632d061c3c80a153395694b_2812588_960x540_fill_q75_catmullrom_top.jpg); } @media only screen and (min-width: 1200px) { #td-cover-block-0 { background-image: url(/home_background_hu0af614851632d061c3c80a153395694b_2812588_1920x1080_fill_q75_catmullrom_top.jpg); } }  Apache SkyWalking Quick Start  GitHub  Application performance monitor tool for dist [...]
\ No newline at end of file
+[{"body":"  #td-cover-block-0 { background-image: url(/home_background_hu0af614851632d061c3c80a153395694b_2812588_960x540_fill_q75_catmullrom_top.jpg); } @media only screen and (min-width: 1200px) { #td-cover-block-0 { background-image: url(/home_background_hu0af614851632d061c3c80a153395694b_2812588_1920x1080_fill_q75_catmullrom_top.jpg); } }  Apache SkyWalking Quick Start  GitHub  Application performance monitor tool for distributed systems, especially designed for microservices, cloud  [...]
\ No newline at end of file
diff --git a/index.xml b/index.xml
index da0b351..6e671b4 100644
--- a/index.xml
+++ b/index.xml
@@ -4,7 +4,7 @@
     <link>/</link>
     <description>Recent content on Apache SkyWalking</description>
     <generator>Hugo -- gohugo.io</generator>
-    <lastBuildDate>Tue, 09 Feb 2021 00:00:00 +0000</lastBuildDate>
+    <lastBuildDate>Sun, 21 Feb 2021 00:00:00 +0000</lastBuildDate>
     
 	  <atom:link href="/index.xml" rel="self" type="application/rss+xml" />
     
@@ -14,6 +14,165 @@
     
     
     <item>
+      <title>Blog: Observe VM Service Meshes with Apache SkyWalking and the Envoy Access Log Service</title>
+      <link>/blog/obs-service-mesh-vm-with-sw-and-als/</link>
+      <pubDate>Sun, 21 Feb 2021 00:00:00 +0000</pubDate>
+      
+      <guid>/blog/obs-service-mesh-vm-with-sw-and-als/</guid>
+      <description>
+        
+        
+        &lt;p&gt;&lt;img src=&#34;stone-arch.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;p&gt;Origin: &lt;a href=&#34;https://thenewstack.io/observe-virtual-machine-service-meshes-with-apache-skywalking-and-the-envoy-access-log-service&#34;&gt;Observe VM Service Meshes with Apache SkyWalking and the Envoy Access Log Service - The New Stack&lt;/a&gt;&lt;/p&gt;
+&lt;/blockquote&gt;
+&lt;p&gt;&lt;a href=&#34;https://github.com/apache/skywalking&#34;&gt;Apache SkyWalking&lt;/a&gt;: an APM (application performance monitor) system, especially
+designed for microservices, cloud native, and container-based (Docker, Kubernetes, Mesos) architectures.&lt;/p&gt;
+&lt;p&gt;&lt;a href=&#34;https://www.envoyproxy.io/docs/envoy/latest/api-v2/service/accesslog/v2/als.proto&#34;&gt;Envoy Access Log Service&lt;/a&gt;: Access
+Log Service (ALS) is an Envoy extension that emits detailed access logs of all requests going through Envoy.&lt;/p&gt;
+&lt;h2 id=&#34;background&#34;&gt;Background&lt;/h2&gt;
+&lt;p&gt;In the &lt;a href=&#34;/blog/obs-service-mesh-with-sw-and-als&#34;&gt;previous post&lt;/a&gt;, we talked about the observability of service mesh under
+Kubernetes environment, and applied it to the bookinfo application in practice. We also mentioned that, in order to map
+the IP addresses into services, SkyWalking needs access to the service metadata from a Kubernetes cluster, which is not
+available for services deployed in virtual machines (VMs). In this post, we will introduce a new analyzer in SkyWalking
+that leverages Envoy’s metadata exchange mechanism to decouple with Kubernetes. The analyzer is designed to work in
+Kubernetes environments, VM environments, and hybrid environments. If there are virtual machines in your service mesh,
+you might want to try out this new analyzer for better observability, which we will demonstrate in this tutorial.&lt;/p&gt;
+&lt;h2 id=&#34;how-it-works&#34;&gt;How it works&lt;/h2&gt;
+&lt;p&gt;The mechanism of how the analyzer works is the same as what we discussed in
+the &lt;a href=&#34;/blog/obs-service-mesh-with-sw-and-als&#34;&gt;previous post&lt;/a&gt;. What makes VMs different from Kubernetes is that, for VM
+services, there are no places where we can fetch the metadata to map the IP addresses into services.&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
+&lt;p&gt;The basic idea we present in this article is to carry the metadata along with Envoy’s access logs, which is called
+metadata-exchange mechanism in Envoy. When Istio pilot-agent starts an Envoy proxy as a sidecar of a service, it
+collects the metadata of that service from the Kubernetes platform, or a file on the VM where that service is deployed,
+and injects the metadata into the bootstrap configuration of Envoy. Envoy will carry the metadata transparently when
+emitting access logs to the SkyWalking receiver.&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image2.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
+&lt;p&gt;But how does Envoy compose a piece of a complete access log that involves the client side and server side? When a
+request goes out from Envoy, a plugin of istio-proxy named &amp;ldquo;metadata-exchange&amp;rdquo; injects the metadata into the http
+headers (with a prefix like &lt;code&gt;x-envoy-downstream-&lt;/code&gt;), and the metadata is propagated to the server side. The Envoy sidecar
+of the server side receives the request and parses the headers into metadata, and puts the metadata into the access log,
+keyed by &lt;code&gt;wasm.downstream_peer&lt;/code&gt;. The server side Envoy also puts its own metadata into the access log keyed
+by &lt;code&gt;wasm.upstream_peer.&lt;/code&gt; Hence the two sides of a single request are completed.&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image3.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
+&lt;p&gt;With the metadata-exchange mechanism, we can use the metadata directly without any extra query.&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image4.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
+&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
+&lt;p&gt;In this tutorial, we will use another demo
+application &lt;a href=&#34;http://github.com/GoogleCloudPlatform/microservices-demo&#34;&gt;Online Boutique&lt;/a&gt; that consists of 10+ services so
+that we can deploy some of them in VMs and make them communicate with other services deployed in Kubernetes.&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image5.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
+&lt;p&gt;Topology of Online Boutique In order to cover as many cases as possible, we will deploy &lt;code&gt;CheckoutService&lt;/code&gt;
+and &lt;code&gt;PaymentService&lt;/code&gt; on VM and all the other services on Kubernetes, so that we can cover the cases like Kubernetes →
+VM (e.g. &lt;code&gt;Frontend&lt;/code&gt; → &lt;code&gt;CheckoutService&lt;/code&gt;), VM → Kubernetes (e.g. &lt;code&gt;CheckoutService&lt;/code&gt; → &lt;code&gt;ShippingService&lt;/code&gt;), and VM → VM (
+e.g. &lt;code&gt;CheckoutService&lt;/code&gt; → &lt;code&gt;PaymentService&lt;/code&gt;).&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: All the commands used in this tutorial are accessible
+on &lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts&#34;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
+&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;git clone https://github.com/SkyAPMTest/sw-als-vm-demo-scripts
+cd sw-als-vm-demo-scripts
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Make sure to init the &lt;code&gt;gcloud&lt;/code&gt; SDK properly before moving on. Modify the &lt;code&gt;GCP_PROJECT&lt;/code&gt; in file &lt;code&gt;env.sh&lt;/code&gt; to your own
+project name. Most of the other variables should be OK to work if you keep them intact. If you would like to
+use &lt;code&gt;ISTIO_VERSION&lt;/code&gt; &amp;gt;/= 1.8.0, please make sure &lt;a href=&#34;https://github.com/istio/istio/pull/28956&#34;&gt;this patch&lt;/a&gt; is included.&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;
+&lt;p&gt;Prepare Kubernetes cluster and VM instances
+&lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/00-create-cluster-and-vms.sh&#34;&gt;&lt;code&gt;00-create-cluster-and-vms.sh&lt;/code&gt;&lt;/a&gt;
+creates a new GKE cluster and 2 VM instances that will be used through the entire tutorial, and sets up some necessary
+firewall rules for them to communicate with each other.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Install Istio and SkyWalking
+&lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/01a-install-istio.sh&#34;&gt;&lt;code&gt;01a-install-istio.sh&lt;/code&gt;&lt;/a&gt;
+installs Istio Operator with spec &lt;code&gt;resources/vmintegration.yaml&lt;/code&gt;. In the YAML file, we enable the &lt;code&gt;meshExpansion&lt;/code&gt; that
+supports VM in mesh. We also enable the Envoy access log service and specify the
+address &lt;code&gt;skywalking-oap.istio-system.svc.cluster.local:11800&lt;/code&gt; to which Envoy emits the access logs.
+&lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/01b-install-skywalking.sh&#34;&gt;&lt;code&gt;01b-install-skywalking.sh&lt;/code&gt;&lt;/a&gt;
+installs Apache SkyWalking and sets the analyzer to &lt;code&gt;mx-mesh&lt;/code&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Create files to initialize the VM
+&lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/02-create-files-to-transfer-to-vm.sh&#34;&gt;&lt;code&gt;02-create-files-to-transfer-to-vm.sh&lt;/code&gt;&lt;/a&gt;
+creates necessary files that will be used to initialize the VMs.
+&lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/03-copy-work-files-to-vm.sh&#34;&gt;&lt;code&gt;03-copy-work-files-to-vm.sh&lt;/code&gt;&lt;/a&gt;
+securely transfers the generated files to the VMs with &lt;code&gt;gcloud scp&lt;/code&gt; command. Now use &lt;code&gt;./ssh.sh checkoutservice&lt;/code&gt;
+and &lt;code&gt;./ssh.sh paymentservice&lt;/code&gt; to log into the two VMs respectively, and &lt;code&gt;cd&lt;/code&gt; to the &lt;code&gt;~/work&lt;/code&gt; directory,
+execute &lt;code&gt;./prep-checkoutservice.sh&lt;/code&gt; on &lt;code&gt;checkoutservice&lt;/code&gt; VM instance and &lt;code&gt;./prep-paymentservice.sh&lt;/code&gt;
+on &lt;code&gt;paymentservice&lt;/code&gt; VM instance. The Istio sidecar should be installed and started properly. To verify that,
+use &lt;code&gt;tail -f /var/logs/istio/istio.log&lt;/code&gt; to check the Istio logs. The output should be something like:&lt;/p&gt;
+&lt;pre&gt;&lt;code&gt;2020-12-12T08:07:07.348329Z	info	sds	resource:default new connection
+2020-12-12T08:07:07.348401Z	info	sds	Skipping waiting for gateway secret
+2020-12-12T08:07:07.348401Z	info	sds	Skipping waiting for gateway secret
+2020-12-12T08:07:07.568676Z	info	cache	Root cert has changed, start rotating root cert for SDS clients
+2020-12-12T08:07:07.568718Z	info	cache	GenerateSecret default
+2020-12-12T08:07:07.569398Z	info	sds	resource:default pushed key/cert pair to proxy
+2020-12-12T08:07:07.949156Z	info	cache	Loaded root cert from certificate ROOTCA
+2020-12-12T08:07:07.949348Z	info	sds	resource:ROOTCA pushed root cert to proxy
+2020-12-12T20:12:07.384782Z	info	sds	resource:default pushed key/cert pair to proxy
+2020-12-12T20:12:07.384832Z	info	sds	Dynamic push for secret default
+&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The dnsmasq configuration &lt;code&gt;address=/.svc.cluster.local/{ISTIO_SERVICE_IP_STUB}&lt;/code&gt; also resolves the domain names ended
+with &lt;code&gt;.svc.cluster.local&lt;/code&gt; to Istio service IP, so that you are able to access the Kubernetes services in the VM by
+fully qualified domain name (FQDN) such as &lt;code&gt;httpbin.default.svc.cluster.local&lt;/code&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Deploy demo application Because we want to deploy &lt;code&gt;CheckoutService&lt;/code&gt; and &lt;code&gt;PaymentService&lt;/code&gt; manually on
+VM, &lt;code&gt;resources/google-demo.yaml&lt;/code&gt; removes the two services
+from &lt;a href=&#34;https://github.com/GoogleCloudPlatform/microservices-demo/blob/master/release/kubernetes-manifests.yaml&#34;&gt;the original YAML&lt;/a&gt;
+.
+&lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/04a-deploy-demo-app.sh&#34;&gt;&lt;code&gt;04a-deploy-demo-app.sh&lt;/code&gt;&lt;/a&gt;
+deploys the other services on Kubernetes. Then log into the 2 VMs, run &lt;code&gt;~/work/deploy-checkoutservice.sh&lt;/code&gt;
+and &lt;code&gt;~/work/deploy-paymentservice.sh&lt;/code&gt; respectively to deploy &lt;code&gt;CheckoutService&lt;/code&gt; and &lt;code&gt;PaymentService&lt;/code&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Register VMs to Istio Services on VMs can access the services on Kubernetes by FQDN, but that’s not the case when the
+Kubernetes services want to talk to the VM services. The mesh has no idea where to forward the requests such
+as &lt;code&gt;checkoutservice.default.svc.cluster.local&lt;/code&gt; because &lt;code&gt;checkoutservice&lt;/code&gt; is isolated in the VM. Therefore, we need to
+register the services to the
+mesh. &lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/04b-register-vm-with-istio.sh&#34;&gt;&lt;code&gt;04b-register-vm-with-istio.sh&lt;/code&gt;&lt;/a&gt;
+registers the VM services to the mesh by creating a &amp;ldquo;dummy&amp;rdquo; service without running Pods, and a &lt;code&gt;WorkloadEntry&lt;/code&gt; to
+bridge the &amp;ldquo;dummy&amp;rdquo; service with the VM service.&lt;/p&gt;
+&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h2 id=&#34;done&#34;&gt;Done!&lt;/h2&gt;
+&lt;p&gt;The demo application contains a &lt;code&gt;load generator&lt;/code&gt; service that performs requests repeatedly. We only need to wait a few
+seconds, and then open the SkyWalking web UI to check the results.&lt;/p&gt;
+&lt;pre&gt;&lt;code&gt;export POD_NAME=$(kubectl get pods --namespace istio-system -l &amp;quot;app=skywalking,release=skywalking,component=ui&amp;quot; -o jsonpath=&amp;quot;{.items[0].metadata.name}&amp;quot;)
+echo &amp;quot;Visit http://127.0.0.1:8080 to use your application&amp;quot;
+kubectl port-forward $POD_NAME 8080:8080 --namespace istio-system
+&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Navigate the browser to http://localhost:8080 . The metrics, topology should be there.&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image6.png&#34; alt=&#34;Topology&#34;&gt;&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image7.png&#34; alt=&#34;Global metrics&#34;&gt;&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image8.png&#34; alt=&#34;Metrics of CheckoutService&#34;&gt;&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image9.png&#34; alt=&#34;Metrics of PaymentService&#34;&gt;&lt;/p&gt;
+&lt;h2 id=&#34;troubleshooting&#34;&gt;Troubleshooting&lt;/h2&gt;
+&lt;p&gt;If you face any trouble when walking through the steps, here are some common problems and possible solutions:&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;
+&lt;p&gt;VM service cannot access Kubernetes services? It’s likely the DNS on the VM doesn’t correctly resolve the fully
+qualified domain names. Try to verify that with &lt;code&gt;nslookup istiod.istio-system.svc.cluster.local&lt;/code&gt;. If it doesn’t
+resolve to the Kubernetes CIDR address, recheck the step in &lt;code&gt;prep-checkoutservice.sh&lt;/code&gt; and &lt;code&gt;prep-paymentservice.sh&lt;/code&gt;. If
+the DNS works correctly, try to verify that Envoy has fetched the upstream clusters from the control plane
+with &lt;code&gt;curl http://localhost:15000/clusters&lt;/code&gt;. If it doesn’t contain the target service,
+recheck &lt;code&gt;prep-checkoutservice.sh&lt;/code&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Services are normal but nothing on SkyWalking WebUI? Check the SkyWalking OAP logs
+via &lt;code&gt;kubectl -n istio-system logs -f $(kubectl get pod -A -l &amp;quot;app=skywalking,release=skywalking,component=oap&amp;quot; -o name)&lt;/code&gt;
+and WebUI logs
+via &lt;code&gt;kubectl -n istio-system logs -f $(kubectl get pod -A -l &amp;quot;app=skywalking,release=skywalking,component=ui&amp;quot; -o name)&lt;/code&gt;
+to see whether there are any error logs . Also, make sure the time zone at the bottom-right of the browser is set
+to &lt;code&gt;UTC +0&lt;/code&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h2 id=&#34;additional-resources&#34;&gt;Additional Resources&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;&lt;a href=&#34;/blog/obs-service-mesh-with-sw-and-als&#34;&gt;Observe a Service Mesh with Envoy ALS&lt;/a&gt;.&lt;/li&gt;
+&lt;/ul&gt;
+
+      </description>
+    </item>
+    
+    <item>
       <title>Blog: Apache SkyWalking: How to propagate context between threads when using ThreadPoolExecutor</title>
       <link>/blog/2021-02-09-skywalking-trace-threadpool/</link>
       <pubDate>Tue, 09 Feb 2021 00:00:00 +0000</pubDate>
diff --git a/sitemap.xml b/sitemap.xml
index 4efdee8..3f0163d 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -3,49 +3,61 @@
   xmlns:xhtml="http://www.w3.org/1999/xhtml">
   
   <url>
-    <loc>/tags/agent/</loc>
+    <loc>/</loc>
     <changefreq>daily</changefreq>
     <priority>0.5</priority>
   </url>
   
   <url>
-    <loc>/</loc>
+    <loc>/blog/</loc>
     <changefreq>daily</changefreq>
     <priority>0.5</priority>
   </url>
   
   <url>
-    <loc>/blog/2021-02-09-skywalking-trace-threadpool/</loc>
+    <loc>/blog/obs-service-mesh-vm-with-sw-and-als/</loc>
     <changefreq>daily</changefreq>
     <priority>0.5</priority>
   </url>
   
   <url>
-    <loc>/blog/</loc>
+    <loc>/tags/service-mesh/</loc>
     <changefreq>daily</changefreq>
     <priority>0.5</priority>
   </url>
   
   <url>
-    <loc>/events/</loc>
+    <loc>/tags/</loc>
     <changefreq>daily</changefreq>
     <priority>0.5</priority>
   </url>
   
   <url>
-    <loc>/tags/java/</loc>
+    <loc>/tags/agent/</loc>
     <changefreq>daily</changefreq>
     <priority>0.5</priority>
   </url>
   
   <url>
-    <loc>/events/release-apache-skywalking-cli-0-6-0/</loc>
+    <loc>/blog/2021-02-09-skywalking-trace-threadpool/</loc>
     <changefreq>daily</changefreq>
     <priority>0.5</priority>
   </url>
   
   <url>
-    <loc>/tags/</loc>
+    <loc>/events/</loc>
+    <changefreq>daily</changefreq>
+    <priority>0.5</priority>
+  </url>
+  
+  <url>
+    <loc>/tags/java/</loc>
+    <changefreq>daily</changefreq>
+    <priority>0.5</priority>
+  </url>
+  
+  <url>
+    <loc>/events/release-apache-skywalking-cli-0-6-0/</loc>
     <changefreq>daily</changefreq>
     <priority>0.5</priority>
   </url>
@@ -249,12 +261,6 @@
   </url>
   
   <url>
-    <loc>/tags/service-mesh/</loc>
-    <changefreq>daily</changefreq>
-    <priority>0.5</priority>
-  </url>
-  
-  <url>
     <loc>/zh/observe-service-mesh-with-skywalking-and-envoy-access-log-service/</loc>
     <changefreq>daily</changefreq>
     <priority>0.5</priority>
diff --git a/tags/agent/index.html b/tags/agent/index.html
index 760307e..76753bb 100644
--- a/tags/agent/index.html
+++ b/tags/agent/index.html
@@ -361,7 +361,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/browser/index.html b/tags/browser/index.html
index c2c2e02..193000d 100644
--- a/tags/browser/index.html
+++ b/tags/browser/index.html
@@ -289,7 +289,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/conference/index.html b/tags/conference/index.html
index 950df22..fa68f78 100644
--- a/tags/conference/index.html
+++ b/tags/conference/index.html
@@ -397,7 +397,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/design/index.html b/tags/design/index.html
index 02624f8..37fa81f 100644
--- a/tags/design/index.html
+++ b/tags/design/index.html
@@ -289,7 +289,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/dotnetcore/index.html b/tags/dotnetcore/index.html
index 991101e..f2f7957 100644
--- a/tags/dotnetcore/index.html
+++ b/tags/dotnetcore/index.html
@@ -289,7 +289,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/index.html b/tags/index.html
index accfe8d..8be7479 100644
--- a/tags/index.html
+++ b/tags/index.html
@@ -238,7 +238,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/index.xml b/tags/index.xml
index 1978c7f..caeba62 100644
--- a/tags/index.xml
+++ b/tags/index.xml
@@ -4,7 +4,7 @@
     <link>/tags/</link>
     <description>Recent content in Tags on Apache SkyWalking</description>
     <generator>Hugo -- gohugo.io</generator>
-    <lastBuildDate>Tue, 09 Feb 2021 00:00:00 +0000</lastBuildDate>
+    <lastBuildDate>Sun, 21 Feb 2021 00:00:00 +0000</lastBuildDate>
     
 	  <atom:link href="/tags/index.xml" rel="self" type="application/rss+xml" />
     
diff --git a/tags/infrastructure-monitoring/index.html b/tags/infrastructure-monitoring/index.html
index 5fd161f..ccaa0e1 100644
--- a/tags/infrastructure-monitoring/index.html
+++ b/tags/infrastructure-monitoring/index.html
@@ -287,7 +287,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/java/index.html b/tags/java/index.html
index 7f6405b..60bd987 100644
--- a/tags/java/index.html
+++ b/tags/java/index.html
@@ -328,7 +328,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/kafka/index.html b/tags/kafka/index.html
index 286ffce..9de2934 100644
--- a/tags/kafka/index.html
+++ b/tags/kafka/index.html
@@ -291,7 +291,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/logs/index.html b/tags/logs/index.html
index 5c770c3..75394fe 100644
--- a/tags/logs/index.html
+++ b/tags/logs/index.html
@@ -289,7 +289,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/performance/index.html b/tags/performance/index.html
index 14504bf..0af4b15 100644
--- a/tags/performance/index.html
+++ b/tags/performance/index.html
@@ -289,7 +289,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/profiling/index.html b/tags/profiling/index.html
index dc33e6c..67f4a4d 100644
--- a/tags/profiling/index.html
+++ b/tags/profiling/index.html
@@ -293,7 +293,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/release-blog/index.html b/tags/release-blog/index.html
index fa477a0..04ab0d1 100644
--- a/tags/release-blog/index.html
+++ b/tags/release-blog/index.html
@@ -384,7 +384,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/satellite/index.html b/tags/satellite/index.html
index 2144600..7dcc5a1 100644
--- a/tags/satellite/index.html
+++ b/tags/satellite/index.html
@@ -289,7 +289,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/service-mesh/index.html b/tags/service-mesh/index.html
index c8e1b09..8013b51 100644
--- a/tags/service-mesh/index.html
+++ b/tags/service-mesh/index.html
@@ -168,6 +168,37 @@ if (!doNotTrack) {
 <div class="row">
     <div class="col-12">
         
+        <h2>Posts in 2021</h2>
+
+        <ul class="list-unstyled mt-4">
+            
+            <li class="media mb-4">
+                <div class="media-body">
+                    <h5 class="mt-0 mb-1"><a href="/blog/obs-service-mesh-vm-with-sw-and-als/">Observe VM Service Meshes with Apache SkyWalking and the Envoy Access Log Service</a></h5>
+                    <p class="mb-2 mb-md-3"><small class="text-muted">Sunday, February 21, 2021 in Blog</small>
+
+                        
+                        <small class="mt-1 tags-box">  |
+                        
+                        <span><a href="/tags/service-mesh" class="tag-link">Service Mesh</a></span>
+                        
+                        </small>
+                        
+
+                    </p>
+                    
+
+
+
+
+
+                    <p class="pt-0 mt-0">In this tutorial, you can learn how to use Apache SkyWalking for service mesh observability, in Kubernetes and / or in virtual machines.</p>
+                    <p class="pt-0"><a href="/blog/obs-service-mesh-vm-with-sw-and-als/">Read more</a></p>
+                </div>
+            </li>
+            
+        </ul>
+        
         <h2>Posts in 2020</h2>
 
         <ul class="list-unstyled mt-4">
@@ -320,7 +351,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/service-mesh/index.xml b/tags/service-mesh/index.xml
index 1046c85..8f049d5 100644
--- a/tags/service-mesh/index.xml
+++ b/tags/service-mesh/index.xml
@@ -4,7 +4,7 @@
     <link>/tags/service-mesh/</link>
     <description>Recent content in Service Mesh on Apache SkyWalking</description>
     <generator>Hugo -- gohugo.io</generator>
-    <lastBuildDate>Thu, 03 Dec 2020 00:00:00 +0000</lastBuildDate>
+    <lastBuildDate>Sun, 21 Feb 2021 00:00:00 +0000</lastBuildDate>
     
 	  <atom:link href="/tags/service-mesh/index.xml" rel="self" type="application/rss+xml" />
     
@@ -15,6 +15,165 @@
     
     
     <item>
+      <title>Blog: Observe VM Service Meshes with Apache SkyWalking and the Envoy Access Log Service</title>
+      <link>/blog/obs-service-mesh-vm-with-sw-and-als/</link>
+      <pubDate>Sun, 21 Feb 2021 00:00:00 +0000</pubDate>
+      
+      <guid>/blog/obs-service-mesh-vm-with-sw-and-als/</guid>
+      <description>
+        
+        
+        &lt;p&gt;&lt;img src=&#34;stone-arch.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;p&gt;Origin: &lt;a href=&#34;https://thenewstack.io/observe-virtual-machine-service-meshes-with-apache-skywalking-and-the-envoy-access-log-service&#34;&gt;Observe VM Service Meshes with Apache SkyWalking and the Envoy Access Log Service - The New Stack&lt;/a&gt;&lt;/p&gt;
+&lt;/blockquote&gt;
+&lt;p&gt;&lt;a href=&#34;https://github.com/apache/skywalking&#34;&gt;Apache SkyWalking&lt;/a&gt;: an APM (application performance monitor) system, especially
+designed for microservices, cloud native, and container-based (Docker, Kubernetes, Mesos) architectures.&lt;/p&gt;
+&lt;p&gt;&lt;a href=&#34;https://www.envoyproxy.io/docs/envoy/latest/api-v2/service/accesslog/v2/als.proto&#34;&gt;Envoy Access Log Service&lt;/a&gt;: Access
+Log Service (ALS) is an Envoy extension that emits detailed access logs of all requests going through Envoy.&lt;/p&gt;
+&lt;h2 id=&#34;background&#34;&gt;Background&lt;/h2&gt;
+&lt;p&gt;In the &lt;a href=&#34;/blog/obs-service-mesh-with-sw-and-als&#34;&gt;previous post&lt;/a&gt;, we talked about the observability of service mesh under
+Kubernetes environment, and applied it to the bookinfo application in practice. We also mentioned that, in order to map
+the IP addresses into services, SkyWalking needs access to the service metadata from a Kubernetes cluster, which is not
+available for services deployed in virtual machines (VMs). In this post, we will introduce a new analyzer in SkyWalking
+that leverages Envoy’s metadata exchange mechanism to decouple with Kubernetes. The analyzer is designed to work in
+Kubernetes environments, VM environments, and hybrid environments. If there are virtual machines in your service mesh,
+you might want to try out this new analyzer for better observability, which we will demonstrate in this tutorial.&lt;/p&gt;
+&lt;h2 id=&#34;how-it-works&#34;&gt;How it works&lt;/h2&gt;
+&lt;p&gt;The mechanism of how the analyzer works is the same as what we discussed in
+the &lt;a href=&#34;/blog/obs-service-mesh-with-sw-and-als&#34;&gt;previous post&lt;/a&gt;. What makes VMs different from Kubernetes is that, for VM
+services, there are no places where we can fetch the metadata to map the IP addresses into services.&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
+&lt;p&gt;The basic idea we present in this article is to carry the metadata along with Envoy’s access logs, which is called
+metadata-exchange mechanism in Envoy. When Istio pilot-agent starts an Envoy proxy as a sidecar of a service, it
+collects the metadata of that service from the Kubernetes platform, or a file on the VM where that service is deployed,
+and injects the metadata into the bootstrap configuration of Envoy. Envoy will carry the metadata transparently when
+emitting access logs to the SkyWalking receiver.&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image2.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
+&lt;p&gt;But how does Envoy compose a piece of a complete access log that involves the client side and server side? When a
+request goes out from Envoy, a plugin of istio-proxy named &amp;ldquo;metadata-exchange&amp;rdquo; injects the metadata into the http
+headers (with a prefix like &lt;code&gt;x-envoy-downstream-&lt;/code&gt;), and the metadata is propagated to the server side. The Envoy sidecar
+of the server side receives the request and parses the headers into metadata, and puts the metadata into the access log,
+keyed by &lt;code&gt;wasm.downstream_peer&lt;/code&gt;. The server side Envoy also puts its own metadata into the access log keyed
+by &lt;code&gt;wasm.upstream_peer.&lt;/code&gt; Hence the two sides of a single request are completed.&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image3.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
+&lt;p&gt;With the metadata-exchange mechanism, we can use the metadata directly without any extra query.&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image4.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
+&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
+&lt;p&gt;In this tutorial, we will use another demo
+application &lt;a href=&#34;http://github.com/GoogleCloudPlatform/microservices-demo&#34;&gt;Online Boutique&lt;/a&gt; that consists of 10+ services so
+that we can deploy some of them in VMs and make them communicate with other services deployed in Kubernetes.&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image5.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
+&lt;p&gt;Topology of Online Boutique In order to cover as many cases as possible, we will deploy &lt;code&gt;CheckoutService&lt;/code&gt;
+and &lt;code&gt;PaymentService&lt;/code&gt; on VM and all the other services on Kubernetes, so that we can cover the cases like Kubernetes →
+VM (e.g. &lt;code&gt;Frontend&lt;/code&gt; → &lt;code&gt;CheckoutService&lt;/code&gt;), VM → Kubernetes (e.g. &lt;code&gt;CheckoutService&lt;/code&gt; → &lt;code&gt;ShippingService&lt;/code&gt;), and VM → VM (
+e.g. &lt;code&gt;CheckoutService&lt;/code&gt; → &lt;code&gt;PaymentService&lt;/code&gt;).&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: All the commands used in this tutorial are accessible
+on &lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts&#34;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
+&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;git clone https://github.com/SkyAPMTest/sw-als-vm-demo-scripts
+cd sw-als-vm-demo-scripts
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Make sure to init the &lt;code&gt;gcloud&lt;/code&gt; SDK properly before moving on. Modify the &lt;code&gt;GCP_PROJECT&lt;/code&gt; in file &lt;code&gt;env.sh&lt;/code&gt; to your own
+project name. Most of the other variables should be OK to work if you keep them intact. If you would like to
+use &lt;code&gt;ISTIO_VERSION&lt;/code&gt; &amp;gt;/= 1.8.0, please make sure &lt;a href=&#34;https://github.com/istio/istio/pull/28956&#34;&gt;this patch&lt;/a&gt; is included.&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;
+&lt;p&gt;Prepare Kubernetes cluster and VM instances
+&lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/00-create-cluster-and-vms.sh&#34;&gt;&lt;code&gt;00-create-cluster-and-vms.sh&lt;/code&gt;&lt;/a&gt;
+creates a new GKE cluster and 2 VM instances that will be used through the entire tutorial, and sets up some necessary
+firewall rules for them to communicate with each other.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Install Istio and SkyWalking
+&lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/01a-install-istio.sh&#34;&gt;&lt;code&gt;01a-install-istio.sh&lt;/code&gt;&lt;/a&gt;
+installs Istio Operator with spec &lt;code&gt;resources/vmintegration.yaml&lt;/code&gt;. In the YAML file, we enable the &lt;code&gt;meshExpansion&lt;/code&gt; that
+supports VM in mesh. We also enable the Envoy access log service and specify the
+address &lt;code&gt;skywalking-oap.istio-system.svc.cluster.local:11800&lt;/code&gt; to which Envoy emits the access logs.
+&lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/01b-install-skywalking.sh&#34;&gt;&lt;code&gt;01b-install-skywalking.sh&lt;/code&gt;&lt;/a&gt;
+installs Apache SkyWalking and sets the analyzer to &lt;code&gt;mx-mesh&lt;/code&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Create files to initialize the VM
+&lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/02-create-files-to-transfer-to-vm.sh&#34;&gt;&lt;code&gt;02-create-files-to-transfer-to-vm.sh&lt;/code&gt;&lt;/a&gt;
+creates necessary files that will be used to initialize the VMs.
+&lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/03-copy-work-files-to-vm.sh&#34;&gt;&lt;code&gt;03-copy-work-files-to-vm.sh&lt;/code&gt;&lt;/a&gt;
+securely transfers the generated files to the VMs with &lt;code&gt;gcloud scp&lt;/code&gt; command. Now use &lt;code&gt;./ssh.sh checkoutservice&lt;/code&gt;
+and &lt;code&gt;./ssh.sh paymentservice&lt;/code&gt; to log into the two VMs respectively, and &lt;code&gt;cd&lt;/code&gt; to the &lt;code&gt;~/work&lt;/code&gt; directory,
+execute &lt;code&gt;./prep-checkoutservice.sh&lt;/code&gt; on &lt;code&gt;checkoutservice&lt;/code&gt; VM instance and &lt;code&gt;./prep-paymentservice.sh&lt;/code&gt;
+on &lt;code&gt;paymentservice&lt;/code&gt; VM instance. The Istio sidecar should be installed and started properly. To verify that,
+use &lt;code&gt;tail -f /var/logs/istio/istio.log&lt;/code&gt; to check the Istio logs. The output should be something like:&lt;/p&gt;
+&lt;pre&gt;&lt;code&gt;2020-12-12T08:07:07.348329Z	info	sds	resource:default new connection
+2020-12-12T08:07:07.348401Z	info	sds	Skipping waiting for gateway secret
+2020-12-12T08:07:07.348401Z	info	sds	Skipping waiting for gateway secret
+2020-12-12T08:07:07.568676Z	info	cache	Root cert has changed, start rotating root cert for SDS clients
+2020-12-12T08:07:07.568718Z	info	cache	GenerateSecret default
+2020-12-12T08:07:07.569398Z	info	sds	resource:default pushed key/cert pair to proxy
+2020-12-12T08:07:07.949156Z	info	cache	Loaded root cert from certificate ROOTCA
+2020-12-12T08:07:07.949348Z	info	sds	resource:ROOTCA pushed root cert to proxy
+2020-12-12T20:12:07.384782Z	info	sds	resource:default pushed key/cert pair to proxy
+2020-12-12T20:12:07.384832Z	info	sds	Dynamic push for secret default
+&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The dnsmasq configuration &lt;code&gt;address=/.svc.cluster.local/{ISTIO_SERVICE_IP_STUB}&lt;/code&gt; also resolves the domain names ended
+with &lt;code&gt;.svc.cluster.local&lt;/code&gt; to Istio service IP, so that you are able to access the Kubernetes services in the VM by
+fully qualified domain name (FQDN) such as &lt;code&gt;httpbin.default.svc.cluster.local&lt;/code&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Deploy demo application Because we want to deploy &lt;code&gt;CheckoutService&lt;/code&gt; and &lt;code&gt;PaymentService&lt;/code&gt; manually on
+VM, &lt;code&gt;resources/google-demo.yaml&lt;/code&gt; removes the two services
+from &lt;a href=&#34;https://github.com/GoogleCloudPlatform/microservices-demo/blob/master/release/kubernetes-manifests.yaml&#34;&gt;the original YAML&lt;/a&gt;
+.
+&lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/04a-deploy-demo-app.sh&#34;&gt;&lt;code&gt;04a-deploy-demo-app.sh&lt;/code&gt;&lt;/a&gt;
+deploys the other services on Kubernetes. Then log into the 2 VMs, run &lt;code&gt;~/work/deploy-checkoutservice.sh&lt;/code&gt;
+and &lt;code&gt;~/work/deploy-paymentservice.sh&lt;/code&gt; respectively to deploy &lt;code&gt;CheckoutService&lt;/code&gt; and &lt;code&gt;PaymentService&lt;/code&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Register VMs to Istio Services on VMs can access the services on Kubernetes by FQDN, but that’s not the case when the
+Kubernetes services want to talk to the VM services. The mesh has no idea where to forward the requests such
+as &lt;code&gt;checkoutservice.default.svc.cluster.local&lt;/code&gt; because &lt;code&gt;checkoutservice&lt;/code&gt; is isolated in the VM. Therefore, we need to
+register the services to the
+mesh. &lt;a href=&#34;https://github.com/SkyAPMTest/sw-als-vm-demo-scripts/blob/2179d04270c98b9f87cf3998f5af775870ed53a7/04b-register-vm-with-istio.sh&#34;&gt;&lt;code&gt;04b-register-vm-with-istio.sh&lt;/code&gt;&lt;/a&gt;
+registers the VM services to the mesh by creating a &amp;ldquo;dummy&amp;rdquo; service without running Pods, and a &lt;code&gt;WorkloadEntry&lt;/code&gt; to
+bridge the &amp;ldquo;dummy&amp;rdquo; service with the VM service.&lt;/p&gt;
+&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h2 id=&#34;done&#34;&gt;Done!&lt;/h2&gt;
+&lt;p&gt;The demo application contains a &lt;code&gt;load generator&lt;/code&gt; service that performs requests repeatedly. We only need to wait a few
+seconds, and then open the SkyWalking web UI to check the results.&lt;/p&gt;
+&lt;pre&gt;&lt;code&gt;export POD_NAME=$(kubectl get pods --namespace istio-system -l &amp;quot;app=skywalking,release=skywalking,component=ui&amp;quot; -o jsonpath=&amp;quot;{.items[0].metadata.name}&amp;quot;)
+echo &amp;quot;Visit http://127.0.0.1:8080 to use your application&amp;quot;
+kubectl port-forward $POD_NAME 8080:8080 --namespace istio-system
+&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Navigate the browser to http://localhost:8080 . The metrics, topology should be there.&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image6.png&#34; alt=&#34;Topology&#34;&gt;&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image7.png&#34; alt=&#34;Global metrics&#34;&gt;&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image8.png&#34; alt=&#34;Metrics of CheckoutService&#34;&gt;&lt;/p&gt;
+&lt;p&gt;&lt;img src=&#34;image9.png&#34; alt=&#34;Metrics of PaymentService&#34;&gt;&lt;/p&gt;
+&lt;h2 id=&#34;troubleshooting&#34;&gt;Troubleshooting&lt;/h2&gt;
+&lt;p&gt;If you face any trouble when walking through the steps, here are some common problems and possible solutions:&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;
+&lt;p&gt;VM service cannot access Kubernetes services? It’s likely the DNS on the VM doesn’t correctly resolve the fully
+qualified domain names. Try to verify that with &lt;code&gt;nslookup istiod.istio-system.svc.cluster.local&lt;/code&gt;. If it doesn’t
+resolve to the Kubernetes CIDR address, recheck the step in &lt;code&gt;prep-checkoutservice.sh&lt;/code&gt; and &lt;code&gt;prep-paymentservice.sh&lt;/code&gt;. If
+the DNS works correctly, try to verify that Envoy has fetched the upstream clusters from the control plane
+with &lt;code&gt;curl http://localhost:15000/clusters&lt;/code&gt;. If it doesn’t contain the target service,
+recheck &lt;code&gt;prep-checkoutservice.sh&lt;/code&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;Services are normal but nothing on SkyWalking WebUI? Check the SkyWalking OAP logs
+via &lt;code&gt;kubectl -n istio-system logs -f $(kubectl get pod -A -l &amp;quot;app=skywalking,release=skywalking,component=oap&amp;quot; -o name)&lt;/code&gt;
+and WebUI logs
+via &lt;code&gt;kubectl -n istio-system logs -f $(kubectl get pod -A -l &amp;quot;app=skywalking,release=skywalking,component=ui&amp;quot; -o name)&lt;/code&gt;
+to see whether there are any error logs . Also, make sure the time zone at the bottom-right of the browser is set
+to &lt;code&gt;UTC +0&lt;/code&gt;.&lt;/p&gt;
+&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h2 id=&#34;additional-resources&#34;&gt;Additional Resources&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;&lt;a href=&#34;/blog/obs-service-mesh-with-sw-and-als&#34;&gt;Observe a Service Mesh with Envoy ALS&lt;/a&gt;.&lt;/li&gt;
+&lt;/ul&gt;
+
+      </description>
+    </item>
+    
+    <item>
       <title>Blog: Observe Service Mesh with SkyWalking and Envoy Access Log Service</title>
       <link>/blog/2020-12-03-obs-service-mesh-with-sw-and-als/</link>
       <pubDate>Thu, 03 Dec 2020 00:00:00 +0000</pubDate>
diff --git a/tags/spring/index.html b/tags/spring/index.html
index 84edf48..8f45197 100644
--- a/tags/spring/index.html
+++ b/tags/spring/index.html
@@ -291,7 +291,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/testing/index.html b/tags/testing/index.html
index 31e04a8..85436f1 100644
--- a/tags/testing/index.html
+++ b/tags/testing/index.html
@@ -351,7 +351,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/tracing/index.html b/tags/tracing/index.html
index 72c2a7c..5c8b6a7 100644
--- a/tags/tracing/index.html
+++ b/tags/tracing/index.html
@@ -359,7 +359,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/user-manual/index.html b/tags/user-manual/index.html
index a542774..cdb86b0 100644
--- a/tags/user-manual/index.html
+++ b/tags/user-manual/index.html
@@ -287,7 +287,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tags/video/index.html b/tags/video/index.html
index 7a2cac1..0cfef38 100644
--- a/tags/video/index.html
+++ b/tags/video/index.html
@@ -397,7 +397,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/tango/index.html b/tango/index.html
index 68e5be1..82a2ac1 100644
--- a/tango/index.html
+++ b/tango/index.html
@@ -238,7 +238,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/true/index.html b/true/index.html
index 3377563..cd8daef 100644
--- a/true/index.html
+++ b/true/index.html
@@ -238,7 +238,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/agent/index.html b/zh_tags/agent/index.html
index f2196ee..d32968a 100644
--- a/zh_tags/agent/index.html
+++ b/zh_tags/agent/index.html
@@ -363,7 +363,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/conference/index.html b/zh_tags/conference/index.html
index 16ea074..b56a9e5 100644
--- a/zh_tags/conference/index.html
+++ b/zh_tags/conference/index.html
@@ -403,7 +403,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/development/index.html b/zh_tags/development/index.html
index 461e41a..b01da78 100644
--- a/zh_tags/development/index.html
+++ b/zh_tags/development/index.html
@@ -355,7 +355,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/dotnetcore/index.html b/zh_tags/dotnetcore/index.html
index 8d69e31..13706c0 100644
--- a/zh_tags/dotnetcore/index.html
+++ b/zh_tags/dotnetcore/index.html
@@ -289,7 +289,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/elasticsearch/index.html b/zh_tags/elasticsearch/index.html
index 04c0f02..298f54d 100644
--- a/zh_tags/elasticsearch/index.html
+++ b/zh_tags/elasticsearch/index.html
@@ -289,7 +289,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/index.html b/zh_tags/index.html
index ee91c82..3cc833c 100644
--- a/zh_tags/index.html
+++ b/zh_tags/index.html
@@ -238,7 +238,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/java/index.html b/zh_tags/java/index.html
index a47f736..36a763d 100644
--- a/zh_tags/java/index.html
+++ b/zh_tags/java/index.html
@@ -330,7 +330,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/open-source-contribution/index.html b/zh_tags/open-source-contribution/index.html
index 1096126..12cfc12 100644
--- a/zh_tags/open-source-contribution/index.html
+++ b/zh_tags/open-source-contribution/index.html
@@ -376,7 +376,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/open-source-promotion-plan/index.html b/zh_tags/open-source-promotion-plan/index.html
index cdfdf0e..30326d5 100644
--- a/zh_tags/open-source-promotion-plan/index.html
+++ b/zh_tags/open-source-promotion-plan/index.html
@@ -316,7 +316,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/profiling/index.html b/zh_tags/profiling/index.html
index 78d65fc..357f858 100644
--- a/zh_tags/profiling/index.html
+++ b/zh_tags/profiling/index.html
@@ -293,7 +293,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/release-blog/index.html b/zh_tags/release-blog/index.html
index 24ae330..e44161e 100644
--- a/zh_tags/release-blog/index.html
+++ b/zh_tags/release-blog/index.html
@@ -337,7 +337,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/service-mesh/index.html b/zh_tags/service-mesh/index.html
index 5c3d5a7..ac3894d 100644
--- a/zh_tags/service-mesh/index.html
+++ b/zh_tags/service-mesh/index.html
@@ -287,7 +287,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/source-code/index.html b/zh_tags/source-code/index.html
index bd7f4d89..942bbfc 100644
--- a/zh_tags/source-code/index.html
+++ b/zh_tags/source-code/index.html
@@ -289,7 +289,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/tracing/index.html b/zh_tags/tracing/index.html
index e5e9a46..5830b86 100644
--- a/zh_tags/tracing/index.html
+++ b/zh_tags/tracing/index.html
@@ -326,7 +326,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/use-case/index.html b/zh_tags/use-case/index.html
index 8da413a..a5c6763 100644
--- a/zh_tags/use-case/index.html
+++ b/zh_tags/use-case/index.html
@@ -343,7 +343,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/user-manual/index.html b/zh_tags/user-manual/index.html
index f726a75..23f4486 100644
--- a/zh_tags/user-manual/index.html
+++ b/zh_tags/user-manual/index.html
@@ -552,7 +552,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/user-manual/page/2/index.html b/zh_tags/user-manual/page/2/index.html
index a89eee3..99c086c 100644
--- a/zh_tags/user-manual/page/2/index.html
+++ b/zh_tags/user-manual/page/2/index.html
@@ -362,7 +362,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/video/index.html b/zh_tags/video/index.html
index 35b39d4..4b08e5c 100644
--- a/zh_tags/video/index.html
+++ b/zh_tags/video/index.html
@@ -403,7 +403,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>
diff --git a/zh_tags/web-ui/index.html b/zh_tags/web-ui/index.html
index 2112e77..ee09dd2 100644
--- a/zh_tags/web-ui/index.html
+++ b/zh_tags/web-ui/index.html
@@ -289,7 +289,7 @@ if (!doNotTrack) {
         
         <li>
             <a href="/tags/service-mesh/" class="tag-link">Service Mesh</a>
-            <span class="count">2</span>
+            <span class="count">3</span>
         </li>
         
         <li>