blob: 4bbf8cb952ecd5795e26246b5b3b8d7d5e3bb849 [file] [log] [blame]
#
# 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.
#
logger:
# The lowest level of printing allowed.
level: ${ROVER_LOGGER_LEVEL:DEBUG}
core:
backend:
# The backend server address
addr: ${ROVER_BACKEND_ADDR:localhost:11800}
# The TLS switch
enable_TLS: ${ROVER_BACKEND_ENABLE_TLS:false}
# The file path of client.pem. The config only works when opening the TLS switch.
client_pem_path: ${ROVER_BACKEND_PEM_PATH:"client.pem"}
# The file path of client.key. The config only works when opening the TLS switch.
client_key_path: ${ROVER_BACKEND_KEY_PATH:"client.key"}
# InsecureSkipVerify controls whether a client verifies the server's certificate chain and host name.
insecure_skip_verify: ${ROVER_BACKEND_INSECURE_SKIP_VERIFY:false}
# The file path oca.pem. The config only works when opening the TLS switch.
ca_pem_path: ${ROVER_BACKEND_CA_PEM_PATH:"ca.pem"}
# How frequently to check the connection(second)
check_period: ${ROVER_BACKEND_CHECK_PERIOD:5}
# The auth value when send request
authentication: ${ROVER_BACKEND_AUTHENTICATION:""}
process_discovery:
# The period of report or keep alive process(second)
heartbeat_period: ${ROVER_PROCESS_DISCOVERY_HEARTBEAT_PERIOD:20s}
# The agent sends the process properties to the backend every: heartbeart period * properties report period
properties_report_period: ${ROVER_PROCESS_DISCOVERY_PROPERTIES_REPORT_PERIOD:10}
# Scan process from linux
scanner:
# The period to detect the process
period: ${ROVER_PROCESS_DISCOVERY_SCAN_PERIOD:3s}
# The process detection modes of the scanner. Support "REGEX", "AGENT_SENSOR"
mode: ${ROVER_PROCESS_DISCOVERY_SCAN_MODE:REGEX}
agent:
# Set the agent refresh period
process_status_refresh_period: ${ROVER_PROCESS_DISCOVERY_AGENT_PROCESS_STATUS_REFRESH_PERIOD:1m}
regex:
# Use regex string to locate the processes
# Duplicate entities cannot be reported. If multiple entity are generated, only one process will be report
# If the multiple finders could match the same one process, only the first finder could be selected and report
- match_cmd: ${ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_MATCH_CMD1:nginx}
# The Layer need to relate to the process entity
layer: ${ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_LAYER1:OS_LINUX}
# The Service Name need to relate to the process entity
service_name: ${ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_SERVICE_NAME1:nginx}
# The Service Instance Name need to relate to the process entity
# By default the instance name is the host IP v4 address from "en0" net interface
instance_name: ${ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_INSTANCE_NAME1:test}
# The Process Name need to relate to the process entity
# By default, the process name is the executable name of the process
process_name: ${ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_PROCESS_NAME1:{{.Process.ExeName}}-{{.Process.Pid}}}
# The Process Labels, used to aggregate similar process from service entity
# Multiple labels split by ","
labels: ${ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_LABELS:}
- match_cmd: ${ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_MATCH_CMD2:/service$}
# The Layer need to relate to the process entity
layer: ${ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_LAYER2:OS_LINUX}
# The Service Name need to relate to the process entity
service_name: ${ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_SERVICE_NAME2:service}
# The Service Instance Name need to relate to the process entity
# By default the instance name is the host IP v4 address from "en0" net interface
instance_name: ${ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_INSTANCE_NAME2:test}
# The Process Name need to relate to the process entity
# By default, the process name is the executable name of the process
process_name: ${ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_PROCESS_NAME2:{{.Process.ExeName}}}
# The Process Labels, used to aggregate similar process from service entity
# Multiple labels split by ","
labels: ${ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_LABELS:}
kubernetes:
# Is active the kubernetes process detector
active: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ACTIVE:false}
# Current node name in kubernetes environment
node_name: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_NODE_NAME:}
# include namespaces, multiple namespace split by ",", if empty means including all namespaces
namespaces: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_NAMESPACES:}
analyzers:
- active: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_ISTIO_ENVOY_ACTIVE:true}
filters:
- ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_ISTIO_ENVOY_HAS_ENVOY:.Pod.HasContainer "istio-proxy"}
- ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_ISTIO_ENVOY_CONTAINER_IS_ENVOY:eq .Container.Name "istio-proxy"}
layer: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_ISTIO_ENVOY_LAYER:MESH_DP}
service_name: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_ISTIO_ENVOY_SERVICE_NAME:{{.Pod.Namespace}}::{{.Pod.LabelValue "service.istio.io/canonical-name,app.kubernetes.io/name,app" }}}
instance_name: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_ISTIO_ENVOY_INSTANCE_NAME:{{.Pod.Name}}}
process_name: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_ISTIO_ENVOY_PROCESS_NAME:{{.Process.ExeName}}}
labels: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_ISTIO_ENVOY_LABELS:mesh-envoy}
- active: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_ISTIO_APPLICATION_ACTIVE:true}
filters:
- ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_ISTIO_APPLICATION_HAS_ENVOY:.Pod.HasContainer "istio-proxy"}
- ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_ISTIO_APPLICATION_CONTAINER_NOT_ENVOY:ne .Container.Name "istio-proxy"}
layer: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_ISTIO_APPLICATION_LAYER:MESH}
service_name: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_ISTIO_APPLICATION_SERVICE_NAME:{{.Pod.Namespace}}::{{.Pod.LabelValue "service.istio.io/canonical-name,app.kubernetes.io/name,app" }}}
instance_name: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_ISTIO_APPLICATION_INSTANCE_NAME:{{.Pod.Name}}}
process_name: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_ISTIO_APPLICATION_PROCESS_NAME:{{.Process.ExeName}}}
labels: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_ISTIO_APPLICATION_LABELS:mesh-application}
- active: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_K8S_SERVICE_ACTIVE:true}
filters:
- ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_K8S_SERVICE_HAS_SERVICE:.Pod.HasServiceName}
layer: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_K8S_SERVICE_LAYER:K8S_SERVICE}
service_name: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_K8S_SERVICE_NAME:{{.Pod.Namespace}}::{{.Pod.ServiceName}}}
instance_name: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_K8S_SERVICE_INSTANCE_NAME:{{.Pod.Name}}}
process_name: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_K8S_SERVICE_PROCESS_NAME:{{.Process.ExeName}}}
labels: ${ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_K8S_SERVICE_LABLES:k8s-service}
profiling:
# Is active the process profiling
active: ${ROVER_PROFILING_ACTIVE:true}
# Check the profiling task interval
check_interval: ${ROVER_PROFILING_CHECK_INTERVAL:10s}
# Combine existing profiling data and report to the backend interval
flush_interval: ${ROVER_PROFILING_FLUSH_INTERVAL:5s}
# Customize profiling task config
task:
# The config when executing ON_CPU profiling task
on_cpu:
# The profiling stack dump period
dump_period: ${ROVER_PROFILING_TASK_ON_CPU_DUMP_PERIOD:9ms}
network:
# The interval of send metrics to the backend
report_interval: ${ROVER_PROFILING_TASK_NETWORK_TOPOLOGY_REPORT_INTERVAL:2s}
# The prefix of network profiling metrics name
meter_prefix: ${ROVER_PROFILING_TASK_NETWORK_TOPOLOGY_METER_PREFIX:rover_net_p}
# The protocol analyzer config for 7-Layer
protocol_analyze:
# The size of socket data buffer on each CPU
per_cpu_buffer: ${ROVER_PROFILING_TASK_NETWORK_PROTOCOL_ANALYZE_PER_CPU_BUFFER:400KB}
# The count of parallel protocol analyzer
parallels: ${ROVER_PROFILING_TASK_NETWORK_PROTOCOL_ANALYZE_PARALLELS:2}
# The size of per paralleled analyzer queue
queue_size: ${ROVER_PROFILING_TASK_NETWORK_PROTOCOL_ANALYZE_QUEUE_SIZE:5000}
# The profiling config of the protocols
sampling:
# The HTTP/1.x and HTTP/2.x profiling config
http:
# The default body encoding when sampling the request
default_request_encoding: ${ROVER_PROFILING_TASK_NETWORK_PROTOCOL_ANALYZE_SAMPLING_HTTP_DEFAULT_REQUEST_ENCODING:UTF-8}
# The default body encoding when sampling the response
default_response_encoding: ${ROVER_PROFILING_TASK_NETWORK_PROTOCOL_ANALYZE_SAMPLING_HTTP_DEFAULT_RESPONSE_ENCODING:UTF-8}
# continuous profiling config
continuous:
# continuous related meters prefix name
meter_prefix: ${ROVER_PROFILING_CONTINUOUS_METER_PREFIX:rover_con_p}
# The interval of fetch metrics from the system, such as Process CPU, System Load, etc.
fetch_interval: ${ROVER_PROFILING_CONTINUOUS_FETCH_INTERVAL:1s}
# The interval of check metrics is reach the thresholds
check_interval: ${ROVER_PROFILING_CONTINUOUS_CHECK_INTERVAL:5s}
trigger:
# the duration of the profiling task
execute_duration: ${ROVER_PROFILING_CONTINUOUS_TRIGGER_EXECUTE_DURATION:10m}
# the minimal duration between the execution of the same profiling task
silence_duration: ${ROVER_PROFILING_CONTINUOUS_TRIGGER_SILENCE_DURATION:20m}