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-rover.git


The following commit(s) were added to refs/heads/main by this push:
     new 201994e  Setup the official documentation (#12)
201994e is described below

commit 201994e0b1f1d65269bdc95b35f19121c829a8cb
Author: mrproliu <[email protected]>
AuthorDate: Thu Apr 14 12:59:15 2022 +0800

    Setup the official documentation (#12)
---
 README.md                                          |  4 +-
 dist/bin/startup.sh                                | 41 ++++++++++
 docs/README.md                                     | 14 ++++
 docs/en/concepts-and-designs/module_design.md      | 38 ++++++++++
 docs/en/concepts-and-designs/overview.md           | 18 +++++
 docs/en/concepts-and-designs/project_structue.md   | 29 +++++++
 docs/en/guide/README.md                            |  7 ++
 docs/en/guide/compile/how-to-compile.md            | 27 +++++++
 docs/en/guide/contribution/how-to-write-module.md  | 18 +++++
 docs/en/setup/configuration/core.md                | 17 +++++
 docs/en/setup/configuration/override-settings.md   | 17 +++++
 .../setup/configuration/process_discovery/linux.md | 68 +++++++++++++++++
 .../configuration/process_discovery/overview.md    | 15 ++++
 docs/en/setup/configuration/profiling.md           | 27 +++++++
 .../examples/cases/profiling-process/readme.md     | 88 ++++++++++++++++++++++
 docs/en/setup/examples/deploy/linux/readme.md      | 19 +++++
 docs/en/setup/overview.md                          | 39 ++++++++++
 docs/menu.yml                                      | 67 ++++++++++++++++
 18 files changed, 551 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index 79bdf62..351b7bf 100644
--- a/README.md
+++ b/README.md
@@ -3,13 +3,13 @@ Apache SkyWalking Rover
 
 <img src="http://skywalking.apache.org/assets/logo.svg"; alt="Sky Walking logo" 
height="90px" align="right" />
 
-**SkyWalking Rover**: A collector based on eBPF technology, deployed in the 
target monitoring system to collect metrics, perf profiling, network 
optimization, etc.
+**SkyWalking Rover**: Metrics collector and ebpf-based profiler for C, C++, 
and Golang.
 
 [![GitHub 
stars](https://img.shields.io/github/stars/apache/skywalking.svg?style=for-the-badge&label=Stars&logo=github)](https://github.com/apache/skywalking)
 [![Twitter 
Follow](https://img.shields.io/twitter/follow/asfskywalking.svg?style=for-the-badge&label=Follow&logo=twitter)](https://twitter.com/AsfSkyWalking)
 
 # Documentation
-- [The Design of SkyWalking 
Rover](https://docs.google.com/document/d/1hT9q8WA6fchQyL3tzDX-13_sZwqrBoMh_mvjlG5z9e4/edit?usp=sharing).
+- [Official documentation](https://skywalking.apache.org/docs/#SkyWalkingRover)
 
 # Download
 
diff --git a/dist/bin/startup.sh b/dist/bin/startup.sh
new file mode 100755
index 0000000..bf634c8
--- /dev/null
+++ b/dist/bin/startup.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+
+HOME_DIR="$(cd "$(dirname "$0")" && cd .. && pwd)"
+BIN_DIR=${HOME_DIR}/bin
+LOG_DIR=${HOME_DIR}/logs
+CONFIG_DIR=${HOME_DIR}/configs
+LOG_FILE_LOCATION=${LOG_DIR}/rover.log
+
+if [ ! -d "${LOG_DIR}" ]; then
+ mkdir -p "${LOG_DIR}"
+fi
+
+START_UP_PROCESS=$(find "$BIN_DIR" -name "skywalking-rover*linux*")
+
+eval exec "$START_UP_PROCESS" start --config="$CONFIG_DIR"/rover_configs.yaml 
1> "$LOG_FILE_LOCATION" 2>&1 &
+
+if [ $? -eq 0 ]; then
+ sleep 1
+ echo "SkyWalking Rover started successfully!"
+else
+ echo "SkyWalking Rover started failure!"
+ exit 1
+fi
\ No newline at end of file
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000..9a8fa1d
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,14 @@
+# Welcome
+**Here are SkyWalking Rover official documentation. You're welcome to join 
us.**
+
+From here you can learn all about **SkyWalking Rover's** architecture, and how 
to deploy and use SkyWalking Rover.
+
+- [Concepts and Designs](en/concepts-and-designs/overview.md). The most 
important core ideas about SkyWalking Rover. You can learn from here if you 
want to understand what is going on under our cool features.
+
+- [Setup](en/setup/overview.md). Introduce how to set up the SkyWalking Rover.
+
+- [Guides](en/guide/README.md). Guide users to develop or debug SkyWalking 
Rover.
+
+We're always looking for help to improve our documentation and codes, so 
please don’t hesitate to [file an 
issue](https://github.com/apache/skywalking/issues/new)
+if you see any problem.
+Or better yet, submit your contributions through a pull request to help make 
them better.
\ No newline at end of file
diff --git a/docs/en/concepts-and-designs/module_design.md 
b/docs/en/concepts-and-designs/module_design.md
new file mode 100644
index 0000000..e2c752f
--- /dev/null
+++ b/docs/en/concepts-and-designs/module_design.md
@@ -0,0 +1,38 @@
+# Module Design
+## Overview
+
+The module is an isolation concept in Rover. Each module completes an 
independent feature.
+
+## Life Cycle
+
+Each concept has a complete life cycle.
+
+- Start: Start phase is to start the current module.
+- NotifyStartSuccess: Execute when all modules have finished starting without 
any errors.
+- Shutdown: The shutdown phase is to close all the used resources.
+
+## Config
+
+Each module has its corresponding configurations and only when they're set in 
the configuration file, the module would be enabled.
+
+The config data support various data structures, and it could use 
`${ENV_NAME:DEFAULT}` to read the value from the environment variables.
+
+## Dependency
+
+There may have dependencies between modules.
+
+For example, process and profiling are two separate modules, the profiling 
module needs to read all registered processes from the processing module. So, 
we could say the profiling module is dependent on the process module.
+
+### Module API
+
+Modules can communicate by calling APIs from dependent modules.
+
+### Start Sequence
+
+When Rover starts, it would analyze the dependency order of all enabled 
modules to a startup module list.
+
+The startup sequence is following these steps:
+1. Modules have the fewest dependent modules.
+2. The position of the module declaration in the configuration file.
+
+After parsing the list of startup modules, it would be started sequentially in 
a single-threaded manner.
\ No newline at end of file
diff --git a/docs/en/concepts-and-designs/overview.md 
b/docs/en/concepts-and-designs/overview.md
new file mode 100644
index 0000000..b14148c
--- /dev/null
+++ b/docs/en/concepts-and-designs/overview.md
@@ -0,0 +1,18 @@
+# Overview
+
+SkyWalking Rover is an open-source collector, which provides a metrics 
collector and eBPF-based profiler for C, C++, and Golang.
+
+## Why use SkyWalking Rover?
+
+On the Linux platform, we could collect a lot of telemetry data. Rover could 
collect them based on the eBPF technology,
+and upload them to the SkyWalking backend for analysis, aggregate, and 
visualize them.
+
+1. EBPF based profiling for C, C++, and Golang.
+
+## Architecture
+
+![architecture.png](https://skywalking.apache.org/doc-graph/skywalking-rover/v0.1.0/architecture.png)
+
+- **Process** represents the data monitored by Rover.
+- **Rover** is deployed in the VM instance, collects data in VM and Process, 
and reports it to the OAP cluster.
+- **OAP** collect data from the rover side, analysis, and storage them.
\ No newline at end of file
diff --git a/docs/en/concepts-and-designs/project_structue.md 
b/docs/en/concepts-and-designs/project_structue.md
new file mode 100644
index 0000000..1d2b2b3
--- /dev/null
+++ b/docs/en/concepts-and-designs/project_structue.md
@@ -0,0 +1,29 @@
+# Project Structure
+- cmd: The starter of Rover.
+- configs: Rover configs.
+- bpf: All the BPF programs with C code.
+- pkg: Contains all modules and basic framework.
+    - boot: Manage all enabled module life cycle.
+    - config: Read config for start.
+    - logger: Manage the log.
+    - tools: Sharing tools for each module.
+- script/build: For `make` command use.
+- test/e2e: E2E test to verify the Rover future.
+```
+.
+├── CHANGES.md
+├── cmd
+├── configs
+├── docs
+├── go.sum
+├── script
+│   ├── build
+├── pkg
+│   ├── boot
+│   ├── config
+│   ├── logger
+│   ├── tools
+│   ├── modules
+├── test
+│   ├── e2e
+```
\ No newline at end of file
diff --git a/docs/en/guide/README.md b/docs/en/guide/README.md
new file mode 100644
index 0000000..eef8bbe
--- /dev/null
+++ b/docs/en/guide/README.md
@@ -0,0 +1,7 @@
+# Guides
+If you want to debug or develop SkyWalking Rover, The following documentations 
would guide you.
+
+- Contribution
+    - [How to contribute a module?](./contribution/how-to-write-module.md)
+- Compile
+    - [How to compile SkyWalking Rover?](./compile/how-to-compile.md)
\ No newline at end of file
diff --git a/docs/en/guide/compile/how-to-compile.md 
b/docs/en/guide/compile/how-to-compile.md
new file mode 100644
index 0000000..2b51725
--- /dev/null
+++ b/docs/en/guide/compile/how-to-compile.md
@@ -0,0 +1,27 @@
+# Compiling
+
+## Go version
+
+Go version `1.17` or higher is supported for compilation.
+
+## Platform
+
+### Linux
+
+Linux version >= `4.4`, and dependency these tools:
+1. `llvm` >= 13.
+2. `libbpf-dev`.
+
+### MacOS or Windows
+
+Make sure it already has docker environment.
+
+## Command
+```shell script
+git clone https://github.com/apache/skywalking-rover
+cd skywalking-rover
+# Linux platform
+make generate build
+# MacOS or Windows
+make container-generate build
+```
\ No newline at end of file
diff --git a/docs/en/guide/contribution/how-to-write-module.md 
b/docs/en/guide/contribution/how-to-write-module.md
new file mode 100644
index 0000000..186de18
--- /dev/null
+++ b/docs/en/guide/contribution/how-to-write-module.md
@@ -0,0 +1,18 @@
+# How to write a new module?
+
+If you want to add a custom module to SkyWalking Rover, the following contents 
would guide you.
+Let's use the profiling module as an example of how to write a module.
+
+1. Please read the [Module 
Design](../../concepts-and-designs/module_design.md) to understand what is 
module.
+2. The module should be written in the **skywalking-rover/pkg** directory. So 
we create a new directory called profiling as the module codes space.
+3. Implement the interface in the **skywalking-rover/pkg/module**. Each module 
has 6 methods, which are Name, RequiredModules, Config, Start, 
NotifyStartSuccess, and Shutdown.
+   - Name returns the unique name of the module, also this name is used to 
define in the configuration file.
+   - RequiredModules returns this needs depended on module names. In the 
profiling module, it needs to query the existing process and send snapshots to 
the backend, so it needs the core and process module.
+   - Config returns the config content of this module, which relate to the 
configuration file, and you could declare the tag(`mapstructure`) with the 
field to define the name in the configuration file.
+   - Start is triggered when the module needs to start. if this module start 
failure, please return the error.
+   - NotifyStartSuccess is triggered after all the active modules are Start 
method success.
+   - Shutdown
+4. Add the configuration into the 
**skywalking-rover/configs/rover_configs.yaml**. It should same as the config 
declaration.
+5. Register the module into **skywalking-rover/pkg/boot/register.go**.
+6. Add the Unit test or E2E testing for testing the module is works well.
+7. Write the documentation under the **skywalking-rover/docs/en** directory 
and add it to the documentation index file **skywalking-rover/docs/menu.yml**.
\ No newline at end of file
diff --git a/docs/en/setup/configuration/core.md 
b/docs/en/setup/configuration/core.md
new file mode 100644
index 0000000..45e07d9
--- /dev/null
+++ b/docs/en/setup/configuration/core.md
@@ -0,0 +1,17 @@
+# Core Module
+
+Core Module is used to communicate with the backend server.
+It provides APIs for other modules to establish connections with the backend.
+
+## Configuration
+
+| Name | Default | Environment Key | Description |
+|------|---------|-----------------|-------------|
+| core.backend.addr | localhost:11800 | ROVER_BACKEND_ADDR | The backend 
server address. |
+| core.backend.enable_TLS | false | ROVER_BACKEND_ENABLE_TLS | The TLS switch. 
|
+| core.backend.client_pem_path | client.pem | ROVER_BACKEND_PEM_PATH | The 
file path of client.pem. The config only works when opening the TLS switch.|
+| core.backend.client_key_path | client.key | ROVER_BACKEND_KEY_PATH | The 
file path of client.key. The config only works when opening the TLS switch.|
+| core.backend.insecure_skip_verify | false | 
ROVER_BACKEND_INSECURE_SKIP_VERIFY | InsecureSkipVerify controls whether a 
client verifies the server's certificate chain and host name. |
+| core.backend.ca_pem_path | ca.pem | ROVER_BACKEND_CA_PEM_PATH | The file 
path oca.pem. The config only works when opening the TLS switch. |
+| core.backend.check_period | 5 | ROVER_BACKEND_CHECK_PERIOD | How frequently 
to check the connection(second). |
+| core.backend.authentication | | ROVER_BACKEND_AUTHENTICATION | The auth 
value when send request. |
\ No newline at end of file
diff --git a/docs/en/setup/configuration/override-settings.md 
b/docs/en/setup/configuration/override-settings.md
new file mode 100644
index 0000000..d90b189
--- /dev/null
+++ b/docs/en/setup/configuration/override-settings.md
@@ -0,0 +1,17 @@
+# Setting Override
+SkyWalking Rover supports setting overrides by system environment variables. 
+You could override the settings in `rover_configs.yaml`
+
+## System environment variables
+- Example
+
+  Override `core.backend.addr` in this setting segment through environment 
variables
+  
+```yaml
+core:
+  backend: 
+    addr: ${ROVER_BACKEND_ADDR:localhost:11800}
+```
+
+If the `ROVER_BACKEND_ADDR ` environment variable exists in your operating 
system and its value is `oap:11800`, 
+then the value of `core.backend.addr` here will be overwritten to `oap:11800`, 
otherwise, it will be set to `localhost:11800`.
\ No newline at end of file
diff --git a/docs/en/setup/configuration/process_discovery/linux.md 
b/docs/en/setup/configuration/process_discovery/linux.md
new file mode 100644
index 0000000..a66bdac
--- /dev/null
+++ b/docs/en/setup/configuration/process_discovery/linux.md
@@ -0,0 +1,68 @@
+# Linux Process Detector
+
+The Linux process detector could detect any process in the Linux with finders.
+Each finder could define a regex to filter which processes declare to 
monitored, and the metadata of the process when the report to the backend.
+
+## Configuration
+
+| Name | Default | Environment Key | Description |
+|------|---------|-----------------|-------------|
+| process_discovery.vm.active | false | ROVER_PROCESS_DISCOVERY_VM_ACTIVE | Is 
active the VM mode to detect processes. |
+| process_discovery.vm.period | 3s | ROVER_PROCESS_DISCOVERY_VM_PERIOD | The 
period to detect the process. |
+| process_discovery.vm.finders | | | It could be define multiple finders to 
find the process. It only provide one finder by default. |
+| process_discovery.vm.finders.match_cmd_regex | | 
ROVER_PROCESS_DISCOVERY_VM_FINDER_MATCH_CMD_REGEX | Use regex string to locate 
the process from the command line of the process. |
+| process_discovery.vm.finders.layer | OS_LINUX | 
ROVER_PROCESS_DISCOVERY_VM_FINDER_LAYER | The Layer of the process entity |
+| process_discovery.vm.finders.service_name | | 
ROVER_PROCESS_DISCOVERY_VM_FINDER_SERVICE_NAME | The Service Name of the 
process entity. |
+| process_discovery.vm.finders.instance_name | {{.Rover.HostIPV4 "en0"}} | 
ROVER_PROCESS_DISCOVERY_VM_FINDER_INSTANCE_NAME | The Service Instance Name of 
the process entity, by default, the instance name is the host IP v4 address 
from "en0" net interface. |
+| process_discovery.vm.finders.process_name | {{.Process.ExeName}} | 
ROVER_PROCESS_DISCOVERY_VM_FINDER_PROCESS_NAME | The Process Name of the 
process entity, by default, the process name is the executable name of the 
process. |
+| process_discovery.vm.finders.labels | | 
ROVER_PROCESS_DISCOVERY_VM_FINDER_PROCESS_LABELS | The Process Labels, used to 
aggregate similar process from service entity. Multiple labels split by ",". |
+
+### Note
+
+The duplicate processes entities cannot be reported. If multiple entities are 
generated, only one process will be reported.
+If the multiple finders could match the same process, only the first finder 
could be selected and reported.
+
+## Entity Builder
+
+The metadata of the process could build by the Go Template to help dynamically 
build them, also, you could just configure it as the string value, and it still 
works.
+
+These fields are supported using template to build:
+1. Service Name
+2. Service Instance Name
+3. Process NAme
+
+### Context
+
+The context provides multiple functions for helping you build the process 
metadata.
+
+#### Rover
+
+Rover context provides the context of the rover process instance and VM data.
+
+| Name | Argument |  Example  | Description |
+|------|--------- |-----------|-------------|
+| InstanceID | None | `{{.Rover.InstanceID}}` | Get the Instance ID of the 
rover. |
+| HostIPV4 | The Interface name | `{{.Rover.HostIPV4 "en0"}}` | Get the ipv4 
address from the appointed network interface name. |
+| HostIPV6 | The Interface name | `{{.Rover.HostIPV6 "en0"}}` | Get the ipv6 
address from the appointed network interface name. |
+| HostName | None | `{{.Rover.HostName}}` | Get the host name of current 
machine.|
+
+#### Finder
+
+Finder context provides the context of the current process finder.
+
+| Name | Argument |  Example  | Description |
+|------|--------- |-----------|-------------|
+| Layer | None | `{{.Finder.Layer}}` | The layer of the current process which 
defines in the configuration | 
+| RegexMatchGroup | The index of the regex pattern | 
`{{.Finder.RegexMatchGroup 1}}`| When using the regex to match the process 
command line, it could use the group concept in the regex. This function could 
help you get the group value from it. |
+
+#### Process
+
+Process context provides the context relate to which process is matched.
+
+| Name | Argument |  Example  | Description |
+|------|--------- |-----------|-------------|
+| ExeFilePath | None | `{{.Process.ExeFilePath}}` | The execute file path of 
process. |
+| ExeName | None | `{{.Process.ExeName}}` | The execute file name. |
+| CommandLine | None | `{{.Process.CommandLine}}` | The command line of 
process. |
+| Pid | None | `{{.Process.Pid}}` | The id of the process. |
+| WorkDir | None | `{{.Process.WorkDir}}` | The work directory path of the 
process. |
\ No newline at end of file
diff --git a/docs/en/setup/configuration/process_discovery/overview.md 
b/docs/en/setup/configuration/process_discovery/overview.md
new file mode 100644
index 0000000..0c09963
--- /dev/null
+++ b/docs/en/setup/configuration/process_discovery/overview.md
@@ -0,0 +1,15 @@
+# Process Discovery Module
+
+The process Discovery module is used to discover the existing processes in the 
current machine and report them to the backend service.
+After the process upload is completed, the other modules could perform more 
operations with the process, such as process profiling and collecting process 
metrics.
+
+## Configuration
+
+| Name | Default | Environment Key | Description |
+|------|---------|-----------------|-------------|
+| process_discovery.heartbeat_period | 20s | 
ROVER_PROCESS_DISCOVERY_HEARTBEAT_PERIOD | The period of report or keep alive 
process to the backend. |
+
+## Process Detector
+
+Process Detector is used to detect the process from the VM with the different 
environment:
+1. [Linux Process Detector](./linux.md)
\ No newline at end of file
diff --git a/docs/en/setup/configuration/profiling.md 
b/docs/en/setup/configuration/profiling.md
new file mode 100644
index 0000000..46a27c6
--- /dev/null
+++ b/docs/en/setup/configuration/profiling.md
@@ -0,0 +1,27 @@
+# Profiling Module
+
+The profiling module is used to profiling the processes from the [Process 
Discovery Module](../process_discovery/overview.md),
+and send the snapshot to the backend server.
+
+## Configuration
+
+| Name | Default | Environment Key | Description |
+|------|---------|-----------------|-------------|
+| profiling.active | true | ROVER_PROFILING_ACTIVE | Is active the process 
profiling. |
+| profiling.check_interval | 10s | ROVER_PROFILING_CHECK_INTERVAL | Check the 
profiling task interval. |
+| profiling.flush_interval | 5s | Combine existing profiling data and report 
to the backend interval |
+
+## Profiling Type
+
+All the profiling tasks is using the [Linux Official 
Function](https://man7.org/linux/man-pages/man2/perf_event_open.2.html) to open 
perf event,
+and attach the eBPF Program to dump stacks.
+
+### On CPU
+
+On CPU Profiling task is using `PERF_COUNT_SW_CPU_CLOCK` to profiling the 
process with the CPU clock.
+
+## Configuration
+
+| Name | Default | Environment Key | Description |
+|------|---------|-----------------|-------------|
+| profiling.task.on_cpu.dump_period | 9ms | 
ROVER_PROFILING_TASK_ON_CPU_DUMP_PERIOD | The profiling stack dump period. |
\ No newline at end of file
diff --git a/docs/en/setup/examples/cases/profiling-process/readme.md 
b/docs/en/setup/examples/cases/profiling-process/readme.md
new file mode 100644
index 0000000..edcd137
--- /dev/null
+++ b/docs/en/setup/examples/cases/profiling-process/readme.md
@@ -0,0 +1,88 @@
+# Profiling a Golang/C service on Linux
+
+This documentation helps you set up the configuration to find which processes 
want to be monitored and profiled.
+
+## Startup service
+
+Startup your service in the Linux, and make sure your service already have the 
symbol data inside the binary file.
+So we could locate the stack symbol, It could be checked following these ways:
+1. **objdump**: Using `objdump --syms path/to/service`.
+2. **readelf**: Using `readelf --syms path/to/service`.
+
+## Starting Rover
+
+### Enable Linux Process Detector
+
+After your service been startup, then configure the Linux process detector to 
let Rover known how to find service.
+Please make sure the Linux Process Detector have been active.
+
+Then configure the finder to locate/identity service. It contains these data 
configure:
+1. Regex to locate the service by command line.
+2. Update the process entity builder.
+
+#### Locate Service
+
+You could use the `ps -ef` and `grep` to filter the which process you want to 
profile. In this case, my service is `sqrt`.
+
+```shell
+$ ps -ef|grep sqrt
+root      2072    1790  0 14:59 pts/0    00:00:00 ./sqrt name=a
+```
+
+Follow the command example in above, you could see the last column showing the 
process command line is `./sqrt name=a`.
+We use the regex to filter the process, In this case, we could use `sqrt` as 
the service identity.
+
+#### Update Process Entity
+
+For the demo, we update the entity data as:
+1. **layer**: As the `OS_LINUX`.
+2. **service**: As the `sqrt`.
+3. **instance**: As local IPv4 address by network interface `en0`.
+4. **process**: As the executable file name: `sqrt`.
+5. **labels***: As empty.
+
+You could be following [this 
configuration](../../../configuration/process_discovery/linux.md) to get more 
configuration information.
+
+### Enable Profiling
+
+Make sure the profiling module has been active.
+
+You could be following [this 
configuration](../../../configuration/profiling.md) to get more configuration 
information.
+
+### Full Configuration
+
+Please follow the comment to update the backend address to your SkyWalking OAP 
address.
+
+```shell
+core:
+  backend:
+    addr: localhost:11800 # please change the backend address to your 
SkyWalking OAP address
+    enable_TLS: false
+    client_pem_path: "client.pem"
+    client_key_path: "client.key"
+    insecure_skip_verify: false
+    ca_pem_path: "ca.pem"
+    check_period: 5
+    authentication: ""
+    
+process_discovery:
+  heartbeat_period: 20s
+  vm:
+    active: true
+    period: 3s
+    finders:
+      - match_cmd_regex: sqrt
+        layer: OS_LINUX
+        service_name: sqrt
+        instance_name: {{.Rover.HostIPV4 "en0"}}
+        process_name: {{.Process.ExeName}}
+        labels: ""
+
+profiling:
+  active: true
+  check_interval: 10s
+  flush_interval: 5s
+  task:
+    on_cpu:
+      dump_period: 9ms
+```
diff --git a/docs/en/setup/examples/deploy/linux/readme.md 
b/docs/en/setup/examples/deploy/linux/readme.md
new file mode 100644
index 0000000..30c8545
--- /dev/null
+++ b/docs/en/setup/examples/deploy/linux/readme.md
@@ -0,0 +1,19 @@
+# Deploy on Linux
+
+## Install
+
+### Download
+
+Download the latest release version from [SkyWalking Release 
Page](https://skywalking.apache.org/downloads/#SkyWalkingRover).
+
+### Update the address of the backend
+
+Update the backend address in the config file, please read [this 
documentation](../../../configuration/core.md) for more detail.
+
+### Active Feature
+
+Active features need to use, please follow the [Use 
case](../../../overview.md#use-cases).
+
+### Start Rover
+
+Execute the script `bin/startup.sh` to start. Then It could print logging to 
this file: `logs/rover.log`.
\ No newline at end of file
diff --git a/docs/en/setup/overview.md b/docs/en/setup/overview.md
new file mode 100644
index 0000000..b2c7528
--- /dev/null
+++ b/docs/en/setup/overview.md
@@ -0,0 +1,39 @@
+# Setup
+
+The first and most important thing is, that SkyWalking Rover startup behaviors 
are driven by configs/rover_configs.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/demos.
+Usually, the process to be monitored is first declared.
+
+Then, you can use `bin/startup.sh` to start up the rover with their 
config[../../../configs/rover_configs.yaml].
+
+## Startup script
+Startup Script
+```shell script
+bin/startup.sh 
+```
+
+## Examples
+
+You can quickly build your Rover according to the following examples:
+
+### Deploy
+
+1. [Deploy on Linux](examples/deploy/linux/readme.md)
+
+### Use Cases
+
+1. [Profiling a Golang/C service on 
Linux](examples/cases/profiling-process/readme.md)
+
+## Configuration
+
+The core concept behind this setting file is, that SkyWalking Rover is based 
on pure modularization design. The end-user can switch or assemble the 
collector features to their requirements.
+
+So, in rover_configs.yaml, there contains these parts.
+1. [Core Module](./configuration/core.md).
+2. [Process Discovery Module](./configuration/process_discovery/overview.md).
+3. [Profiling Module](./configuration/profiling.md).
+
+Also, You could using [Overriding 
Setting](./configuration/override-settings.md) feature to setup the 
configuration.
\ No newline at end of file
diff --git a/docs/menu.yml b/docs/menu.yml
new file mode 100644
index 0000000..4fb0730
--- /dev/null
+++ b/docs/menu.yml
@@ -0,0 +1,67 @@
+# 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.
+
+catalog:
+    - name: Welcome
+      path: /readme
+    - name: Concepts and Designs
+      catalog:
+        - name: What is SkyWalking Rover?
+          catalog:
+            - name: Overview and Core Concepts
+              path: /en/concepts-and-designs/overview
+        - name: Design
+          catalog:
+            - name: Module Design
+              path: /en/concepts-and-designs/module_design
+            - name: Project Structure
+              path: /en/concepts-and-designs/project_structue
+    - name: Setup
+      catalog:
+        - name: Overview
+          path: /en/setup/overview
+        - name: Configuration
+          catalog:
+            - name: Core Module
+              path: /en/setup/configuration/core
+            - name: Process Discovery Module
+              catalog:
+                - name: Overview
+                  path: /en/setup/configuration/process_discovery/overview
+                - name: Linux Process Detector
+                  path: /en/setup/configuration/process_discovery/linux
+            - name: Profiling Module
+              path: /en/setup/configuration/profiling
+        - name: Examples
+          catalog:
+            - name: Deploy
+              catalog:
+                - name: Deploy on Linux
+                  path: /en/setup/examples/deploy/linux/readme
+            - name: Use Cases
+              catalog:
+                - name: Profiling a Golang/C service on Linux
+                  path: /en/setup/examples/cases/profiling-process/readme
+    - name: Guides
+      catalog:
+        - name: Contribution
+          catalog:
+            - name: How to Write a Module
+              path: /en/guides/contribution/how-to-write-module
+        - name: Compile
+          catalog:
+            - name: How to compile SkyWalking Rover
+              path: /en/guides/compile/how-to-compile

Reply via email to