You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2021/09/13 06:58:19 UTC

[skywalking-satellite] branch main updated: Polishing documentations (#64)

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

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


The following commit(s) were added to refs/heads/main by this push:
     new 0c87c70  Polishing documentations (#64)
0c87c70 is described below

commit 0c87c70ed8a9ace8146ab887107c8e5f5e83d037
Author: mrproliu <74...@qq.com>
AuthorDate: Mon Sep 13 14:58:14 2021 +0800

    Polishing documentations (#64)
---
 docs/en/setup/README.md                            |  16 ++
 .../setup/examples/transmit-log-to-kafka/README.md |  11 +
 .../transmit-log-to-kafka/satellite_config.yaml    |  93 ++++++++
 .../transmit-protocol-from-agent/README.md         |  21 ++
 .../satellite_config.yaml                          | 249 +++++++++++++++++++++
 .../plugins/fetcher_prometheus-metrics-fetcher.md  |   2 +
 .../plugins/receiver_grpc-nativecds-receiver.md    |   2 +
 .../plugins/receiver_grpc-nativeevent-receiver.md  |   2 +
 .../plugins/receiver_grpc-nativejvm-receiver.md    |   2 +
 .../plugins/receiver_grpc-nativelog-receiver.md    |   2 +
 .../receiver_grpc-nativemanagement-receiver.md     |   2 +
 .../plugins/receiver_grpc-nativemeter-receiver.md  |   2 +
 .../receiver_grpc-nativeprofile-receiver.md        |   2 +
 .../receiver_grpc-nativetracing-receiver.md        |   2 +
 .../plugins/receiver_http-nativelog-receiver.md    |   2 +
 docs/menu.yml                                      |   9 +-
 internal/satellite/tools/generate_plugin_doc.go    |  22 ++
 plugins/fetcher/api/fetcher.go                     |   3 +
 plugins/fetcher/prometheus/fetcher.go              |   8 +
 .../forwarder/grpc/nativeevent/sync_forwarder.go   |   2 +-
 plugins/queue/mmap/segment/segment.go              |   2 +-
 plugins/receiver/api/receiver.go                   |   4 +
 plugins/receiver/grpc/nativecds/receiver.go        |   8 +
 plugins/receiver/grpc/nativeevent/receiver.go      |   8 +
 plugins/receiver/grpc/nativejvm/receiver.go        |   8 +
 plugins/receiver/grpc/nativelog/receiver.go        |   8 +
 plugins/receiver/grpc/nativemanagement/receiver.go |   8 +
 plugins/receiver/grpc/nativemeter/meter_service.go |   2 +-
 plugins/receiver/grpc/nativemeter/receiver.go      |  10 +-
 plugins/receiver/grpc/nativemeter/receiver_test.go |   2 +-
 plugins/receiver/grpc/nativeprofile/receiver.go    |   8 +
 plugins/receiver/grpc/nativetracing/receiver.go    |   8 +
 plugins/receiver/http/nativcelog/receiver.go       |   8 +
 33 files changed, 530 insertions(+), 8 deletions(-)

diff --git a/docs/en/setup/README.md b/docs/en/setup/README.md
index 3f3c364..930e355 100644
--- a/docs/en/setup/README.md
+++ b/docs/en/setup/README.md
@@ -1,11 +1,27 @@
 # Setup
 First and most important thing is, SkyWalking Satellite startup behaviours are driven by configs/satellite_config.yaml. Understanding the setting file will help you to read this document.
 
+## Requirements and default settings
+
+Before you start, you should know that the main purpose of quickstart is to help you obtain a basic configuration for previews/demo. Performance and long-term running are not our goals.
+
+You can use `bin/startup.sh` (or cmd) to start up the satellite with their [default settings](../../../configs/satellite_config.yaml), set out as follows:
+
+- Receive SkyWalking related protocols through grpc(listens on `0.0.0.0/11800`) and transmit them to SkyWalking backend(to `0.0.0.0/11800`).
+- Expose Self-Observability telemetry data to Prometheus(listens on `0.0.0.0/1234`)
+
 ## Startup script
 Startup Script
 ```shell script
 bin/startup.sh 
 ```
+
+## Examples
+You can quickly build your satellite according to the following examples:
+
+1. [Transmit protocol from agent](examples/transmit-protocol-from-agent/README.md)
+2. [Transmit Log to Kafka](examples/transmit-log-to-kafka/README.md)
+
 ## satellite_config.yaml
 The core concept behind this setting file is, SkyWalking Satellite is based on pure modularization design. End user can switch or assemble the collector features by their own requirements.
 
diff --git a/docs/en/setup/examples/transmit-log-to-kafka/README.md b/docs/en/setup/examples/transmit-log-to-kafka/README.md
new file mode 100644
index 0000000..c555e11
--- /dev/null
+++ b/docs/en/setup/examples/transmit-log-to-kafka/README.md
@@ -0,0 +1,11 @@
+# Transmit protocol from agent
+
+Using Satellite to receive the SkyWalking log protocol from agent, and transport data to the Kafka Topic.
+
+## Config
+
+Here is [config file](satellite_config.yaml), set out as follows:
+
+- Declare gRPC [server](../../plugins/server_grpc-server.md) and [kafka client](../../plugins/client_kafka-client.md) to receive and transmit data.
+- Declare the SkyWalking Log protocol gatherer and sender to transmit protocol via [pipeline](../../configuration/pipe-plugins.md).
+- Expose [Self-Observability telemetry data](../../configuration/common.md#self-telemetry) to [Prometheus](../../plugins/server_prometheus-server.md).
\ No newline at end of file
diff --git a/docs/en/setup/examples/transmit-log-to-kafka/satellite_config.yaml b/docs/en/setup/examples/transmit-log-to-kafka/satellite_config.yaml
new file mode 100644
index 0000000..b79e614
--- /dev/null
+++ b/docs/en/setup/examples/transmit-log-to-kafka/satellite_config.yaml
@@ -0,0 +1,93 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# The logger configuration.
+logger:
+  # The log format pattern configuration.
+  log_pattern: ${SATELLITE_LOGGER_LOG_PATTERN:%time [%level][%field] - %msg}
+  # The time format pattern configuration.
+  time_pattern: ${SATELLITE_LOGGER_TIME_PATTERN:2006-01-02 15:04:05.000}
+  # The lowest level of printing allowed.
+  level: ${SATELLITE_LOGGER_LEVEL:info}
+
+# The Satellite self telemetry configuration.
+telemetry:
+  # The space concept for the deployment, such as the namespace concept in the Kubernetes.
+  cluster: ${SATELLITE_TELEMETRY_CLUSTER:satellite-cluster}
+  # The group concept for the deployment, such as the service resource concept in the Kubernetes.
+  service: ${SATELLITE_TELEMETRY_SERVICE:satellite-service}
+  # The minimum running unit, such as the pod concept in the Kubernetes.
+  instance: ${SATELLITE_TELEMETRY_SERVICE:satellite-instance}
+
+# The sharing plugins referenced by the specific plugins in the different pipes.
+sharing:
+  clients:
+    - plugin_name: "kafka-client"
+      # The Kafka broker addresses (default localhost:9092). Multiple values are separated by commas.
+      brokers: ${SATELLITE_KAFKA_CLIENT_BROKERS:127.0.0.1:9092}
+      # The Kakfa version should follow this pattern, which is major_minor_veryMinor_patch.
+      version: ${SATELLITE_KAFKA_VERSION:"2.1.1"}
+      # The TLS switch
+      enable_TLS: ${SATELLITE_KAFKA_ENABLE_TLS:false}
+      # The file path of client.pem. The config only works when opening the TLS switch.
+      client_pem_path: ${SATELLITE_KAFKA_CLIENT_PEM_PATH:"client.pem"}
+      # The file path of client.key. The config only works when opening the TLS switch.
+      client_key_path: ${SATELLITE_KAFKA_CLIENT_KEY_PATH:"client.key"}
+      # The file path oca.pem. The config only works when opening the TLS switch.
+      ca_pem_path: ${SATELLITE_KAFKA_CA_PEM_PATH:"ca.pem"}
+  servers:
+    - plugin_name: "grpc-server"
+      # The address of grpc server.
+      address: ${SATELLITE_GRPC_ADDRESS:":11800"}
+      # The TLS cert file path.
+      tls_cert_file: ${SATELLITE_GRPC_TLS_KEY_FILE:""}
+      # The TLS key file path.
+      tls_key_file: ${SATELLITE_GRPC_TLS_KEY_FILE:""}
+    - plugin_name: "prometheus-server"
+      # The prometheus server address.
+      address: ${SATELLITE_PROMETHEUS_ADDRESS:":1234"}
+      # The prometheus server metrics endpoint.
+      endpoint: ${SATELLITE_PROMETHEUS_ENDPOINT:"/metrics"}
+
+# The working pipe configurations.
+pipes:
+  - common_config:
+      pipe_name: logpipe
+    gatherer:
+      server_name: "grpc-server"
+      receiver:
+        plugin_name: "grpc-nativelog-receiver"
+      queue:
+        plugin_name: "memory-queue"
+        # The maximum buffer event size.
+        event_buffer_size: ${SATELLITE_QUEUE_EVENT_BUFFER_SIZE:5000}
+    processor:
+      filters:
+    sender:
+      fallbacker:
+        plugin_name: none-fallbacker
+      # The time interval between two flush operations. And the time unit is millisecond.
+      flush_time: ${SATELLITE_LOGPIPE_SENDER_FLUSH_TIME:1000}
+      # The maximum buffer elements.
+      max_buffer_size: ${SATELLITE_LOGPIPE_SENDER_MAX_BUFFER_SIZE:200}
+      # The minimum flush elements.
+      min_flush_events: ${SATELLITE_LOGPIPE_SENDER_MIN_FLUSH_EVENTS:100}
+      client_name: kafka-client
+      forwarders:
+        - plugin_name: nativelog-kafka-forwarder
+          # The remote kafka topic.
+          topic: ${SATELLITE_NATIVELOG-TOPIC:log-topic}
diff --git a/docs/en/setup/examples/transmit-protocol-from-agent/README.md b/docs/en/setup/examples/transmit-protocol-from-agent/README.md
new file mode 100644
index 0000000..80f1a2e
--- /dev/null
+++ b/docs/en/setup/examples/transmit-protocol-from-agent/README.md
@@ -0,0 +1,21 @@
+# Transmit protocol from agent
+
+Using Satellite to receive the SkyWalking protocols from agent, and transport data to the SkyWalking backend or another Satellite.
+
+## Protocols 
+Support these protocols transport via `gRPC`:
+1. Tracing
+2. Log
+3. Management 
+4. CDS 
+5. Event 
+6. JVM 
+7. Profile
+
+## Config
+
+Here is [config file](satellite_config.yaml), set out as follows:
+
+- Declare gRPC [server](../../plugins/server_grpc-server.md) and [client](../../plugins/client_grpc-client.md) to receive and transmit data.
+- Declare each protocol gatherer and sender to transmit protocol via [pipeline](../../configuration/pipe-plugins.md).
+- Expose [Self-Observability telemetry data](../../configuration/common.md#self-telemetry) to [Prometheus](../../plugins/server_prometheus-server.md).
\ No newline at end of file
diff --git a/docs/en/setup/examples/transmit-protocol-from-agent/satellite_config.yaml b/docs/en/setup/examples/transmit-protocol-from-agent/satellite_config.yaml
new file mode 100644
index 0000000..b7b64f6
--- /dev/null
+++ b/docs/en/setup/examples/transmit-protocol-from-agent/satellite_config.yaml
@@ -0,0 +1,249 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# The logger configuration.
+logger:
+  # The log format pattern configuration.
+  log_pattern: ${SATELLITE_LOGGER_LOG_PATTERN:%time [%level][%field] - %msg}
+  # The time format pattern configuration.
+  time_pattern: ${SATELLITE_LOGGER_TIME_PATTERN:2006-01-02 15:04:05.000}
+  # The lowest level of printing allowed.
+  level: ${SATELLITE_LOGGER_LEVEL:info}
+
+# The Satellite self telemetry configuration.
+telemetry:
+  # The space concept for the deployment, such as the namespace concept in the Kubernetes.
+  cluster: ${SATELLITE_TELEMETRY_CLUSTER:satellite-cluster}
+  # The group concept for the deployment, such as the service resource concept in the Kubernetes.
+  service: ${SATELLITE_TELEMETRY_SERVICE:satellite-service}
+  # The minimum running unit, such as the pod concept in the Kubernetes.
+  instance: ${SATELLITE_TELEMETRY_SERVICE:satellite-instance}
+
+# The sharing plugins referenced by the specific plugins in the different pipes.
+sharing:
+  clients:
+    - plugin_name: "grpc-client"
+      # The gRPC server address (default localhost:11800).
+      server_addr: ${SATELLITE_GRPC_CLIENT:127.0.0.1:11800}
+      # The TLS switch
+      enable_TLS: ${SATELLITE_GRPC_ENABLE_TLS:false}
+      # The file path of client.pem. The config only works when opening the TLS switch.
+      client_pem_path: ${SATELLITE_GRPC_CLIENT_PEM_PATH:"client.pem"}
+      # The file path of client.key. The config only works when opening the TLS switch.
+      client_key_path: ${SATELLITE_GRPC_CLIENT_KEY_PATH:"client.key"}
+      # InsecureSkipVerify controls whether a client verifies the server's certificate chain and host name.
+      insecure_skip_verify: ${SATELLITE_GRPC_INSECURE_SKIP_VERIFY:false}
+      # The file path oca.pem. The config only works when opening the TLS switch.
+      ca_pem_path: ${SATELLITE_grpc_CA_PEM_PATH:"ca.pem"}
+      # How frequently to check the connection
+      check_period: ${SATELLITE_GRPC_CHECK_PERIOD:5}
+      # The auth value when send request
+      authentication: ${SATELLITE_GRPC_AUTHENTICATION:""}
+  servers:
+    - plugin_name: "grpc-server"
+      # The address of grpc server.
+      address: ${SATELLITE_GRPC_ADDRESS:":11800"}
+      # The TLS cert file path.
+      tls_cert_file: ${SATELLITE_GRPC_TLS_KEY_FILE:""}
+      # The TLS key file path.
+      tls_key_file: ${SATELLITE_GRPC_TLS_KEY_FILE:""}
+    - plugin_name: "prometheus-server"
+      # The prometheus server address.
+      address: ${SATELLITE_PROMETHEUS_ADDRESS:":1234"}
+      # The prometheus server metrics endpoint.
+      endpoint: ${SATELLITE_PROMETHEUS_ENDPOINT:"/metrics"}
+
+# The working pipe configurations.
+pipes:
+  - common_config:
+      pipe_name: logpipe
+    gatherer:
+      server_name: "grpc-server"
+      receiver:
+        plugin_name: "grpc-nativelog-receiver"
+      queue:
+        plugin_name: "memory-queue"
+        # The maximum buffer event size.
+        event_buffer_size: ${SATELLITE_QUEUE_EVENT_BUFFER_SIZE:5000}
+    processor:
+      filters:
+    sender:
+      fallbacker:
+        plugin_name: none-fallbacker
+      # The time interval between two flush operations. And the time unit is millisecond.
+      flush_time: ${SATELLITE_LOGPIPE_SENDER_FLUSH_TIME:1000}
+      # The maximum buffer elements.
+      max_buffer_size: ${SATELLITE_LOGPIPE_SENDER_MAX_BUFFER_SIZE:200}
+      # The minimum flush elements.
+      min_flush_events: ${SATELLITE_LOGPIPE_SENDER_MIN_FLUSH_EVENTS:100}
+      client_name: grpc-client
+      forwarders:
+        - plugin_name: nativelog-grpc-forwarder
+  - common_config:
+      pipe_name: managementpipe
+    gatherer:
+      server_name: "grpc-server"
+      receiver:
+        plugin_name: "grpc-nativemanagement-receiver"
+      queue:
+        plugin_name: "memory-queue"
+        # The maximum buffer event size.
+        event_buffer_size: ${SATELLITE_QUEUE_EVENT_BUFFER_SIZE:5000}
+    processor:
+      filters:
+    sender:
+      fallbacker:
+        plugin_name: none-fallbacker
+      # The time interval between two flush operations. And the time unit is millisecond.
+      flush_time: ${SATELLITE_LOGMANAGEMENT_SENDER_FLUSH_TIME:1000}
+      # The maximum buffer elements.
+      max_buffer_size: ${SATELLITE_LOGMANAGEMENT_SENDER_MAX_BUFFER_SIZE:20}
+      # The minimum flush elements.
+      min_flush_events: ${SATELLITE_LOGMANAGEMENT_SENDER_MIN_FLUSH_EVENTS:1}
+      client_name: grpc-client
+      forwarders:
+        - plugin_name: nativemanagement-grpc-forwarder
+  - common_config:
+      pipe_name: tracingpipe
+    gatherer:
+      server_name: "grpc-server"
+      receiver:
+        plugin_name: "grpc-nativetracing-receiver"
+      queue:
+        plugin_name: "memory-queue"
+        # The maximum buffer event size.
+        event_buffer_size: ${SATELLITE_QUEUE_EVENT_BUFFER_SIZE:5000}
+    processor:
+      filters:
+    sender:
+      fallbacker:
+        plugin_name: none-fallbacker
+      # The time interval between two flush operations. And the time unit is millisecond.
+      flush_time: ${SATELLITE_TRACINGPIPE_SENDER_FLUSH_TIME:1000}
+      # The maximum buffer elements.
+      max_buffer_size: ${SATELLITE_TRACINGPIPE_SENDER_MAX_BUFFER_SIZE:200}
+      # The minimum flush elements.
+      min_flush_events: ${SATELLITE_TRACINGPIPE_SENDER_MIN_FLUSH_EVENTS:1}
+      client_name: grpc-client
+      forwarders:
+        - plugin_name: nativetracing-grpc-forwarder
+  - common_config:
+      pipe_name: profilepipe
+    gatherer:
+      server_name: "grpc-server"
+      receiver:
+        plugin_name: "grpc-nativeprofile-receiver"
+      queue:
+        plugin_name: "memory-queue"
+        # The maximum buffer event size.
+        event_buffer_size: ${SATELLITE_QUEUE_EVENT_BUFFER_SIZE:5000}
+    processor:
+      filters:
+    sender:
+      fallbacker:
+        plugin_name: none-fallbacker
+      # The time interval between two flush operations. And the time unit is millisecond.
+      flush_time: ${SATELLITE_PROFILEPIPE_SENDER_FLUSH_TIME:1000}
+      # The maximum buffer elements.
+      max_buffer_size: ${SATELLITE_PROFILEPIPE_SENDER_MAX_BUFFER_SIZE:200}
+      # The minimum flush elements.
+      min_flush_events: ${SATELLITE_PROFILEPIPE_SENDER_MIN_FLUSH_EVENTS:1}
+      client_name: grpc-client
+      forwarders:
+        - plugin_name: nativeprofile-grpc-forwarder
+  - common_config:
+      pipe_name: cdspipe
+    gatherer:
+      server_name: "grpc-server"
+      receiver:
+        plugin_name: "grpc-nativecds-receiver"
+      queue:
+        plugin_name: "none-queue"
+    processor:
+      filters:
+    sender:
+      fallbacker:
+        plugin_name: none-fallbacker
+      client_name: grpc-client
+      forwarders:
+        - plugin_name: nativecds-grpc-forwarder
+  - common_config:
+      pipe_name: eventpipe
+    gatherer:
+      server_name: "grpc-server"
+      receiver:
+        plugin_name: "grpc-nativeevent-receiver"
+      queue:
+        plugin_name: "memory-queue"
+    processor:
+      filters:
+    sender:
+      fallbacker:
+        plugin_name: none-fallbacker
+      # The time interval between two flush operations. And the time unit is millisecond.
+      flush_time: ${SATELLITE_EVENTPIPE_SENDER_FLUSH_TIME:1000}
+      # The maximum buffer elements.
+      max_buffer_size: ${SATELLITE_EVENTPIPE_SENDER_MAX_BUFFER_SIZE:200}
+      # The minimum flush elements.
+      min_flush_events: ${SATELLITE_EVENTPIPE_SENDER_MIN_FLUSH_EVENTS:1}
+      client_name: grpc-client
+      forwarders:
+        - plugin_name: nativeevent-grpc-forwarder
+  - common_config:
+      pipe_name: jvmpipe
+    gatherer:
+      server_name: "grpc-server"
+      receiver:
+        plugin_name: "grpc-nativejvm-receiver"
+      queue:
+        plugin_name: "memory-queue"
+    processor:
+      filters:
+    sender:
+      fallbacker:
+        plugin_name: none-fallbacker
+      # The time interval between two flush operations. And the time unit is millisecond.
+      flush_time: ${SATELLITE_JVMPIPE_SENDER_FLUSH_TIME:1000}
+      # The maximum buffer elements.
+      max_buffer_size: ${SATELLITE_JVMPIPE_SENDER_MAX_BUFFER_SIZE:200}
+      # The minimum flush elements.
+      min_flush_events: ${SATELLITE_JVMPIPE_SENDER_MIN_FLUSH_EVENTS:1}
+      client_name: grpc-client
+      forwarders:
+        - plugin_name: nativejvm-grpc-forwarder
+  - common_config:
+      pipe_name: meterpipe
+    gatherer:
+      server_name: "grpc-server"
+      receiver:
+        plugin_name: "grpc-nativemeter-receiver"
+      queue:
+        plugin_name: "memory-queue"
+    processor:
+      filters:
+    sender:
+      fallbacker:
+        plugin_name: none-fallbacker
+      # The time interval between two flush operations. And the time unit is millisecond.
+      flush_time: ${SATELLITE_METERPIPE_SENDER_FLUSH_TIME:1000}
+      # The maximum buffer elements.
+      max_buffer_size: ${SATELLITE_METERPIPE_SENDER_MAX_BUFFER_SIZE:200}
+      # The minimum flush elements.
+      min_flush_events: ${SATELLITE_METERPIPE_SENDER_MIN_FLUSH_EVENTS:1}
+      client_name: grpc-client
+      forwarders:
+        - plugin_name: nativemeter-grpc-forwarder
diff --git a/docs/en/setup/plugins/fetcher_prometheus-metrics-fetcher.md b/docs/en/setup/plugins/fetcher_prometheus-metrics-fetcher.md
index 451d99a..a334e2c 100755
--- a/docs/en/setup/plugins/fetcher_prometheus-metrics-fetcher.md
+++ b/docs/en/setup/plugins/fetcher_prometheus-metrics-fetcher.md
@@ -1,6 +1,8 @@
 # Fetcher/prometheus-metrics-fetcher
 ## Description
 This is a fetcher for Skywalking prometheus metrics format, which will translate Prometheus metrics to Skywalking meter system.
+## Support Forwarders
+ - [nativemeter-grpc-forwarder](forwarder_nativemeter-grpc-forwarder.md)
 ## DefaultConfig
 ```yaml
 # scrape_configs is the scrape configuration of prometheus 
diff --git a/docs/en/setup/plugins/receiver_grpc-nativecds-receiver.md b/docs/en/setup/plugins/receiver_grpc-nativecds-receiver.md
index f8994fe..4d9ea6b 100755
--- a/docs/en/setup/plugins/receiver_grpc-nativecds-receiver.md
+++ b/docs/en/setup/plugins/receiver_grpc-nativecds-receiver.md
@@ -1,5 +1,7 @@
 # Receiver/grpc-nativecds-receiver
 ## Description
 This is a receiver for SkyWalking native Configuration Discovery Service format, which is defined at https://github.com/apache/skywalking-data-collect-protocol/blob/master/language-agent/ConfigurationDiscoveryService.proto.
+## Support Forwarders
+ - [nativecds-grpc-forwarder](forwarder_nativecds-grpc-forwarder.md)
 ## DefaultConfig
 ```yaml```
diff --git a/docs/en/setup/plugins/receiver_grpc-nativeevent-receiver.md b/docs/en/setup/plugins/receiver_grpc-nativeevent-receiver.md
index 5b0be81..5e40bf1 100755
--- a/docs/en/setup/plugins/receiver_grpc-nativeevent-receiver.md
+++ b/docs/en/setup/plugins/receiver_grpc-nativeevent-receiver.md
@@ -1,5 +1,7 @@
 # Receiver/grpc-nativeevent-receiver
 ## Description
 This is a receiver for SkyWalking native meter format, which is defined at https://github.com/apache/skywalking-data-collect-protocol/blob/master/event/Event.proto.
+## Support Forwarders
+ - [nativeevent-grpc-forwarder](forwarder_nativeevent-grpc-forwarder.md)
 ## DefaultConfig
 ```yaml```
diff --git a/docs/en/setup/plugins/receiver_grpc-nativejvm-receiver.md b/docs/en/setup/plugins/receiver_grpc-nativejvm-receiver.md
index a5a8434..66fda0a 100755
--- a/docs/en/setup/plugins/receiver_grpc-nativejvm-receiver.md
+++ b/docs/en/setup/plugins/receiver_grpc-nativejvm-receiver.md
@@ -1,5 +1,7 @@
 # Receiver/grpc-nativejvm-receiver
 ## Description
 This is a receiver for SkyWalking native jvm format, which is defined at https://github.com/apache/skywalking-data-collect-protocol/blob/master/language-agent/JVMMetric.proto.
+## Support Forwarders
+ - [nativejvm-grpc-forwarder](forwarder_nativejvm-grpc-forwarder.md)
 ## DefaultConfig
 ```yaml```
diff --git a/docs/en/setup/plugins/receiver_grpc-nativelog-receiver.md b/docs/en/setup/plugins/receiver_grpc-nativelog-receiver.md
index 0790aa3..9bc2ab9 100755
--- a/docs/en/setup/plugins/receiver_grpc-nativelog-receiver.md
+++ b/docs/en/setup/plugins/receiver_grpc-nativelog-receiver.md
@@ -1,5 +1,7 @@
 # Receiver/grpc-nativelog-receiver
 ## Description
 This is a receiver for SkyWalking native logging format, which is defined at https://github.com/apache/skywalking-data-collect-protocol/blob/master/logging/Logging.proto.
+## Support Forwarders
+ - [nativelog-grpc-forwarder](forwarder_nativelog-grpc-forwarder.md)
 ## DefaultConfig
 ```yaml```
diff --git a/docs/en/setup/plugins/receiver_grpc-nativemanagement-receiver.md b/docs/en/setup/plugins/receiver_grpc-nativemanagement-receiver.md
index bbf3da2..41ce73b 100755
--- a/docs/en/setup/plugins/receiver_grpc-nativemanagement-receiver.md
+++ b/docs/en/setup/plugins/receiver_grpc-nativemanagement-receiver.md
@@ -1,5 +1,7 @@
 # Receiver/grpc-nativemanagement-receiver
 ## Description
 This is a receiver for SkyWalking native management format, which is defined at https://github.com/apache/skywalking-data-collect-protocol/blob/master/management/Management.proto.
+## Support Forwarders
+ - [nativemanagement-grpc-forwarder](forwarder_nativemanagement-grpc-forwarder.md)
 ## DefaultConfig
 ```yaml```
diff --git a/docs/en/setup/plugins/receiver_grpc-nativemeter-receiver.md b/docs/en/setup/plugins/receiver_grpc-nativemeter-receiver.md
index 8988fcd..037ce15 100755
--- a/docs/en/setup/plugins/receiver_grpc-nativemeter-receiver.md
+++ b/docs/en/setup/plugins/receiver_grpc-nativemeter-receiver.md
@@ -1,5 +1,7 @@
 # Receiver/grpc-nativemeter-receiver
 ## Description
 This is a receiver for SkyWalking native meter format, which is defined at https://github.com/apache/skywalking-data-collect-protocol/blob/master/event/Event.proto.
+## Support Forwarders
+ - [nativemeter-grpc-forwarder](forwarder_nativemeter-grpc-forwarder.md)
 ## DefaultConfig
 ```yaml```
diff --git a/docs/en/setup/plugins/receiver_grpc-nativeprofile-receiver.md b/docs/en/setup/plugins/receiver_grpc-nativeprofile-receiver.md
index 478bb90..6e5ab28 100755
--- a/docs/en/setup/plugins/receiver_grpc-nativeprofile-receiver.md
+++ b/docs/en/setup/plugins/receiver_grpc-nativeprofile-receiver.md
@@ -1,5 +1,7 @@
 # Receiver/grpc-nativeprofile-receiver
 ## Description
 This is a receiver for SkyWalking native profile format, which is defined at https://github.com/apache/skywalking-data-collect-protocol/blob/master/profile/Profile.proto.
+## Support Forwarders
+ - [nativeprofile-grpc-forwarder](forwarder_nativeprofile-grpc-forwarder.md)
 ## DefaultConfig
 ```yaml```
diff --git a/docs/en/setup/plugins/receiver_grpc-nativetracing-receiver.md b/docs/en/setup/plugins/receiver_grpc-nativetracing-receiver.md
index 3aa2ba9..c33c8ce 100755
--- a/docs/en/setup/plugins/receiver_grpc-nativetracing-receiver.md
+++ b/docs/en/setup/plugins/receiver_grpc-nativetracing-receiver.md
@@ -1,5 +1,7 @@
 # Receiver/grpc-nativetracing-receiver
 ## Description
 This is a receiver for SkyWalking native tracing format, which is defined at https://github.com/apache/skywalking-data-collect-protocol/blob/master/language-agent/Tracing.proto.
+## Support Forwarders
+ - [nativetracing-grpc-forwarder](forwarder_nativetracing-grpc-forwarder.md)
 ## DefaultConfig
 ```yaml```
diff --git a/docs/en/setup/plugins/receiver_http-nativelog-receiver.md b/docs/en/setup/plugins/receiver_http-nativelog-receiver.md
index e32498d..ef93c2e 100755
--- a/docs/en/setup/plugins/receiver_http-nativelog-receiver.md
+++ b/docs/en/setup/plugins/receiver_http-nativelog-receiver.md
@@ -1,6 +1,8 @@
 # Receiver/http-nativelog-receiver
 ## Description
 This is a receiver for SkyWalking http logging format, which is defined at https://github.com/apache/skywalking-data-collect-protocol/blob/master/logging/Logging.proto.
+## Support Forwarders
+ - [nativelog-grpc-forwarder](forwarder_nativelog-grpc-forwarder.md)
 ## DefaultConfig
 ```yaml
 # The native log request URI.
diff --git a/docs/menu.yml b/docs/menu.yml
index 803c3cc..0e17902 100644
--- a/docs/menu.yml
+++ b/docs/menu.yml
@@ -18,7 +18,6 @@ catalog:
     - name: Welcome
       path: /readme
     - name: Concepts and Designs
-      path: /en/concepts-and-designs/readme
       catalog:
         - name: What is SkyWalking Satellite?
           catalog:
@@ -37,7 +36,6 @@ catalog:
             - name: The design of the memory mapped queue
               path: /en/concepts-and-designs/mmap-queue
     - name: Setup
-      path: /en/setup/readme
       catalog:
         - name: Configuration
           catalog:
@@ -49,6 +47,12 @@ catalog:
               path: /en/setup/configuration/pipe-plugins
             - name: Override Configuration
               path: /en/setup/configuration/override-settings
+        - name: Examples
+          catalog:
+            - name: Transmit protocol from agent
+              path: /en/setup/examples/transmit-protocol-from-agent/readme
+            - name: Transmit log to kafka
+              path: /en/setup/examples/transmit-log-to-kafka/readme
         - name: Plugins
           catalog:
             - name: client
@@ -124,7 +128,6 @@ catalog:
                 - name: prometheus-server
                   path: /en/setup/plugins/server_prometheus-server
     - name: Guides
-      path: /en/guides/readme
       catalog:
         - name: Contribution
           catalog:
diff --git a/internal/satellite/tools/generate_plugin_doc.go b/internal/satellite/tools/generate_plugin_doc.go
index 8a9d8a1..85442f3 100644
--- a/internal/satellite/tools/generate_plugin_doc.go
+++ b/internal/satellite/tools/generate_plugin_doc.go
@@ -25,6 +25,10 @@ import (
 	"sort"
 	"strings"
 
+	fetcher_api "github.com/apache/skywalking-satellite/plugins/fetcher/api"
+	forwarder_api "github.com/apache/skywalking-satellite/plugins/forwarder/api"
+	receiver_api "github.com/apache/skywalking-satellite/plugins/receiver/api"
+
 	"github.com/apache/skywalking-satellite/internal/pkg/log"
 	"github.com/apache/skywalking-satellite/internal/pkg/plugin"
 	"github.com/apache/skywalking-satellite/plugins"
@@ -135,11 +139,29 @@ func generatePluginDoc(docDir string, category reflect.Type, pluginName string)
 	doc := topLevel + category.Name() + "/" + pluginName + lf
 	doc += secondLevel + "Description" + lf
 	doc += p.Description() + lf
+	doc += generateSupportForwarders(category, p)
 	doc += secondLevel + "DefaultConfig" + lf
 	doc += yamlQuoteStart + p.DefaultConfig() + yamlQuoteEnd + lf
 	return writeDoc([]byte(doc), docFileName)
 }
 
+func generateSupportForwarders(category reflect.Type, p plugin.Plugin) string {
+	var forwarders []forwarder_api.Forwarder
+	if category.Name() == "Receiver" {
+		forwarders = p.(receiver_api.Receiver).SupportForwarders()
+	} else if category.Name() == "Fetcher" {
+		forwarders = p.(fetcher_api.Fetcher).SupportForwarders()
+	}
+	if len(forwarders) == 0 {
+		return ""
+	}
+	result := secondLevel + "Support Forwarders" + lf
+	for _, forwarder := range forwarders {
+		result += " - [" + forwarder.Name() + "](" + getPluginDocFileName(reflect.TypeOf(forwarder).Elem(), forwarder.Name()) + ")" + lf
+	}
+	return result
+}
+
 func getPluginsByCategory(category reflect.Type) []string {
 	mapping := plugin.Reg[category]
 	var keys []string
diff --git a/plugins/fetcher/api/fetcher.go b/plugins/fetcher/api/fetcher.go
index 4c8e878..cbfef53 100644
--- a/plugins/fetcher/api/fetcher.go
+++ b/plugins/fetcher/api/fetcher.go
@@ -24,6 +24,7 @@ import (
 	v1 "skywalking.apache.org/repo/goapi/satellite/data/v1"
 
 	"github.com/apache/skywalking-satellite/internal/pkg/plugin"
+	forwarder "github.com/apache/skywalking-satellite/plugins/forwarder/api"
 )
 
 // Fetcher is a plugin interface, that defines new fetchers.
@@ -37,6 +38,8 @@ type Fetcher interface {
 	Channel() <-chan *v1.SniffData
 	// Shutdown shutdown the fetcher
 	Shutdown(context.Context) error
+	// SupportForwarders should provider all forwarder support current receiver
+	SupportForwarders() []forwarder.Forwarder
 }
 
 // Get an initialized fetcher plugin.
diff --git a/plugins/fetcher/prometheus/fetcher.go b/plugins/fetcher/prometheus/fetcher.go
index 1f76c11..2c5d5fa 100644
--- a/plugins/fetcher/prometheus/fetcher.go
+++ b/plugins/fetcher/prometheus/fetcher.go
@@ -24,6 +24,8 @@ import (
 	"github.com/apache/skywalking-satellite/internal/pkg/config"
 	"github.com/apache/skywalking-satellite/internal/pkg/log"
 	"github.com/apache/skywalking-satellite/internal/satellite/event"
+	forwarder "github.com/apache/skywalking-satellite/plugins/forwarder/api"
+	"github.com/apache/skywalking-satellite/plugins/forwarder/grpc/nativemeter"
 
 	promConfig "github.com/prometheus/prometheus/config"
 	"github.com/prometheus/prometheus/discovery"
@@ -195,3 +197,9 @@ func fetch(ctx context.Context, scrapeConfigs []*promConfig.ScrapeConfig, output
 		}
 	}()
 }
+
+func (f *Fetcher) SupportForwarders() []forwarder.Forwarder {
+	return []forwarder.Forwarder{
+		new(nativemeter.Forwarder),
+	}
+}
diff --git a/plugins/forwarder/grpc/nativeevent/sync_forwarder.go b/plugins/forwarder/grpc/nativeevent/sync_forwarder.go
index da7005a..4ebd567 100644
--- a/plugins/forwarder/grpc/nativeevent/sync_forwarder.go
+++ b/plugins/forwarder/grpc/nativeevent/sync_forwarder.go
@@ -15,7 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-package nativetracing
+package nativeevent
 
 import (
 	"context"
diff --git a/plugins/queue/mmap/segment/segment.go b/plugins/queue/mmap/segment/segment.go
index 720769a..714c727 100644
--- a/plugins/queue/mmap/segment/segment.go
+++ b/plugins/queue/mmap/segment/segment.go
@@ -14,7 +14,7 @@
 // KIND, either express or implied.  See the License for the
 // specific language governing permissions and limitations
 // under the License.
-
+//go:build !windows
 // +build !windows
 
 package segment
diff --git a/plugins/receiver/api/receiver.go b/plugins/receiver/api/receiver.go
index ec3e9b8..c05531e 100644
--- a/plugins/receiver/api/receiver.go
+++ b/plugins/receiver/api/receiver.go
@@ -24,6 +24,7 @@ import (
 
 	"github.com/apache/skywalking-satellite/internal/pkg/plugin"
 	module "github.com/apache/skywalking-satellite/internal/satellite/module/api"
+	forwarder "github.com/apache/skywalking-satellite/plugins/forwarder/api"
 )
 
 // Receiver is a plugin interface, that defines new collectors.
@@ -38,6 +39,9 @@ type Receiver interface {
 
 	// Channel would be put a data when the receiver receives an APM data.
 	Channel() <-chan *v1.SniffData
+
+	// SupportForwarders should provider all forwarder support current receiver
+	SupportForwarders() []forwarder.Forwarder
 }
 
 // Get an initialized receiver plugin.
diff --git a/plugins/receiver/grpc/nativecds/receiver.go b/plugins/receiver/grpc/nativecds/receiver.go
index 6b89927..dadc9f4 100644
--- a/plugins/receiver/grpc/nativecds/receiver.go
+++ b/plugins/receiver/grpc/nativecds/receiver.go
@@ -20,6 +20,8 @@ package nativecds
 import (
 	"github.com/apache/skywalking-satellite/internal/pkg/config"
 	module "github.com/apache/skywalking-satellite/internal/satellite/module/api"
+	forwarder "github.com/apache/skywalking-satellite/plugins/forwarder/api"
+	frowarder_nativecds "github.com/apache/skywalking-satellite/plugins/forwarder/grpc/nativecds"
 	"github.com/apache/skywalking-satellite/plugins/receiver/grpc"
 
 	v3 "skywalking.apache.org/repo/goapi/collect/agent/configuration/v3"
@@ -60,3 +62,9 @@ func (r *Receiver) RegisterSyncInvoker(invoker module.SyncInvoker) {
 func (r *Receiver) Channel() <-chan *v1.SniffData {
 	return r.OutputChannel
 }
+
+func (r *Receiver) SupportForwarders() []forwarder.Forwarder {
+	return []forwarder.Forwarder{
+		new(frowarder_nativecds.Forwarder),
+	}
+}
diff --git a/plugins/receiver/grpc/nativeevent/receiver.go b/plugins/receiver/grpc/nativeevent/receiver.go
index 247df61..efb4572 100644
--- a/plugins/receiver/grpc/nativeevent/receiver.go
+++ b/plugins/receiver/grpc/nativeevent/receiver.go
@@ -20,6 +20,8 @@ package nativeevent
 import (
 	"github.com/apache/skywalking-satellite/internal/pkg/config"
 	module "github.com/apache/skywalking-satellite/internal/satellite/module/api"
+	forwarder "github.com/apache/skywalking-satellite/plugins/forwarder/api"
+	forwarder_nativeevent "github.com/apache/skywalking-satellite/plugins/forwarder/grpc/nativeevent"
 	"github.com/apache/skywalking-satellite/plugins/receiver/grpc"
 
 	nativeevent "skywalking.apache.org/repo/goapi/collect/event/v3"
@@ -59,3 +61,9 @@ func (r *Receiver) RegisterSyncInvoker(_ module.SyncInvoker) {
 func (r *Receiver) Channel() <-chan *v1.SniffData {
 	return r.OutputChannel
 }
+
+func (r *Receiver) SupportForwarders() []forwarder.Forwarder {
+	return []forwarder.Forwarder{
+		new(forwarder_nativeevent.Forwarder),
+	}
+}
diff --git a/plugins/receiver/grpc/nativejvm/receiver.go b/plugins/receiver/grpc/nativejvm/receiver.go
index 6a6fb61..8d85234 100644
--- a/plugins/receiver/grpc/nativejvm/receiver.go
+++ b/plugins/receiver/grpc/nativejvm/receiver.go
@@ -23,6 +23,8 @@ import (
 
 	"github.com/apache/skywalking-satellite/internal/pkg/config"
 	module "github.com/apache/skywalking-satellite/internal/satellite/module/api"
+	forwarder "github.com/apache/skywalking-satellite/plugins/forwarder/api"
+	forwarder_nativejvm "github.com/apache/skywalking-satellite/plugins/forwarder/grpc/nativejvm"
 	grpcreceiver "github.com/apache/skywalking-satellite/plugins/receiver/grpc"
 )
 
@@ -59,3 +61,9 @@ func (r *Receiver) RegisterSyncInvoker(_ module.SyncInvoker) {
 func (r *Receiver) Channel() <-chan *v1.SniffData {
 	return r.OutputChannel
 }
+
+func (r *Receiver) SupportForwarders() []forwarder.Forwarder {
+	return []forwarder.Forwarder{
+		new(forwarder_nativejvm.Forwarder),
+	}
+}
diff --git a/plugins/receiver/grpc/nativelog/receiver.go b/plugins/receiver/grpc/nativelog/receiver.go
index ad42d38..b8f32e3 100644
--- a/plugins/receiver/grpc/nativelog/receiver.go
+++ b/plugins/receiver/grpc/nativelog/receiver.go
@@ -23,6 +23,8 @@ import (
 
 	"github.com/apache/skywalking-satellite/internal/pkg/config"
 	module "github.com/apache/skywalking-satellite/internal/satellite/module/api"
+	forwarder "github.com/apache/skywalking-satellite/plugins/forwarder/api"
+	forwarder_nativelog "github.com/apache/skywalking-satellite/plugins/forwarder/grpc/nativelog"
 	grpcreceiver "github.com/apache/skywalking-satellite/plugins/receiver/grpc"
 )
 
@@ -59,3 +61,9 @@ func (r *Receiver) RegisterSyncInvoker(_ module.SyncInvoker) {
 func (r *Receiver) Channel() <-chan *v1.SniffData {
 	return r.OutputChannel
 }
+
+func (r *Receiver) SupportForwarders() []forwarder.Forwarder {
+	return []forwarder.Forwarder{
+		new(forwarder_nativelog.Forwarder),
+	}
+}
diff --git a/plugins/receiver/grpc/nativemanagement/receiver.go b/plugins/receiver/grpc/nativemanagement/receiver.go
index 48ada13..84372ae 100644
--- a/plugins/receiver/grpc/nativemanagement/receiver.go
+++ b/plugins/receiver/grpc/nativemanagement/receiver.go
@@ -20,6 +20,8 @@ package nativemanagement
 import (
 	"github.com/apache/skywalking-satellite/internal/pkg/config"
 	module "github.com/apache/skywalking-satellite/internal/satellite/module/api"
+	forwarder "github.com/apache/skywalking-satellite/plugins/forwarder/api"
+	forwarder_nativemanagement "github.com/apache/skywalking-satellite/plugins/forwarder/grpc/nativemanagement"
 	"github.com/apache/skywalking-satellite/plugins/receiver/grpc"
 
 	v3 "skywalking.apache.org/repo/goapi/collect/management/v3"
@@ -59,3 +61,9 @@ func (r *Receiver) RegisterSyncInvoker(_ module.SyncInvoker) {
 func (r *Receiver) Channel() <-chan *v1.SniffData {
 	return r.OutputChannel
 }
+
+func (r *Receiver) SupportForwarders() []forwarder.Forwarder {
+	return []forwarder.Forwarder{
+		new(forwarder_nativemanagement.Forwarder),
+	}
+}
diff --git a/plugins/receiver/grpc/nativemeter/meter_service.go b/plugins/receiver/grpc/nativemeter/meter_service.go
index 0a101cf..6db8b91 100644
--- a/plugins/receiver/grpc/nativemeter/meter_service.go
+++ b/plugins/receiver/grpc/nativemeter/meter_service.go
@@ -15,7 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-package nativeevent
+package nativemeter
 
 import (
 	"io"
diff --git a/plugins/receiver/grpc/nativemeter/receiver.go b/plugins/receiver/grpc/nativemeter/receiver.go
index 346a230..b6b623c 100644
--- a/plugins/receiver/grpc/nativemeter/receiver.go
+++ b/plugins/receiver/grpc/nativemeter/receiver.go
@@ -15,11 +15,13 @@
 // specific language governing permissions and limitations
 // under the License.
 
-package nativeevent
+package nativemeter
 
 import (
 	"github.com/apache/skywalking-satellite/internal/pkg/config"
 	module "github.com/apache/skywalking-satellite/internal/satellite/module/api"
+	forwarder "github.com/apache/skywalking-satellite/plugins/forwarder/api"
+	forwarder_nativemeter "github.com/apache/skywalking-satellite/plugins/forwarder/grpc/nativemeter"
 	"github.com/apache/skywalking-satellite/plugins/receiver/grpc"
 
 	meter "skywalking.apache.org/repo/goapi/collect/language/agent/v3"
@@ -59,3 +61,9 @@ func (r *Receiver) RegisterSyncInvoker(_ module.SyncInvoker) {
 func (r *Receiver) Channel() <-chan *v1.SniffData {
 	return r.OutputChannel
 }
+
+func (r *Receiver) SupportForwarders() []forwarder.Forwarder {
+	return []forwarder.Forwarder{
+		new(forwarder_nativemeter.Forwarder),
+	}
+}
diff --git a/plugins/receiver/grpc/nativemeter/receiver_test.go b/plugins/receiver/grpc/nativemeter/receiver_test.go
index 91c6a2d..ea846ba 100644
--- a/plugins/receiver/grpc/nativemeter/receiver_test.go
+++ b/plugins/receiver/grpc/nativemeter/receiver_test.go
@@ -15,7 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-package nativeevent
+package nativemeter
 
 import (
 	"context"
diff --git a/plugins/receiver/grpc/nativeprofile/receiver.go b/plugins/receiver/grpc/nativeprofile/receiver.go
index 57f373a..8bf44c2 100644
--- a/plugins/receiver/grpc/nativeprofile/receiver.go
+++ b/plugins/receiver/grpc/nativeprofile/receiver.go
@@ -20,6 +20,8 @@ package nativeprofile
 import (
 	"github.com/apache/skywalking-satellite/internal/pkg/config"
 	module "github.com/apache/skywalking-satellite/internal/satellite/module/api"
+	forwarder "github.com/apache/skywalking-satellite/plugins/forwarder/api"
+	frowarder_nativeprofile "github.com/apache/skywalking-satellite/plugins/forwarder/grpc/nativeprofile"
 	"github.com/apache/skywalking-satellite/plugins/receiver/grpc"
 
 	v3 "skywalking.apache.org/repo/goapi/collect/language/profile/v3"
@@ -60,3 +62,9 @@ func (r *Receiver) RegisterSyncInvoker(invoker module.SyncInvoker) {
 func (r *Receiver) Channel() <-chan *v1.SniffData {
 	return r.OutputChannel
 }
+
+func (r *Receiver) SupportForwarders() []forwarder.Forwarder {
+	return []forwarder.Forwarder{
+		new(frowarder_nativeprofile.Forwarder),
+	}
+}
diff --git a/plugins/receiver/grpc/nativetracing/receiver.go b/plugins/receiver/grpc/nativetracing/receiver.go
index 15a9dfb..7373c92 100644
--- a/plugins/receiver/grpc/nativetracing/receiver.go
+++ b/plugins/receiver/grpc/nativetracing/receiver.go
@@ -20,6 +20,8 @@ package nativetracing
 import (
 	"github.com/apache/skywalking-satellite/internal/pkg/config"
 	module "github.com/apache/skywalking-satellite/internal/satellite/module/api"
+	forwarder "github.com/apache/skywalking-satellite/plugins/forwarder/api"
+	frowarder_nativetracing "github.com/apache/skywalking-satellite/plugins/forwarder/grpc/nativetracing"
 	"github.com/apache/skywalking-satellite/plugins/receiver/grpc"
 
 	v3 "skywalking.apache.org/repo/goapi/collect/language/agent/v3"
@@ -59,3 +61,9 @@ func (r *Receiver) RegisterSyncInvoker(_ module.SyncInvoker) {
 func (r *Receiver) Channel() <-chan *v1.SniffData {
 	return r.OutputChannel
 }
+
+func (r *Receiver) SupportForwarders() []forwarder.Forwarder {
+	return []forwarder.Forwarder{
+		new(frowarder_nativetracing.Forwarder),
+	}
+}
diff --git a/plugins/receiver/http/nativcelog/receiver.go b/plugins/receiver/http/nativcelog/receiver.go
index 285ac0e..82c599c 100644
--- a/plugins/receiver/http/nativcelog/receiver.go
+++ b/plugins/receiver/http/nativcelog/receiver.go
@@ -30,6 +30,8 @@ import (
 
 	"github.com/apache/skywalking-satellite/internal/pkg/config"
 	"github.com/apache/skywalking-satellite/internal/pkg/log"
+	forwarder "github.com/apache/skywalking-satellite/plugins/forwarder/api"
+	frowarder_nativelog "github.com/apache/skywalking-satellite/plugins/forwarder/grpc/nativelog"
 	http_server "github.com/apache/skywalking-satellite/plugins/server/http"
 
 	logging "skywalking.apache.org/repo/goapi/collect/logging/v3"
@@ -127,3 +129,9 @@ func (r *Receiver) httpHandler() http.Handler {
 func (r *Receiver) Channel() <-chan *v1.SniffData {
 	return r.OutputChannel
 }
+
+func (r *Receiver) SupportForwarders() []forwarder.Forwarder {
+	return []forwarder.Forwarder{
+		new(frowarder_nativelog.Forwarder),
+	}
+}