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-java.git
The following commit(s) were added to refs/heads/main by this push:
new 5cffa078e1 Add a config `agent.enable`(default: true) to support
disabling agent (#439)
5cffa078e1 is described below
commit 5cffa078e18dc10877934422c895d5ab5ed8ad44
Author: 吴晟 Wu Sheng <[email protected]>
AuthorDate: Wed Jan 11 17:14:23 2023 +0800
Add a config `agent.enable`(default: true) to support disabling agent (#439)
---
CHANGES.md | 2 +
.../skywalking/apm/agent/core/conf/Config.java | 5 +
.../skywalking/apm/agent/SkyWalkingAgent.java | 35 +--
apm-sniffer/config/agent.config | 3 +
.../service-agent/java-agent/configurations.md | 254 +++++++++++----------
5 files changed, 160 insertions(+), 139 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index cc4da49a23..c7b7e6353c 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -24,6 +24,8 @@ Release Notes.
* Support to customize the collect period of JVM relative metrics.
* Upgrade netty-codec-http2 to 4.1.86.Final.
* Put `Agent-Version` property reading in the premain stage to avoid deadlock
when using `jarsigner`.
+* Add a config `agent.enable`(default: true) to support disabling the agent
through system property `-Dskywalking.agent.disable=false`
+ or system environment variable setting `SW_AGENT_ENABLE=false`.
#### Documentation
diff --git
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/Config.java
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/Config.java
index ff075e39b8..861a0ef01f 100755
---
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/Config.java
+++
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/Config.java
@@ -183,6 +183,11 @@ public class Config {
* Agent version. This is set by the agent kernel through reading
MANIFEST.MF file in the skywalking-agent.jar.
*/
public static String VERSION = "UNKNOWN";
+
+ /**
+ * Enable the agent kernel services and instrumentation.
+ */
+ public static boolean ENABLE = true;
}
public static class OsInfo {
diff --git
a/apm-sniffer/apm-agent/src/main/java/org/apache/skywalking/apm/agent/SkyWalkingAgent.java
b/apm-sniffer/apm-agent/src/main/java/org/apache/skywalking/apm/agent/SkyWalkingAgent.java
index 38b6e1b8ff..dd0a072164 100644
---
a/apm-sniffer/apm-agent/src/main/java/org/apache/skywalking/apm/agent/SkyWalkingAgent.java
+++
b/apm-sniffer/apm-agent/src/main/java/org/apache/skywalking/apm/agent/SkyWalkingAgent.java
@@ -23,7 +23,6 @@ import java.security.ProtectionDomain;
import java.util.Collections;
import java.util.List;
import java.util.Map;
-
import net.bytebuddy.ByteBuddy;
import net.bytebuddy.agent.builder.AgentBuilder;
import net.bytebuddy.description.NamedElement;
@@ -70,13 +69,18 @@ public class SkyWalkingAgent {
} catch (Exception e) {
// try to resolve a new logger, and use the new logger to write
the error log here
LogManager.getLogger(SkyWalkingAgent.class)
- .error(e, "SkyWalking agent initialized failure. Shutting
down.");
+ .error(e, "SkyWalking agent initialized failure.
Shutting down.");
return;
} finally {
// refresh logger again after initialization finishes
LOGGER = LogManager.getLogger(SkyWalkingAgent.class);
}
+ if (!Config.Agent.ENABLE) {
+ LOGGER.warn("SkyWalking agent is disabled.");
+ return;
+ }
+
try {
pluginFinder = new PluginFinder(new
PluginBootstrap().loadPlugins());
} catch (AgentPackageNotFoundException ape) {
@@ -90,15 +94,15 @@ public class SkyWalkingAgent {
final ByteBuddy byteBuddy = new
ByteBuddy().with(TypeValidation.of(Config.Agent.IS_OPEN_DEBUGGING_CLASS));
AgentBuilder agentBuilder = new AgentBuilder.Default(byteBuddy).ignore(
- nameStartsWith("net.bytebuddy.")
- .or(nameStartsWith("org.slf4j."))
- .or(nameStartsWith("org.groovy."))
- .or(nameContains("javassist"))
- .or(nameContains(".asm."))
- .or(nameContains(".reflectasm."))
- .or(nameStartsWith("sun.reflect"))
- .or(allSkyWalkingAgentExcludeToolkit())
- .or(ElementMatchers.isSynthetic()));
+ nameStartsWith("net.bytebuddy.")
+ .or(nameStartsWith("org.slf4j."))
+ .or(nameStartsWith("org.groovy."))
+ .or(nameContains("javassist"))
+ .or(nameContains(".asm."))
+ .or(nameContains(".reflectasm."))
+ .or(nameStartsWith("sun.reflect"))
+ .or(allSkyWalkingAgentExcludeToolkit())
+ .or(ElementMatchers.isSynthetic()));
JDK9ModuleExporter.EdgeClasses edgeClasses = new
JDK9ModuleExporter.EdgeClasses();
try {
@@ -140,7 +144,7 @@ public class SkyWalkingAgent {
}
Runtime.getRuntime()
- .addShutdownHook(new Thread(ServiceManager.INSTANCE::shutdown,
"skywalking service shutdown thread"));
+ .addShutdownHook(new Thread(ServiceManager.INSTANCE::shutdown,
"skywalking service shutdown thread"));
}
private static class Transformer implements AgentBuilder.Transformer {
@@ -163,7 +167,7 @@ public class SkyWalkingAgent {
EnhanceContext context = new EnhanceContext();
for (AbstractClassEnhancePluginDefine define : pluginDefines) {
DynamicType.Builder<?> possibleNewBuilder = define.define(
- typeDescription, newBuilder, classLoader, context);
+ typeDescription, newBuilder, classLoader, context);
if (possibleNewBuilder != null) {
newBuilder = possibleNewBuilder;
}
@@ -233,7 +237,10 @@ public class SkyWalkingAgent {
}
@Override
- public Iterable<? extends List<Class<?>>> onError(int index,
List<Class<?>> batch, Throwable throwable, List<Class<?>> types) {
+ public Iterable<? extends List<Class<?>>> onError(int index,
+ List<Class<?>> batch,
+ Throwable throwable,
+ List<Class<?>>
types) {
LOGGER.error(throwable, "index={}, batch={}, types={}", index,
batch, types);
return Collections.emptyList();
}
diff --git a/apm-sniffer/config/agent.config b/apm-sniffer/config/agent.config
index 3f8c535af0..7124e2e8a0 100755
--- a/apm-sniffer/config/agent.config
+++ b/apm-sniffer/config/agent.config
@@ -87,6 +87,9 @@ agent.ssl_key_path=${SW_AGENT_SSL_KEY_PATH:}
agent.ssl_cert_chain_path=${SW_AGENT_SSL_CERT_CHAIN_PATH:}
+# Enable the agent kernel services and instrumentation.
+agent.enable=${SW_AGENT_ENABLE:true}
+
# Limit the length of the ipv4 list size.
osinfo.ipv4_list_size=${SW_AGENT_OSINFO_IPV4_LIST_SIZE:10}
diff --git a/docs/en/setup/service-agent/java-agent/configurations.md
b/docs/en/setup/service-agent/java-agent/configurations.md
index 1514c0eb7b..c79c525d40 100644
--- a/docs/en/setup/service-agent/java-agent/configurations.md
+++ b/docs/en/setup/service-agent/java-agent/configurations.md
@@ -1,134 +1,138 @@
# Table of Agent Configuration Properties
+
This is the properties list supported in `agent/config/agent.config`.
-| property key | Description
[...]
-|-----------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[...]
-| `agent.service_name` | The service name
to represent a logic group providing the same capabilities/logic. Suggestion:
set a unique name for every logic service group, service instance nodes share
the same code, Max length is 50(UTF-8 char). Optional, once `service_name`
follows `<group name>::<logic name>` format, OAP server assigns the group name
to the service metadata.
[...]
-| `agent.namespace` | Namespace
represents a subnet, such as kubernetes namespace, or 172.10.*.*
[...]
-| `agent.cluster` | Cluster defines
the physical cluster in a data center or same network segment.
[...]
-| `agent.sample_n_per_3_secs` | Negative or zero
means off, by default.SAMPLE_N_PER_3_SECS means sampling N TraceSegment in 3
seconds tops.
[...]
-| `agent.authentication` | Authentication
active is based on backend setting, see application.yml for more details.For
most scenarios, this needs backend extensions, only basic match auth provided
in default implementation.
[...]
-| `agent.trace_segment_ref_limit_per_span` | The max number
of TraceSegmentRef in a single span to keep memory cost estimatable.
[...]
-| `agent.span_limit_per_segment` | The max number
of spans in a single segment. Through this config item, SkyWalking keep your
application memory cost estimated.
[...]
-| `agent.ignore_suffix` | If the operation
name of the first span is included in this set, this segment should be ignored.
[...]
-| `agent.is_open_debugging_class` | If true,
skywalking agent will save all instrumented classes files in `/debugging`
folder. SkyWalking team may ask for these files in order to resolve compatible
problem.
[...]
-| `agent.is_cache_enhanced_class` | If true,
SkyWalking agent will cache all instrumented classes files to memory or disk
files (decided by class cache mode), allow another java agent to enhance those
classes that enhanced by SkyWalking agent. To use some Java diagnostic tools
(such as BTrace, Arthas) to diagnose applications or add a custom java agent to
enhance classes, you need to enable this feature.
[...]
-| `agent.class_cache_mode` | The instrumented
classes cache mode: `MEMORY` or `FILE`. `MEMORY`: cache class bytes to memory,
if instrumented classes is too many or too large, it may take up more memory.
`FILE`: cache class bytes in `/class-cache` folder, automatically clean up
cached class files when the application exits.
[...]
-| `agent.instance_name` | Instance name is
the identity of an instance, should be unique in the service. If empty,
SkyWalking agent will generate an 32-bit uuid. Default, use `UUID`@`hostname`
as the instance name. Max length is 50(UTF-8 char)
[...]
-| `agent.instance_properties_json={"key":"value"}` | Add service
instance custom properties in json format.
[...]
-| `agent.cause_exception_depth` | How depth the
agent goes, when log all cause exceptions.
[...]
-| `agent.force_reconnection_period ` | Force
reconnection period of grpc, based on grpc_channel_check_interval.
[...]
-| `agent.operation_name_threshold ` | The
operationName max length, setting this value > 190 is not recommended.
[...]
-| `agent.keep_tracing` | Keep tracing
even the backend is not available if this value is `true`.
[...]
-| `agent.force_tls` | Force open TLS
for gRPC channel if this value is `true`.
[...]
-| `agent.ssl_trusted_ca_path` | gRPC SSL trusted
ca file.
[...]
-| `agent.ssl_key_path` | The private key
file. Enable mTLS when ssl_key_path and ssl_cert_chain_path exist.
[...]
-| `agent.ssl_cert_chain_path` | The certificate
file. Enable mTLS when ssl_key_path and ssl_cert_chain_path exist.
[...]
-| `osinfo.ipv4_list_size` | Limit the length
of the ipv4 list size.
[...]
-| `collector.grpc_channel_check_interval` | grpc channel
status check interval.
[...]
-| `collector.heartbeat_period` | agent heartbeat
report period. Unit, second.
[...]
-| `collector.properties_report_period_factor` | The agent sends
the instance properties to the backend every `collector.heartbeat_period *
collector.properties_report_period_factor` seconds
[...]
-| `collector.backend_service` | Collector
SkyWalking trace receiver service addresses.
[...]
-| `collector.grpc_upstream_timeout` | How long grpc
client will timeout in sending data to upstream. Unit is second.
[...]
-| `collector.get_profile_task_interval` | Sniffer get
profile task list interval.
[...]
-| `collector.get_agent_dynamic_config_interval` | Sniffer get
agent dynamic config interval
[...]
-| `collector.is_resolve_dns_periodically` | If true,
skywalking agent will enable periodically resolving DNS to update receiver
service addresses.
[...]
-| `logging.level` | Log level:
TRACE, DEBUG, INFO, WARN, ERROR, OFF. Default is info.
[...]
-| `logging.file_name` | Log file name.
[...]
-| `logging.output` | Log output.
Default is FILE. Use CONSOLE means output to stdout.
[...]
-| `logging.dir` | Log files
directory. Default is blank string, means, use "{theSkywalkingAgentJarDir}/logs
" to output logs. {theSkywalkingAgentJarDir} is the directory where the
skywalking agent jar file is located
[...]
-| `logging.resolver` | Logger resolver:
`PATTERN` or `JSON`. The default is `PATTERN`, which uses `logging.pattern` to
print traditional text logs. `JSON` resolver prints logs in JSON format.
[...]
-| `logging.pattern ` | Logging format.
There are all conversion specifiers: <br> * `%level` means log
level. <br> * `%timestamp` means now of time with format
`yyyy-MM-dd HH:mm:ss:SSS`.<br> * `%thread` means name of current
thread.<br> * `%msg` means some message which user logged.
<br> * `%class` means SimpleName of TargetClass. <br> *
`%throwable` means a throwable which user [...]
-| `logging.max_file_size` | The max size of
log file. If the size is bigger than this, archive the current file, and write
into a new file.
[...]
-| `logging.max_history_files` | The max history
log files. When rollover happened, if log files exceed this number,then the
oldest file will be delete. Negative or zero means off, by default.
[...]
-| `statuscheck.ignored_exceptions` | Listed
exceptions would not be treated as an error. Because in some codes, the
exception is being used as a way of controlling business flow.
[...]
-| `statuscheck.max_recursive_depth` | The max
recursive depth when checking the exception traced by the agent. Typically, we
don't recommend setting this more than 10, which could cause a performance
issue. Negative value and 0 would be ignored, which means all exceptions would
make the span tagged in error status.
[...]
-| `correlation.element_max_number` | Max element
count in the correlation context.
[...]
-| `correlation.value_max_length` | Max value length
of each element.
[...]
-| `correlation.auto_tag_keys` | Tag the span by
the key/value in the correlation context, when the keys listed here exist.
[...]
-| `jvm.buffer_size` | The buffer size
of collected JVM info.
[...]
-| `jvm.metrics_collect_period` | The period in
seconds of JVM metrics collection. Unit is second.
[...]
-| `buffer.channel_size` | The buffer
channel size.
[...]
-| `buffer.buffer_size` | The buffer size.
[...]
-| `profile.active` | If true,
skywalking agent will enable profile when user create a new profile task.
Otherwise disable profile.
[...]
-| `profile.max_parallel` | Parallel monitor
segment count
[...]
-| `profile.duration` | Max monitor
segment time(minutes), if current segment monitor time out of limit, then stop
it.
[...]
-| `profile.dump_max_stack_depth` | Max dump thread
stack depth
[...]
-| `profile.snapshot_transport_buffer_size` | Snapshot
transport to backend buffer size
[...]
-| `meter.active` | If true, the
agent collects and reports metrics to the backend.
[...]
-| `meter.report_interval` | Report meters
interval. The unit is second
[...]
-| `meter.max_meter_size` | Max size of the
meter pool
[...]
-| `log.max_message_size` | The max size of
message to send to server.Default is 10 MB.
[...]
-| `plugin.mount` | Mount the
specific folders of the plugins. Plugins in mounted folders would work.
[...]
-| `plugin.peer_max_length ` | Peer maximum
description limit.
[...]
-| `plugin.exclude_plugins ` | Exclude some
plugins define in plugins dir,Multiple plugins are separated by comma.Plugin
names is defined in [Agent plugin list](Plugin-list.md)
[...]
-| `plugin.mongodb.trace_param` | If true, trace
all the parameters in MongoDB access, default is false. Only trace the
operation, not include parameters.
[...]
-| `plugin.mongodb.filter_length_limit` | If set to
positive number, the `WriteRequest.params` would be truncated to this length,
otherwise it would be completely saved, which may cause performance problem.
[...]
-| `plugin.elasticsearch.trace_dsl` | If true, trace
all the DSL(Domain Specific Language) in ElasticSearch access, default is
false.
[...]
-| `plugin.springmvc.use_qualified_name_as_endpoint_name` | If true, the
fully qualified method name will be used as the endpoint name instead of the
request URL, default is false.
[...]
-| `plugin.toolkit.use_qualified_name_as_operation_name` | If true, the
fully qualified method name will be used as the operation name instead of the
given operation name, default is false.
[...]
-| `plugin.jdbc.trace_sql_parameters` | If set to true,
the parameters of the sql (typically `java.sql.PreparedStatement`) would be
collected.
[...]
-| `plugin.jdbc.sql_parameters_max_length` | If set to
positive number, the `db.sql.parameters` would be truncated to this length,
otherwise it would be completely saved, which may cause performance problem.
[...]
-| `plugin.jdbc.sql_body_max_length` | If set to
positive number, the `db.statement` would be truncated to this length,
otherwise it would be completely saved, which may cause performance problem.
[...]
-| `plugin.solrj.trace_statement` | If true, trace
all the query parameters(include deleteByIds and deleteByQuery) in Solr query
request, default is false.
[...]
-| `plugin.solrj.trace_ops_params` | If true, trace
all the operation parameters in Solr request, default is false.
[...]
-| `plugin.light4j.trace_handler_chain` | If true, trace
all middleware/business handlers that are part of the Light4J handler chain for
a request.
[...]
+| property key |
Description
[...]
+|-----------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[...]
+| `agent.service_name` | The
service name to represent a logic group providing the same capabilities/logic.
Suggestion: set a unique name for every logic service group, service instance
nodes share the same code, Max length is 50(UTF-8 char). Optional, once
`service_name` follows `<group name>::<logic name>` format, OAP server assigns
the group name to the service metadata.
[...]
+| `agent.namespace` | Namespace
represents a subnet, such as kubernetes namespace, or 172.10.*.*
[...]
+| `agent.cluster` | Cluster
defines the physical cluster in a data center or same network segment.
[...]
+| `agent.sample_n_per_3_secs` | Negative
or zero means off, by default.SAMPLE_N_PER_3_SECS means sampling N TraceSegment
in 3 seconds tops.
[...]
+| `agent.authentication` |
Authentication active is based on backend setting, see application.yml for more
details.For most scenarios, this needs backend extensions, only basic match
auth provided in default implementation.
[...]
+| `agent.trace_segment_ref_limit_per_span` | The max
number of TraceSegmentRef in a single span to keep memory cost estimatable.
[...]
+| `agent.span_limit_per_segment` | The max
number of spans in a single segment. Through this config item, SkyWalking keep
your application memory cost estimated.
[...]
+| `agent.ignore_suffix` | If the
operation name of the first span is included in this set, this segment should
be ignored.
[...]
+| `agent.is_open_debugging_class` | If true,
skywalking agent will save all instrumented classes files in `/debugging`
folder. SkyWalking team may ask for these files in order to resolve compatible
problem.
[...]
+| `agent.is_cache_enhanced_class` | If true,
SkyWalking agent will cache all instrumented classes files to memory or disk
files (decided by class cache mode), allow another java agent to enhance those
classes that enhanced by SkyWalking agent. To use some Java diagnostic tools
(such as BTrace, Arthas) to diagnose applications or add a custom java agent to
enhance classes, you need to enable this feature.
[...]
+| `agent.class_cache_mode` | The
instrumented classes cache mode: `MEMORY` or `FILE`. `MEMORY`: cache class
bytes to memory, if instrumented classes is too many or too large, it may take
up more memory. `FILE`: cache class bytes in `/class-cache` folder,
automatically clean up cached class files when the application exits.
[...]
+| `agent.instance_name` | Instance
name is the identity of an instance, should be unique in the service. If empty,
SkyWalking agent will generate an 32-bit uuid. Default, use `UUID`@`hostname`
as the instance name. Max length is 50(UTF-8 char)
[...]
+| `agent.instance_properties_json={"key":"value"}` | Add
service instance custom properties in json format.
[...]
+| `agent.cause_exception_depth` | How depth
the agent goes, when log all cause exceptions.
[...]
+| `agent.force_reconnection_period ` | Force
reconnection period of grpc, based on grpc_channel_check_interval.
[...]
+| `agent.operation_name_threshold ` | The
operationName max length, setting this value > 190 is not recommended.
[...]
+| `agent.keep_tracing` | Keep
tracing even the backend is not available if this value is `true`.
[...]
+| `agent.force_tls` | Force open
TLS for gRPC channel if this value is `true`.
[...]
+| `agent.ssl_trusted_ca_path` | gRPC SSL
trusted ca file.
[...]
+| `agent.ssl_key_path` | The
private key file. Enable mTLS when ssl_key_path and ssl_cert_chain_path exist.
[...]
+| `agent.ssl_cert_chain_path` | The
certificate file. Enable mTLS when ssl_key_path and ssl_cert_chain_path exist.
[...]
+| `agent.enable` | Enable the
agent kernel services and instrumentation.
[...]
+| `osinfo.ipv4_list_size` | Limit the
length of the ipv4 list size.
[...]
+| `collector.grpc_channel_check_interval` | grpc
channel status check interval.
[...]
+| `collector.heartbeat_period` | agent
heartbeat report period. Unit, second.
[...]
+| `collector.properties_report_period_factor` | The agent
sends the instance properties to the backend every `collector.heartbeat_period
* collector.properties_report_period_factor` seconds
[...]
+| `collector.backend_service` | Collector
SkyWalking trace receiver service addresses.
[...]
+| `collector.grpc_upstream_timeout` | How long
grpc client will timeout in sending data to upstream. Unit is second.
[...]
+| `collector.get_profile_task_interval` | Sniffer
get profile task list interval.
[...]
+| `collector.get_agent_dynamic_config_interval` | Sniffer
get agent dynamic config interval
[...]
+| `collector.is_resolve_dns_periodically` | If true,
skywalking agent will enable periodically resolving DNS to update receiver
service addresses.
[...]
+| `logging.level` | Log level:
TRACE, DEBUG, INFO, WARN, ERROR, OFF. Default is info.
[...]
+| `logging.file_name` | Log file
name.
[...]
+| `logging.output` | Log
output. Default is FILE. Use CONSOLE means output to stdout.
[...]
+| `logging.dir` | Log files
directory. Default is blank string, means, use "{theSkywalkingAgentJarDir}/logs
" to output logs. {theSkywalkingAgentJarDir} is the directory where the
skywalking agent jar file is located
[...]
+| `logging.resolver` | Logger
resolver: `PATTERN` or `JSON`. The default is `PATTERN`, which uses
`logging.pattern` to print traditional text logs. `JSON` resolver prints logs
in JSON format.
[...]
+| `logging.pattern ` | Logging
format. There are all conversion specifiers: <br> * `%level` means
log level. <br> * `%timestamp` means now of time with format
`yyyy-MM-dd HH:mm:ss:SSS`.<br> * `%thread` means name of current
thread.<br> * `%msg` means some message which user logged.
<br> * `%class` means SimpleName of TargetClass. <br> *
`%throwable` means a throwable whic [...]
+| `logging.max_file_size` | The max
size of log file. If the size is bigger than this, archive the current file,
and write into a new file.
[...]
+| `logging.max_history_files` | The max
history log files. When rollover happened, if log files exceed this number,then
the oldest file will be delete. Negative or zero means off, by default.
[...]
+| `statuscheck.ignored_exceptions` | Listed
exceptions would not be treated as an error. Because in some codes, the
exception is being used as a way of controlling business flow.
[...]
+| `statuscheck.max_recursive_depth` | The max
recursive depth when checking the exception traced by the agent. Typically, we
don't recommend setting this more than 10, which could cause a performance
issue. Negative value and 0 would be ignored, which means all exceptions would
make the span tagged in error status.
[...]
+| `correlation.element_max_number` | Max
element count in the correlation context.
[...]
+| `correlation.value_max_length` | Max value
length of each element.
[...]
+| `correlation.auto_tag_keys` | Tag the
span by the key/value in the correlation context, when the keys listed here
exist.
[...]
+| `jvm.buffer_size` | The buffer
size of collected JVM info.
[...]
+| `jvm.metrics_collect_period` | The period
in seconds of JVM metrics collection. Unit is second.
[...]
+| `buffer.channel_size` | The buffer
channel size.
[...]
+| `buffer.buffer_size` | The buffer
size.
[...]
+| `profile.active` | If true,
skywalking agent will enable profile when user create a new profile task.
Otherwise disable profile.
[...]
+| `profile.max_parallel` | Parallel
monitor segment count
[...]
+| `profile.duration` | Max
monitor segment time(minutes), if current segment monitor time out of limit,
then stop it.
[...]
+| `profile.dump_max_stack_depth` | Max dump
thread stack depth
[...]
+| `profile.snapshot_transport_buffer_size` | Snapshot
transport to backend buffer size
[...]
+| `meter.active` | If true,
the agent collects and reports metrics to the backend.
[...]
+| `meter.report_interval` | Report
meters interval. The unit is second
[...]
+| `meter.max_meter_size` | Max size
of the meter pool
[...]
+| `log.max_message_size` | The max
size of message to send to server.Default is 10 MB.
[...]
+| `plugin.mount` | Mount the
specific folders of the plugins. Plugins in mounted folders would work.
[...]
+| `plugin.peer_max_length ` | Peer
maximum description limit.
[...]
+| `plugin.exclude_plugins ` | Exclude
some plugins define in plugins dir,Multiple plugins are separated by
comma.Plugin names is defined in [Agent plugin list](Plugin-list.md)
[...]
+| `plugin.mongodb.trace_param` | If true,
trace all the parameters in MongoDB access, default is false. Only trace the
operation, not include parameters.
[...]
+| `plugin.mongodb.filter_length_limit` | If set to
positive number, the `WriteRequest.params` would be truncated to this length,
otherwise it would be completely saved, which may cause performance problem.
[...]
+| `plugin.elasticsearch.trace_dsl` | If true,
trace all the DSL(Domain Specific Language) in ElasticSearch access, default is
false.
[...]
+| `plugin.springmvc.use_qualified_name_as_endpoint_name` | If true,
the fully qualified method name will be used as the endpoint name instead of
the request URL, default is false.
[...]
+| `plugin.toolkit.use_qualified_name_as_operation_name` | If true,
the fully qualified method name will be used as the operation name instead of
the given operation name, default is false.
[...]
+| `plugin.jdbc.trace_sql_parameters` | If set to
true, the parameters of the sql (typically `java.sql.PreparedStatement`) would
be collected.
[...]
+| `plugin.jdbc.sql_parameters_max_length` | If set to
positive number, the `db.sql.parameters` would be truncated to this length,
otherwise it would be completely saved, which may cause performance problem.
[...]
+| `plugin.jdbc.sql_body_max_length` | If set to
positive number, the `db.statement` would be truncated to this length,
otherwise it would be completely saved, which may cause performance problem.
[...]
+| `plugin.solrj.trace_statement` | If true,
trace all the query parameters(include deleteByIds and deleteByQuery) in Solr
query request, default is false.
[...]
+| `plugin.solrj.trace_ops_params` | If true,
trace all the operation parameters in Solr request, default is false.
[...]
+| `plugin.light4j.trace_handler_chain` | If true,
trace all middleware/business handlers that are part of the Light4J handler
chain for a request.
[...]
| `plugin.springtransaction.simplify_transaction_definition_name` | If true,
the transaction definition name will be simplified.
[...]
-| `plugin.jdkthreading.threading_class_prefixes` | Threading
classes (`java.lang.Runnable` and `java.util.concurrent.Callable`) and their
subclasses, including anonymous inner classes whose name match any one of the
`THREADING_CLASS_PREFIXES` (splitted by `,`) will be instrumented, make sure to
only specify as narrow prefixes as what you're expecting to instrument,
(`java.` and `javax.` will be ignored due to safety issues)
[...]
-| `plugin.tomcat.collect_http_params` | This config item
controls that whether the Tomcat plugin should collect the parameters of the
request. Also, activate implicitly in the profiled trace.
[...]
-| `plugin.springmvc.collect_http_params` | This config item
controls that whether the SpringMVC plugin should collect the parameters of the
request, when your Spring application is based on Tomcat, consider only setting
either `plugin.tomcat.collect_http_params` or
`plugin.springmvc.collect_http_params`. Also, activate implicitly in the
profiled trace.
[...]
-| `plugin.httpclient.collect_http_params` | This config item
controls that whether the HttpClient plugin should collect the parameters of
the request
[...]
-| `plugin.http.http_params_length_threshold` | When
`COLLECT_HTTP_PARAMS` is enabled, how many characters to keep and send to the
OAP backend, use negative values to keep and send the complete parameters, NB.
this config item is added for the sake of performance.
[...]
-| `plugin.http.http_headers_length_threshold` | When
`include_http_headers` declares header names, this threshold controls the
length limitation of all header values. use negative values to keep and send
the complete headers. Note. this config item is added for the sake of
performance.
[...]
-| `plugin.http.include_http_headers` | Set the header
names, which should be collected by the plugin. Header name must follow
`javax.servlet.http` definition. Multiple names should be split by comma.
[...]
-| `plugin.feign.collect_request_body` | This config item
controls that whether the Feign plugin should collect the http body of the
request.
[...]
-| `plugin.feign.filter_length_limit` | When
`COLLECT_REQUEST_BODY` is enabled, how many characters to keep and send to the
OAP backend, use negative values to keep and send the complete body.
[...]
-| `plugin.feign.supported_content_types_prefix` | When
`COLLECT_REQUEST_BODY` is enabled and content-type start with
SUPPORTED_CONTENT_TYPES_PREFIX, collect the body of the request , multiple
paths should be separated by `,`
[...]
-| `plugin.influxdb.trace_influxql` | If true, trace
all the influxql(query and write) in InfluxDB access, default is true.
[...]
-| `plugin.dubbo.collect_consumer_arguments` | Apache Dubbo
consumer collect `arguments` in RPC call, use `Object#toString` to collect
`arguments`.
[...]
-| `plugin.dubbo.consumer_arguments_length_threshold` | When
`plugin.dubbo.collect_consumer_arguments` is `true`, Arguments of length from
the front will to the OAP backend
[...]
-| `plugin.dubbo.collect_provider_arguments` | Apache Dubbo
provider collect `arguments` in RPC call, use `Object#toString` to collect
`arguments`.
[...]
-| `plugin.dubbo.provider_arguments_length_threshold` | When
`plugin.dubbo.collect_provider_arguments` is `true`, Arguments of length from
the front will to the OAP backend
[...]
-| `plugin.kafka.bootstrap_servers` | A list of
host/port pairs to use for establishing the initial connection to the Kafka
cluster.
[...]
-| `plugin.kafka.get_topic_timeout` | Timeout period
of reading topics from the Kafka server, the unit is second.
[...]
-| `plugin.kafka.producer_config` | Kafka producer
configuration. Read [producer
configure](http://kafka.apache.org/24/documentation.html#producerconfigs) to
get more details. Check [Kafka report
doc](advanced-reporters.md#kafka-reporter) for more details and examples.
[...]
-| `plugin.kafka.producer_config_json` | Configure Kafka
Producer configuration in JSON format. Notice it will be overridden by
`plugin.kafka.producer_config[key]`, if the key duplication.
[...]
-| `plugin.kafka.topic_meter` | Specify which
Kafka topic name for Meter System data to report to.
[...]
-| `plugin.kafka.topic_metrics` | Specify which
Kafka topic name for JVM metrics data to report to.
[...]
-| `plugin.kafka.topic_segment` | Specify which
Kafka topic name for traces data to report to.
[...]
-| `plugin.kafka.topic_profiling` | Specify which
Kafka topic name for Thread Profiling snapshot to report to.
[...]
-| `plugin.kafka.topic_management` | Specify which
Kafka topic name for the register or heartbeat data of Service Instance to
report to.
[...]
-| `plugin.kafka.topic_logging` | Specify which
Kafka topic name for the logging data to report to.
[...]
-| `plugin.kafka.namespace` | isolate multi
OAP server when using same Kafka cluster (final topic name will append
namespace before Kafka topics with `-` ).
[...]
-| `plugin.springannotation.classname_match_regex` | Match spring
beans with regular expression for the class name. Multiple expressions could be
separated by a comma. This only works when `Spring annotation plugin` has been
activated.
[...]
-| `plugin.toolkit.log.transmit_formatted` | Whether or not
to transmit logged data as formatted or un-formatted.
[...]
-| `plugin.lettuce.trace_redis_parameters` | If set to true,
the parameters of Redis commands would be collected by Lettuce agent.
[...]
-| `plugin.lettuce.redis_parameter_max_length` | If set to
positive number and `plugin.lettuce.trace_redis_parameters` is set to `true`,
Redis command parameters would be collected and truncated to this length.
[...]
-| `plugin.jedis.trace_redis_parameters` | If set to true,
the parameters of Redis commands would be collected by Jedis agent.
[...]
-| `plugin.jedis.redis_parameter_max_length` | If set to
positive number and `plugin.jedis.trace_redis_parameters` is set to `true`,
Redis command parameters would be collected and truncated to this length.
[...]
-| `plugin.jedis.operation_mapping_write` | Specify which
command should be converted to `write` operation
[...]
-| `plugin.jedis.operation_mapping_read ` | Specify which
command should be converted to `read` operation
[...]
-| `plugin.redisson.trace_redis_parameters` | If set to true,
the parameters of Redis commands would be collected by Redisson agent.
[...]
-| `plugin.redisson.redis_parameter_max_length` | If set to
positive number and `plugin.redisson.trace_redis_parameters` is set to `true`,
Redis command parameters would be collected and truncated to this length.
[...]
-| `plugin.neo4j.trace_cypher_parameters` | If set to true,
the parameters of the cypher would be collected.
[...]
-| `plugin.neo4j.cypher_parameters_max_length` | If set to
positive number, the `db.cypher.parameters` would be truncated to this length,
otherwise it would be completely saved, which may cause performance problem.
[...]
-| `plugin.neo4j.cypher_body_max_length` | If set to
positive number, the `db.statement` would be truncated to this length,
otherwise it would be completely saved, which may cause performance problem.
[...]
-| `plugin.cpupolicy.sample_cpu_usage_percent_limit` | If set to a
positive number and activate `trace sampler CPU policy plugin`, the trace would
not be collected when agent process CPU usage percent is greater than
`plugin.cpupolicy.sample_cpu_usage_percent_limit`.
[...]
-| `plugin.micronauthttpclient.collect_http_params` | This config item
controls that whether the Micronaut http client plugin should collect the
parameters of the request. Also, activate implicitly in the profiled trace.
[...]
-| `plugin.micronauthttpserver.collect_http_params` | This config item
controls that whether the Micronaut http server plugin should collect the
parameters of the request. Also, activate implicitly in the profiled trace.
[...]
-| `plugin.memcached.operation_mapping_write` | Specify which
command should be converted to `write` operation
[...]
-| `plugin.memcached.operation_mapping_read` | Specify which
command should be converted to `read` operation
[...]
-| `plugin.ehcache.operation_mapping_write` | Specify which
command should be converted to `write` operation
[...]
-| `plugin.ehcache.operation_mapping_read` | Specify which
command should be converted to `read` operation
[...]
-| `plugin.guavacache.operation_mapping_write` | Specify which
command should be converted to `write` operation
[...]
-| `plugin.guavacache.operation_mapping_read` | Specify which
command should be converted to `read` operation
[...]
-
+| `plugin.jdkthreading.threading_class_prefixes` | Threading
classes (`java.lang.Runnable` and `java.util.concurrent.Callable`) and their
subclasses, including anonymous inner classes whose name match any one of the
`THREADING_CLASS_PREFIXES` (splitted by `,`) will be instrumented, make sure to
only specify as narrow prefixes as what you're expecting to instrument,
(`java.` and `javax.` will be ignored due to safety issues)
[...]
+| `plugin.tomcat.collect_http_params` | This
config item controls that whether the Tomcat plugin should collect the
parameters of the request. Also, activate implicitly in the profiled trace.
[...]
+| `plugin.springmvc.collect_http_params` | This
config item controls that whether the SpringMVC plugin should collect the
parameters of the request, when your Spring application is based on Tomcat,
consider only setting either `plugin.tomcat.collect_http_params` or
`plugin.springmvc.collect_http_params`. Also, activate implicitly in the
profiled trace.
[...]
+| `plugin.httpclient.collect_http_params` | This
config item controls that whether the HttpClient plugin should collect the
parameters of the request
[...]
+| `plugin.http.http_params_length_threshold` | When
`COLLECT_HTTP_PARAMS` is enabled, how many characters to keep and send to the
OAP backend, use negative values to keep and send the complete parameters, NB.
this config item is added for the sake of performance.
[...]
+| `plugin.http.http_headers_length_threshold` | When
`include_http_headers` declares header names, this threshold controls the
length limitation of all header values. use negative values to keep and send
the complete headers. Note. this config item is added for the sake of
performance.
[...]
+| `plugin.http.include_http_headers` | Set the
header names, which should be collected by the plugin. Header name must follow
`javax.servlet.http` definition. Multiple names should be split by comma.
[...]
+| `plugin.feign.collect_request_body` | This
config item controls that whether the Feign plugin should collect the http body
of the request.
[...]
+| `plugin.feign.filter_length_limit` | When
`COLLECT_REQUEST_BODY` is enabled, how many characters to keep and send to the
OAP backend, use negative values to keep and send the complete body.
[...]
+| `plugin.feign.supported_content_types_prefix` | When
`COLLECT_REQUEST_BODY` is enabled and content-type start with
SUPPORTED_CONTENT_TYPES_PREFIX, collect the body of the request , multiple
paths should be separated by `,`
[...]
+| `plugin.influxdb.trace_influxql` | If true,
trace all the influxql(query and write) in InfluxDB access, default is true.
[...]
+| `plugin.dubbo.collect_consumer_arguments` | Apache
Dubbo consumer collect `arguments` in RPC call, use `Object#toString` to
collect `arguments`.
[...]
+| `plugin.dubbo.consumer_arguments_length_threshold` | When
`plugin.dubbo.collect_consumer_arguments` is `true`, Arguments of length from
the front will to the OAP backend
[...]
+| `plugin.dubbo.collect_provider_arguments` | Apache
Dubbo provider collect `arguments` in RPC call, use `Object#toString` to
collect `arguments`.
[...]
+| `plugin.dubbo.provider_arguments_length_threshold` | When
`plugin.dubbo.collect_provider_arguments` is `true`, Arguments of length from
the front will to the OAP backend
[...]
+| `plugin.kafka.bootstrap_servers` | A list of
host/port pairs to use for establishing the initial connection to the Kafka
cluster.
[...]
+| `plugin.kafka.get_topic_timeout` | Timeout
period of reading topics from the Kafka server, the unit is second.
[...]
+| `plugin.kafka.producer_config` | Kafka
producer configuration. Read [producer
configure](http://kafka.apache.org/24/documentation.html#producerconfigs) to
get more details. Check [Kafka report
doc](advanced-reporters.md#kafka-reporter) for more details and examples.
[...]
+| `plugin.kafka.producer_config_json` | Configure
Kafka Producer configuration in JSON format. Notice it will be overridden by
`plugin.kafka.producer_config[key]`, if the key duplication.
[...]
+| `plugin.kafka.topic_meter` | Specify
which Kafka topic name for Meter System data to report to.
[...]
+| `plugin.kafka.topic_metrics` | Specify
which Kafka topic name for JVM metrics data to report to.
[...]
+| `plugin.kafka.topic_segment` | Specify
which Kafka topic name for traces data to report to.
[...]
+| `plugin.kafka.topic_profiling` | Specify
which Kafka topic name for Thread Profiling snapshot to report to.
[...]
+| `plugin.kafka.topic_management` | Specify
which Kafka topic name for the register or heartbeat data of Service Instance
to report to.
[...]
+| `plugin.kafka.topic_logging` | Specify
which Kafka topic name for the logging data to report to.
[...]
+| `plugin.kafka.namespace` | isolate
multi OAP server when using same Kafka cluster (final topic name will append
namespace before Kafka topics with `-` ).
[...]
+| `plugin.springannotation.classname_match_regex` | Match
spring beans with regular expression for the class name. Multiple expressions
could be separated by a comma. This only works when `Spring annotation plugin`
has been activated.
[...]
+| `plugin.toolkit.log.transmit_formatted` | Whether or
not to transmit logged data as formatted or un-formatted.
[...]
+| `plugin.lettuce.trace_redis_parameters` | If set to
true, the parameters of Redis commands would be collected by Lettuce agent.
[...]
+| `plugin.lettuce.redis_parameter_max_length` | If set to
positive number and `plugin.lettuce.trace_redis_parameters` is set to `true`,
Redis command parameters would be collected and truncated to this length.
[...]
+| `plugin.jedis.trace_redis_parameters` | If set to
true, the parameters of Redis commands would be collected by Jedis agent.
[...]
+| `plugin.jedis.redis_parameter_max_length` | If set to
positive number and `plugin.jedis.trace_redis_parameters` is set to `true`,
Redis command parameters would be collected and truncated to this length.
[...]
+| `plugin.jedis.operation_mapping_write` | Specify
which command should be converted to `write` operation
[...]
+| `plugin.jedis.operation_mapping_read ` | Specify
which command should be converted to `read` operation
[...]
+| `plugin.redisson.trace_redis_parameters` | If set to
true, the parameters of Redis commands would be collected by Redisson agent.
[...]
+| `plugin.redisson.redis_parameter_max_length` | If set to
positive number and `plugin.redisson.trace_redis_parameters` is set to `true`,
Redis command parameters would be collected and truncated to this length.
[...]
+| `plugin.neo4j.trace_cypher_parameters` | If set to
true, the parameters of the cypher would be collected.
[...]
+| `plugin.neo4j.cypher_parameters_max_length` | If set to
positive number, the `db.cypher.parameters` would be truncated to this length,
otherwise it would be completely saved, which may cause performance problem.
[...]
+| `plugin.neo4j.cypher_body_max_length` | If set to
positive number, the `db.statement` would be truncated to this length,
otherwise it would be completely saved, which may cause performance problem.
[...]
+| `plugin.cpupolicy.sample_cpu_usage_percent_limit` | If set to
a positive number and activate `trace sampler CPU policy plugin`, the trace
would not be collected when agent process CPU usage percent is greater than
`plugin.cpupolicy.sample_cpu_usage_percent_limit`.
[...]
+| `plugin.micronauthttpclient.collect_http_params` | This
config item controls that whether the Micronaut http client plugin should
collect the parameters of the request. Also, activate implicitly in the
profiled trace.
[...]
+| `plugin.micronauthttpserver.collect_http_params` | This
config item controls that whether the Micronaut http server plugin should
collect the parameters of the request. Also, activate implicitly in the
profiled trace.
[...]
+| `plugin.memcached.operation_mapping_write` | Specify
which command should be converted to `write` operation
[...]
+| `plugin.memcached.operation_mapping_read` | Specify
which command should be converted to `read` operation
[...]
+| `plugin.ehcache.operation_mapping_write` | Specify
which command should be converted to `write` operation
[...]
+| `plugin.ehcache.operation_mapping_read` | Specify
which command should be converted to `read` operation
[...]
+| `plugin.guavacache.operation_mapping_write` | Specify
which command should be converted to `write` operation
[...]
+| `plugin.guavacache.operation_mapping_read` | Specify
which command should be converted to `read` operation
[...]
# Reset Collection/Map type configurations as empty collection.
-* Collection type config, e.g. using ` plugin.kafka.topics=`
-to override default `plugin.kafka.topics=a,b,c,d`
-* Map type config, e.g. using `plugin.kafka.producer_config[]=` to override
default `plugin.kafka.producer_config[key]=value`
+* Collection type config, e.g. using ` plugin.kafka.topics=`
+ to override default `plugin.kafka.topics=a,b,c,d`
+* Map type config, e.g. using `plugin.kafka.producer_config[]=` to override
+ default `plugin.kafka.producer_config[key]=value`
# Dynamic Configurations
-All configurations above are static, if you need to change some agent settings
at runtime, please read [CDS - Configuration Discovery Service
document](configuration-discovery.md) for more details.
+
+All configurations above are static, if you need to change some agent settings
at runtime, please
+read [CDS - Configuration Discovery Service
document](configuration-discovery.md) for more details.
