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 8cd7adc Update project description and add access log documentation
(#108)
8cd7adc is described below
commit 8cd7adc8f2367717a86442b3432ae3eadd580194
Author: mrproliu <[email protected]>
AuthorDate: Thu Dec 28 16:54:20 2023 +0800
Update project description and add access log documentation (#108)
---
.asf.yaml | 2 +-
README.md | 3 +-
docs/en/concepts-and-designs/overview.md | 7 +-
docs/en/setup/configuration/accesslog.md | 47 +++++++++++
docs/en/setup/configuration/core.md | 20 ++---
docs/en/setup/configuration/logger.md | 6 +-
.../kubernetes.md => process-discovery.md} | 78 ++++++++++-------
.../configuration/process_discovery/overview.md | 17 ----
.../configuration/process_discovery/scanner.md | 97 ----------------------
docs/en/setup/configuration/profiling.md | 7 ++
.../en/setup/examples/cases/agent-sensor/readme.md | 50 -----------
.../examples/cases/profiling-process/readme.md | 88 --------------------
.../kubernetes}/readme.md | 8 +-
.../kubernetes}/rover-daemonset.yml | 2 +
docs/en/setup/examples/deploy/linux/readme.md | 19 -----
docs/en/setup/overview.md | 12 +--
docs/menu.yml | 22 ++---
17 files changed, 142 insertions(+), 343 deletions(-)
diff --git a/.asf.yaml b/.asf.yaml
index e1358e9..598d806 100644
--- a/.asf.yaml
+++ b/.asf.yaml
@@ -16,7 +16,7 @@
#
github:
- description: Metrics collector and profiler powered by eBPF to diagnose CPU
and network performance.
+ description: Monitor and profiler powered by eBPF to monitor network
traffic, and diagnose CPU and network performance.
homepage: https://skywalking.apache.org/
labels:
- skywalking
diff --git a/README.md b/README.md
index 9eca6e8..f117c60 100644
--- a/README.md
+++ b/README.md
@@ -3,11 +3,12 @@ Apache SkyWalking Rover
<img src="http://skywalking.apache.org/assets/logo.svg" alt="Sky Walking logo"
height="90px" align="right" />
-**SkyWalking Rover**: Metrics collector and profiler powered by eBPF to
diagnose CPU and network performance.
+**SkyWalking Rover**: Monitor and profiler powered by eBPF to monitor network
traffic, and diagnose CPU and network performance.
- CPU On/Off profiling for C, C++, Golang, and Rust.
- Network profiling for TCP, TCP(TLS), HTTP(s) traffic with topology and
metrics.
- Tracing enhancement. Collect extra information from OS level as attached
events for the existing tracing system, such as attach raw data of HTTP request
and reponse.
+- Kubernetes network monitoring for generating network access logs.
[](https://github.com/apache/skywalking)
[](https://twitter.com/AsfSkyWalking)
diff --git a/docs/en/concepts-and-designs/overview.md
b/docs/en/concepts-and-designs/overview.md
index ac4ebf1..cb111ef 100644
--- a/docs/en/concepts-and-designs/overview.md
+++ b/docs/en/concepts-and-designs/overview.md
@@ -1,15 +1,16 @@
# Overview
-SkyWalking Rover is an open-source collector, which provides a metrics
collector and eBPF-based profiler for C, C++, Golang, and Rust.
+SkyWalking Rover is an open-source collector, which provides a eBPF-based
monitor and profiler in the Kubernetes.
## 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,
+On the Kubernetes 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++, Golang, and Rust.
2. Network profiling for L4(TCP) and L7(HTTP) traffic, including with TLS.
-3. Tracing enhancement. Collect extra information from OS level as attached
events for the existing tracing system, such as attach raw data of HTTP request
and reponse.
+3. Tracing enhancement. Collect extra information from OS level as attached
events for the existing tracing system, such as attach raw data of HTTP request
and response.
+4. Network monitoring for generating network access logs.
## Architecture
diff --git a/docs/en/setup/configuration/accesslog.md
b/docs/en/setup/configuration/accesslog.md
new file mode 100644
index 0000000..048e864
--- /dev/null
+++ b/docs/en/setup/configuration/accesslog.md
@@ -0,0 +1,47 @@
+# Access Log Module
+
+The access log module is used to collecting the network access logs from the
[Kerbernetes Module](process_discovery/kubernetes.md),
+and send [access
logs](https://github.com/apache/skywalking-data-collect-protocol/blob/master/ebpf/accesslog.proto)
to the backend server for analyze.
+
+## Configuration
+
+| Name | Default | Environment Key
| Description
|
+|--------------------------------------------|---------|--------------------------------------------------|------------------------------------------------------------|
+| access_log.active | false |
ROVER_ACCESS_LOG_ACTIVE | Is active the access log
monitoring. |
+| access_log.flush.max_count | 2000 |
ROVER_ACCESS_LOG_FLUSH_MAX_COUNT | The max count of the access
log when flush to the backend. |
+| access_log.flush.period | 5s |
ROVER_ACCESS_LOG_FLUSH_PERIOD | The period of flush access
log to the backend. |
+| access_log_protocol_analyze.per_cpu_buffer | 400KB |
ROVER_ACCESS_LOG_PROTOCOL_ANALYZE_PER_CPU_BUFFER | The size of socket data
buffer on each CPU. |
+| access_log.protocol_analyze.parallels | 2 |
ROVER_ACCESS_LOG_PROTOCOL_ANALYZE_PARALLELS | The count of parallel
protocol analyzer. |
+| access_log.protocol_analyze.queue_size | 5000 |
ROVER_ACCESS_LOG_PROTOCOL_ANALYZE_QUEUE_SIZE | The size of per paralleled
analyze queue. |
+
+
+## Collectors
+
+### Socket Connect/Accept/Close
+
+Monitor all socket `connect`, `accept`, and `close` events from monitored
processes by attaching eBPF program to the respective [trace
points](https://docs.kernel.org/trace/tracepoints.html).
+
+### Socket traffic
+
+Capture all socket traffic from monitored processes by attaching eBPF program
to [network
syscalls](https://linasm.sourceforge.net/docs/syscalls/network.php).
+
+#### Protocol
+
+Data collection is followed by protocol analysis. Currently, the supported
protocols include:
+
+1. HTTP/1.x
+2. HTTP/2
+
+Note: As HTTP2 is a stateful protocol, it only supports monitoring processes
that start after monitor. Processes already running at the time of monitoring
may fail to provide complete data, leading to unsuccessful analysis.
+
+#### TLS
+
+When a process uses the TLS protocol for data transfer, Rover monitors
libraries such as OpenSSL, BoringSSL, GoTLS, and NodeTLS to access the raw
content.
+This feature is also applicable for protocol analysis.
+
+Note: the parsing of TLS protocols in Java is currently not supported.
+
+#### L2-L4
+
+During data transmission, Rover records each packet's through the network
layers L2 to L4 using [kprobes](https://docs.kernel.org/trace/kprobes.html).
+This approach enhances the understanding of each packet's transmission
process, facilitating easier localization and troubleshooting of network issues.
diff --git a/docs/en/setup/configuration/core.md
b/docs/en/setup/configuration/core.md
index 45e07d9..618a174 100644
--- a/docs/en/setup/configuration/core.md
+++ b/docs/en/setup/configuration/core.md
@@ -5,13 +5,13 @@ 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
+| 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/logger.md
b/docs/en/setup/configuration/logger.md
index 0b9f26e..60a73e1 100644
--- a/docs/en/setup/configuration/logger.md
+++ b/docs/en/setup/configuration/logger.md
@@ -4,6 +4,6 @@ Logger module is used to configure the system log.
## Configuration
-| Name | Default | Environment Key | Description |
-|------|---------|-----------------|-------------|
-| logger.level | INFO | ROVER_LOGGER_LEVEL | The lowest level of printing
allowed. |
\ No newline at end of file
+| Name | Default | Environment Key | Description
|
+|---------------|---------|---------------------|----------------------------------------|
+| logger.level | INFO | ROVER_LOGGER_LEVEL | The lowest level of printing
allowed. |
\ No newline at end of file
diff --git a/docs/en/setup/configuration/process_discovery/kubernetes.md
b/docs/en/setup/configuration/process-discovery.md
similarity index 65%
rename from docs/en/setup/configuration/process_discovery/kubernetes.md
rename to docs/en/setup/configuration/process-discovery.md
index 1291948..60ee2b8 100644
--- a/docs/en/setup/configuration/process_discovery/kubernetes.md
+++ b/docs/en/setup/configuration/process-discovery.md
@@ -1,41 +1,48 @@
-# Kubernetes Process Detector
+# 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_discovery.properties_report_period | 10 |
ROVER_PROCESS_DISCOVERY_PROPERTIES_REPORT_PERIOD | The agent sends the process
properties to the backend every: heartbeart period * properties report period.
|
+| process_discovery.kubernetes.active | false |
ROVER_PROCESS_DISCOVERY_KUBERNETES_ACTIVE | Is active the kubernetes
process discovery.
|
+| process_discovery.kubernetes.node_name | |
ROVER_PROCESS_DISCOVERY_KUBERNETES_NODE_NAME | Current deployed node name,
it could be inject by `spec.nodeName`.
|
+| process_discovery.kubernetes.namespaces | |
ROVER_PROCESS_DISCOVERY_KUBERNETES_NAMESPACES | Including pod by namespaces,
if empty means including all namespaces. Multiple namespaces split by ",".
|
+| process_discovery.kubernetes.analyzers | |
| Declare how to build the process. The
istio and k8s resources are active by default.
|
+| process_discovery.kubernetes.analyzers.active | |
| Set is active analyzer.
|
+| process_discovery.kubernetes.analyzers.filters | |
| Define which process is match to current
process builder.
|
+| process_discovery.kubernetes.analyzers.service_name | |
| The Service Name of the process entity.
|
+| process_discovery.kubernetes.analyzers.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.kubernetes.analyzers.process_name | |
| The Process Name of the process entity,
by default, the process name is the executable name of the process.
|
+| process_discovery.kubernetes.analyzers.labels | |
| The Process Labels, used to aggregate
similar process from service entity. Multiple labels split by ",".
|
+
+## Kubernetes Process Detector
The Kubernetes process detector could detect any process under the Kubernetes
container.
If active the Kubernetes process detector, the rover must be deployed in the
Kubernetes cluster.
After finding the process, it would collect the metadata of the process when
the report to the backend.
-## Configuration
-
-| Name | Default | Environment
Key | Description
|
-|------------------------------------------------------|---------|-----------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------|
-| process_discovery.kubernetes.active | false |
ROVER_PROCESS_DISCOVERY_KUBERNETES_ACTIVE | Is active the kubernetes
process discovery.
|
-| process_discovery.kubernetes.node_name | |
ROVER_PROCESS_DISCOVERY_KUBERNETES_NODE_NAME | Current deployed node name, it
could be inject by `spec.nodeName`.
|
-| process_discovery.kubernetes.namespaces | |
ROVER_PROCESS_DISCOVERY_KUBERNETES_NAMESPACES | Including pod by namespaces, if
empty means including all namespaces. Multiple namespaces split by ",".
|
-| process_discovery.kubernetes.analyzers | |
| Declare how to build the process. The istio
and k8s resources are active by default.
|
-| process_discovery.kubernetes.analyzers.active | |
| Set is active analyzer.
|
-| process_discovery.kubernetes.analyzers.filters | |
| Define which process is match to current
process builder.
|
-| process_discovery.kubernetes.analyzers.service_name | |
| The Service Name of the process entity.
|
-| process_discovery.kubernetes.analyzers.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.kubernetes.analyzers.process_name | |
| The Process Name of the process entity, by
default, the process name is the executable name of the process.
|
-| process_discovery.kubernetes.analyzers.labels | |
| The Process Labels, used to aggregate
similar process from service entity. Multiple labels split by ",".
|
-
-## Process Analyze
+### Process Analyze
The process analysis declares which process could be profiled and how to build
the process entity.
The Istio and Kubernetes resources are active on default.
-### Filter
+#### Filter
The filter provides an expression(go template) mechanism to match the process
that can build the entity. Multiple expressions work together to determine
whether the process can create the entity.
Each expression must return the boolean value. Otherwise, the decision throws
an error.
The context is similar to the entity builder. Using context could help the
rover understand which process could build the entity.
-#### Process Context
+##### Process Context
Is the same with the [process context in scanner](./scanner.md#process), but
doesn't need to add the `{{` and `}}` in prefix and suffix.
-#### Pod Context
+##### Pod Context
Provide current pod information and judgments.
@@ -51,7 +58,7 @@ Provide current pod information and judgments.
| HasServiceName | None | `.Pod.HasServiceName` |
The pod has the matched service.
|
| HasOwnerName | kindNames | `.Pod.HasOwnerName "Service,Deployment"` |
The pod has the matched owner name.
|
-#### Container Context
+##### Container Context
Provide current container(under the pod) information.
@@ -59,20 +66,35 @@ Provide current container(under the pod) information.
|-------|----------|-------------------------------------|------------------------------------------------------------------------------------------------------------------|
| Name | None | `eq .Container.Name "istio-proxy"` | The name of the
current container under the pod. The examples show the container name is equal
to `istio-proxy`. |
-### Entity
+#### Entity
The entity including `layer`, `serviceName`, `instanceName`, `processName` and
`labels` properties.
The entity also could use expression to build(`serviceName`, `instanceName`
and `processName`).
-#### Rover
+##### 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. |
-Same with the [rover context in the scanner](./scanner.md#rover).
+##### Process
-#### Process
+Process context provides the context relate to which process is matched.
-Same with the [process context in the scanner](./scanner.md#process).
+| 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. |
-#### Pod
+##### Pod
The information on the current pod.
@@ -86,7 +108,7 @@ The information on the current pod.
| FindContainer | ContainerName | `{{.Pod.FindContainer "test"}}`
| Find the Container context by container name.
|
| OwnerName | KindNames | `{{.Pod.OwnerName
"Service,Deployment"}}` | Find the Owner name by owner kind name.
|
-#### Container
+##### Container
The information of the current container under the pod.
diff --git a/docs/en/setup/configuration/process_discovery/overview.md
b/docs/en/setup/configuration/process_discovery/overview.md
deleted file mode 100644
index b3c574c..0000000
--- a/docs/en/setup/configuration/process_discovery/overview.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# 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_discovery.properties_report_period | 10 |
ROVER_PROCESS_DISCOVERY_PROPERTIES_REPORT_PERIOD | The agent sends the process
properties to the backend every: heartbeart period * properties report period. |
-
-## Process Detector
-
-Process Detector is used to detect the process from the VM with the different
environments:
-1. [Linux Process Scanner](./scanner.md)
-2. [Kubernetes Process Detector](./kubernetes.md)
diff --git a/docs/en/setup/configuration/process_discovery/scanner.md
b/docs/en/setup/configuration/process_discovery/scanner.md
deleted file mode 100644
index 133285b..0000000
--- a/docs/en/setup/configuration/process_discovery/scanner.md
+++ /dev/null
@@ -1,97 +0,0 @@
-# Linux Process Detector
-
-The Linux process scanner could detect any process in Linux with finders. It
has two modes:
-1. **REGEX**: could define a regex to filter which processes declare to
monitor.
-2. **AGENT_SENSOR**: scan recent active agents which have process status hook.
-
-After finding the process, it would collect the metadata of the process when
the report to the backend.
-
-## Configuration
-
-| Name | Default | Environment Key | Description |
-|------|---------|-----------------|-------------|
-| process_discovery.scanner.period | 3s | ROVER_PROCESS_DISCOVERY_SCAN_PERIOD
| The period to detect the process. |
-| process_discovery.scanner.mode | AGENT_SENSOR |
ROVER_PROCESS_DISCOVERY_SCAN_MODE | The process detection modes of the scanner.
Support "REGEX", "AGENT_SENSOR". |
-| process_discovery.scanner.agent | | | Active when using the "AGENT_SENSOR"
mode scanner. |
-| process_discovery.scanner.agent.process_status_refresh_period | 1m |
ROVER_PROCESS_DISCOVERY_AGENT_PROCESS_STATUS_REFRESH_PERIOD | Set the agent
refresh period. |
-| process_discovery.scanner.regex | | | Active when using the "REGEX" mode
scanner, it supports using multiple regex to matches difference processes. |
-| process_discovery.scanner.regex.match_cmd | |
ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_MATCH_CMD | Use regex string to locate
the process from the command line of the process. |
-| process_discovery.scanner.regex.layer | OS_LINUX |
ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_LAYER | The Layer of the process entity |
-| process_discovery.scanner.regex.service_name | |
ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_SERVICE_NAME | The Service Name of the
process entity. |
-| process_discovery.scanner.regex.instance_name | {{.Rover.HostIPV4 "en0"}} |
ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_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.scanner.regex.process_name | {{.Process.ExeName}} |
ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_PROCESS_NAME | The Process Name of the
process entity, by default, the process name is the executable name of the
process. |
-| process_discovery.scanner.regex.labels | |
ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_LABELS | The Process Labels, used to
aggregate similar process from service entity. Multiple labels split by ",". |
-
-## Agent Sensor Mode
-
-Agent Sensor mode scanner could scan processes that have installed the
skywalking agent and report them.
-
-### Process Status Hook File Protocol
-
-The agent must be implemented the process status hook file protocol, then the
rover could be collected the information on the process.
-
-This protocol is mainly a metadata file, which contains the metadata of the
process.
-It should be saved in:
`{TMPDIR}/apache_skywalking/process/{pid}/metadata.properties`, and update
modify time with the interval to keep alive, the content in the `properties`
format as below:
-
-| Key | Type | Description |
-|-----|------|------------|
-|layer|string|this process layer.|
-|service_name|string|this process service name.|
-|instance_name|string|this process instance name.|
-|process_name|string|this process process name, it's same with the instance
name.|
-|properties|json|the properties in instance, the process labels also in the
properties value.|
-|labels|string|the process labels, multiple labels split by ",".|
-|language|string|current process language, which is `golang`.|
-
-## Regex Mode
-
-Regex mode scanner could define a regex to filter which process declare to
monitor by command line.
-Multiple regexes can be defined to match different types of processes.
-
-Note, that 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 the 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/profiling.md
b/docs/en/setup/configuration/profiling.md
index fc4263e..742b36a 100644
--- a/docs/en/setup/configuration/profiling.md
+++ b/docs/en/setup/configuration/profiling.md
@@ -24,6 +24,13 @@ and send the snapshot to the backend server.
| profiling.continuous.trigger.execute_duration
| 10m | ROVER_PROFILING_CONTINUOUS_TRIGGER_EXECUTE_DURATION
| The duration of the profiling task.
|
| profiling.continuous.trigger.silence_duration
| 20m | ROVER_PROFILING_CONTINUOUS_TRIGGER_SILENCE_DURATION
| The minimal duration between the execution of the
same profiling task. |
+## Prepare service
+
+Before profiling your service, please make sure your service already has 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`.
+
## Profiling Type
All the profiling tasks are using the [Linux Official
Function](https://man7.org/linux/man-pages/man2/perf_event_open.2.html) and
`kprobe` or `uprobe` to open perf event,
diff --git a/docs/en/setup/examples/cases/agent-sensor/readme.md
b/docs/en/setup/examples/cases/agent-sensor/readme.md
deleted file mode 100644
index 1630207..0000000
--- a/docs/en/setup/examples/cases/agent-sensor/readme.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# Detect Process by Agent Sensor
-
-This documentation helps you to set up a service that could let rover detected
automatically.
-
-## Configure Service
-
-Configure your service to enable the Process Status Hook feature. Take
[go2sky](https://github.com/SkyAPM/go2sky) as an example here, which version
must `>= v1.5.0`.
-
-```go
-// update the oap address here
-r, err := reporter.NewGRPCReporter("oap-skywalking:11800",
reporter.WithProcessStatusHook(true))
-if err != nil {
- log.Fatalf("new reporter error %v \n", err)
-}
-defer r.Close()
-tracer, err := go2sky.NewTracer("example", go2sky.WithReporter(r))
-```
-
-The `reporter.WithProcessStatusHook(true)` declares to enable the Process
Status Hook feature.
-
-## Starting Rover
-
-### Enable Linux Process Scanner
-
-After your service has been startup, then configure the Linux process scanner
with "AGENT_SENSOR" mode.
-
-### 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
- scanner:
- period: 3s
- mode: AGENT_SENSOR
- agent:
- processStatusRefreshPeriod: 1m
-```
diff --git a/docs/en/setup/examples/cases/profiling-process/readme.md
b/docs/en/setup/examples/cases/profiling-process/readme.md
deleted file mode 100644
index 47ec0cc..0000000
--- a/docs/en/setup/examples/cases/profiling-process/readme.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# Profiling a Golang/C/C++/Rust 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 Linux, and make sure your service already has 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 Scanner
-
-After your service has been started, then configure the Linux process scanner
to let Rover know how to find the service.
-Please make sure the Linux Process Detector has 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
-```
-
-Following the command example 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/scanner.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
- scanner:
- period: 3s
- mode: REGEX
- regex:
- - match_cmd: 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/cases/kubernetes-process/readme.md
b/docs/en/setup/examples/deploy/kubernetes/readme.md
similarity index 79%
rename from docs/en/setup/examples/cases/kubernetes-process/readme.md
rename to docs/en/setup/examples/deploy/kubernetes/readme.md
index 1ef177e..c9c11ae 100644
--- a/docs/en/setup/examples/cases/kubernetes-process/readme.md
+++ b/docs/en/setup/examples/deploy/kubernetes/readme.md
@@ -1,6 +1,6 @@
-# Detect Process by Kubernetes
+# Deploy on Kubernetes
-This documentation helps you to set up the rover in the Kubernetes environment
and detect the kubernetes process automatically.
+This documentation helps you to set up the rover in the Kubernetes environment.
## Startup Kubernetes
@@ -13,8 +13,8 @@ or [minikube](https://minikube.sigs.k8s.io) to create a
cluster.
Please follow the [rover-daemonset.yml](./rover-daemonset.yml) to deploy the
rover in your Kubernetes cluster.
Update the comment in the file, which includes two configs:
-1. **Rover docker image**: You could use `make docker` to build an image and
upload it to your private registry.
+1. **Rover docker image**: You could use `make docker` to build an image and
upload it to your private registry, or update from the public image.
2. **OAP address**: Update the OAP address.
Then, you could use `kuberctl apply -f rover-daemonset.yml` to deploy the
skywalking-rover into your cluster.
-It would deploy in each node as a DaemonSet.
+It would deploy in each node as a DaemonSet.
\ No newline at end of file
diff --git
a/docs/en/setup/examples/cases/kubernetes-process/rover-daemonset.yml
b/docs/en/setup/examples/deploy/kubernetes/rover-daemonset.yml
similarity index 97%
rename from docs/en/setup/examples/cases/kubernetes-process/rover-daemonset.yml
rename to docs/en/setup/examples/deploy/kubernetes/rover-daemonset.yml
index b31e35c..7d402e9 100644
--- a/docs/en/setup/examples/cases/kubernetes-process/rover-daemonset.yml
+++ b/docs/en/setup/examples/deploy/kubernetes/rover-daemonset.yml
@@ -82,6 +82,8 @@ spec:
- name: ROVER_BACKEND_ADDR
# backend OAP address
value: oap:11800
+ - name: ROVER_HOST_MAPPING
+ value: /host
hostPID: true
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
diff --git a/docs/en/setup/examples/deploy/linux/readme.md
b/docs/en/setup/examples/deploy/linux/readme.md
deleted file mode 100644
index 30c8545..0000000
--- a/docs/en/setup/examples/deploy/linux/readme.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# 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
index d64ad54..481c32b 100644
--- a/docs/en/setup/overview.md
+++ b/docs/en/setup/overview.md
@@ -15,7 +15,8 @@ The SkyWalking Rover requires specialized protocols to
communicate with SkyWalki
| SkyWalking Rover Version | SkyWalking OAP |
|--------------------------|----------------|
-|0.1.0+ | \> = 9.1.0 |
+| 0.1.0+ | \> = 9.1.0 |
+| 0.6.0+ | \> = 10.0.0 |
## Startup script
Startup Script
@@ -29,7 +30,7 @@ You can quickly build your Rover according to the following
examples:
### Deploy
-1. [Deploy on Linux](examples/deploy/linux/readme.md)
+1. [Deploy on Kubernetes](examples/deploy/kubernetes/readme.md)
### Use Cases
@@ -43,9 +44,10 @@ The core concept behind this setting file is, that
SkyWalking Rover is based on
So, in rover_configs.yaml, there contains these parts.
1. [Logger Module](./configuration/logger.md).
-1. [Core Module](./configuration/core.md).
-2. [Process Discovery Module](./configuration/process_discovery/overview.md).
-3. [Profiling Module](./configuration/profiling.md).
+2. [Core Module](./configuration/core.md).
+3. [Process Discovery Module](configuration/process-discovery.md).
+4. [Profiling Module](./configuration/profiling.md).
+5. [Access Log Module](./configuration/accesslog.md).
Also, You could using [Overriding
Setting](./configuration/override-settings.md) feature to setup the
configuration.
diff --git a/docs/menu.yml b/docs/menu.yml
index 719b1ec..edc2b54 100644
--- a/docs/menu.yml
+++ b/docs/menu.yml
@@ -40,29 +40,17 @@ 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 Scanner
- path: /en/setup/configuration/process_discovery/scanner
- - name: Kubernetes Process Detector
- path: /en/setup/configuration/process_discovery/kubernetes
+ path: /en/setup/configuration/process-discovery
- name: Profiling Module
path: /en/setup/configuration/profiling
+ - name: Access Log Module
+ path: /en/setup/configuration/accesslog
- 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/C++/Rust service on Linux
- path: /en/setup/examples/cases/profiling-process/readme
- - name: Detect Process by Agent Sensor
- path: /en/setup/examples/cases/agent-sensor/readme
- - name: Detect Process in Kubernetes Environemnt
- path: /en/setup/examples/cases/kubernetes-process/readme
+ - name: Deploy on Kubernetes
+ path: /en/setup/examples/deploy/kubernetes/readme
- name: Guides
catalog:
- name: Contribution