diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8d7f963..0d2c325 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,8 +4,8 @@
 
 - **Important Note and Breaking Changes:**
   - Python 3.6 is no longer supported and may not function properly.
-  - A number of configuration options (mostly environment variables) are renamed to follow the convention of
-  'SW_AGENT' prefixes, please check with the latest official documentation before upgrading. (#273)
+  - A number of common configuration options (environment variables) are renamed to follow the convention of Java agent,
+  please check with the latest official documentation before upgrading. (#273, #282)
   
   https://skywalking.apache.org/docs/skywalking-python/v1.0.0/en/setup/configuration/
   - All agent core capabilities are now covered by test cases and enabled by default (Trace, Log, PVM runtime metrics, Profiler)
diff --git a/Makefile b/Makefile
index ea6ebd0..349bd0f 100644
--- a/Makefile
+++ b/Makefile
@@ -67,6 +67,7 @@
 # flake8 configurations should go to the file setup.cfg
 lint: clean
 	poetry run flake8 .
+	poetry run pylint --disable=all --enable=E0602,E0603,E1101 skywalking tests
 
 .PHONY: fix
 # fix problems described in CodingStyle.md - verify outcome with extra care
diff --git a/docs/en/setup/Configuration.md b/docs/en/setup/Configuration.md
index d9f28d9..fc94779 100644
--- a/docs/en/setup/Configuration.md
+++ b/docs/en/setup/Configuration.md
@@ -17,81 +17,81 @@
 ###  Agent Core Configuration Options
 | Configuration | Environment Variable | Type | Default Value | Description |
 | :------------ | :------------ | :------------ | :------------ | :------------ |
-| collector_address | SW_AGENT_COLLECTOR_ADDRESS | <class 'str'> | oap_host:oap_port | The backend OAP server address, 11800 is default OAP gRPC port, 12800 is HTTP, Kafka ignores this option and uses kafka_bootstrap_servers option. **This option should be changed accordingly with selected protocol** |
+| agent_collector_backend_services | SW_AGENT_AGENT_COLLECTOR_BACKEND_SERVICES | <class 'str'> | oap_host:oap_port | The backend OAP server address, 11800 is default OAP gRPC port, 12800 is HTTP, Kafka ignores this option and uses kafka_bootstrap_servers option. **This option should be changed accordingly with selected protocol** |
 | protocol | SW_AGENT_PROTOCOL | <class 'str'> | grpc | The protocol to communicate with the backend OAP, `http`, `grpc` or `kafka`, **we highly suggest using `grpc` in production as it's well optimized than `http`**. The `kafka` protocol provides an alternative way to submit data to the backend. |
-| service_name | SW_AGENT_SERVICE_NAME | <class 'str'> | Python Service Name | The name of your awesome Python service |
-| service_instance | SW_AGENT_SERVICE_INSTANCE | <class 'str'> | str(uuid.uuid1()).replace('-', '') | The name of this particular awesome Python service instance |
-| namespace | SW_AGENT_NAMESPACE | <class 'str'> |  | The agent namespace of the Python service (available as tag and the suffix of service name) |
+| agent_name | SW_AGENT_AGENT_NAME | <class 'str'> | Python Service Name | The name of your awesome Python service |
+| agent_instance_name | SW_AGENT_AGENT_INSTANCE_NAME | <class 'str'> | str(uuid.uuid1()).replace('-', '') | The name of this particular awesome Python service instance |
+| agent_namespace | SW_AGENT_AGENT_NAMESPACE | <class 'str'> |  | The agent namespace of the Python service (available as tag and the suffix of service name) |
 | kafka_bootstrap_servers | SW_AGENT_KAFKA_BOOTSTRAP_SERVERS | <class 'str'> | localhost:9092 | A list of host/port pairs to use for establishing the initial connection to your Kafka cluster. It is in the form of host1:port1,host2:port2,... (used for Kafka reporter protocol) |
 | kafka_namespace | SW_AGENT_KAFKA_NAMESPACE | <class 'str'> |  | The kafka namespace specified by OAP side SW_NAMESPACE, prepends the following kafka topic names with a `-`. |
 | kafka_topic_management | SW_AGENT_KAFKA_TOPIC_MANAGEMENT | <class 'str'> | skywalking-managements | Specifying Kafka topic name for service instance reporting and registering, this should be in sync with OAP |
 | kafka_topic_segment | SW_AGENT_KAFKA_TOPIC_SEGMENT | <class 'str'> | skywalking-segments | Specifying Kafka topic name for Tracing data, this should be in sync with OAP |
 | kafka_topic_log | SW_AGENT_KAFKA_TOPIC_LOG | <class 'str'> | skywalking-logs | Specifying Kafka topic name for Log data, this should be in sync with OAP |
 | kafka_topic_meter | SW_AGENT_KAFKA_TOPIC_METER | <class 'str'> | skywalking-meters | Specifying Kafka topic name for Meter data, this should be in sync with OAP |
-| kafka_reporter_custom_configurations | SW_AGENT_KAFKA_REPORTER_CUSTOM_CONFIGURATIONS | <class 'str'> |  | The configs to init KafkaProducer, supports the basic arguments (whose type is either `str`, `bool`, or `int`) listed [here](https://kafka-python.readthedocs.io/en/master/apidoc/KafkaProducer.html#kafka.KafkaProducer) This config only works from env variables, each one should be passed in `SW_AGENT_KAFKA_REPORTER_CONFIG_<KEY_NAME>` |
-| force_tls | SW_AGENT_FORCE_TLS | <class 'bool'> | False | Use TLS for communication with SkyWalking OAP (no cert required) |
-| authentication | SW_AGENT_AUTHENTICATION | <class 'str'> |  | The authentication token to verify that the agent is trusted by the backend OAP, as for how to configure the backend, refer to [the yaml](https://github.com/apache/skywalking/blob/4f0f39ffccdc9b41049903cc540b8904f7c9728e/oap-server/server-bootstrap/src/main/resources/application.yml#L155-L158). |
-| logging_level | SW_AGENT_LOGGING_LEVEL | <class 'str'> | INFO | The level of agent self-logs, could be one of `CRITICAL`, `FATAL`, `ERROR`, `WARN`(`WARNING`), `INFO`, `DEBUG`. Please turn on debug if an issue is encountered to find out what's going on |
+| kafka_reporter_custom_configurations | SW_AGENT_KAFKA_REPORTER_CUSTOM_CONFIGURATIONS | <class 'str'> |  | The configs to init KafkaProducer, supports the basic arguments (whose type is either `str`, `bool`, or `int`) listed [here](https://kafka-python.readthedocs.io/en/master/apidoc/KafkaProducer.html#kafka.KafkaProducer) This config only works from env variables, each one should be passed in `SW_KAFKA_REPORTER_CONFIG_<KEY_NAME>` |
+| agent_force_tls | SW_AGENT_AGENT_FORCE_TLS | <class 'bool'> | False | Use TLS for communication with SkyWalking OAP (no cert required) |
+| agent_authentication | SW_AGENT_AGENT_AUTHENTICATION | <class 'str'> |  | The authentication token to verify that the agent is trusted by the backend OAP, as for how to configure the backend, refer to [the yaml](https://github.com/apache/skywalking/blob/4f0f39ffccdc9b41049903cc540b8904f7c9728e/oap-server/server-bootstrap/src/main/resources/application.yml#L155-L158). |
+| agent_logging_level | SW_AGENT_AGENT_LOGGING_LEVEL | <class 'str'> | INFO | The level of agent self-logs, could be one of `CRITICAL`, `FATAL`, `ERROR`, `WARN`(`WARNING`), `INFO`, `DEBUG`. Please turn on debug if an issue is encountered to find out what's going on |
 ###  Agent Core Danger Zone
 | Configuration | Environment Variable | Type | Default Value | Description |
 | :------------ | :------------ | :------------ | :------------ | :------------ |
-| heartbeat_period | SW_AGENT_HEARTBEAT_PERIOD | <class 'int'> | 30 | The agent will exchange heartbeat message with SkyWalking OAP backend every `period` seconds |
-| collector_properties_report_period_factor | SW_AGENT_COLLECTOR_PROPERTIES_REPORT_PERIOD_FACTOR | <class 'int'> | 10 | The agent will report service instance properties every `factor * heartbeat period` seconds default: 10*30 = 300 seconds |
-| instance_properties_json | SW_AGENT_INSTANCE_PROPERTIES_JSON | <class 'str'> |  | A custom JSON string to be reported as service instance properties, e.g. `{"key": "value"}` |
-| experimental_fork_support | SW_AGENT_EXPERIMENTAL_FORK_SUPPORT | <class 'bool'> | False | The agent will try to restart itself in any os.fork()-ed child process. Important Note: it's not suitable for short-lived processes as each one will introduce overhead and create a new instance in SkyWalking dashboard in format of `service_instance-child-<pid>` (TODO) |
-| queue_timeout | SW_AGENT_QUEUE_TIMEOUT | <class 'int'> | 1 | DANGEROUS - This option controls the interval of each bulk report from telemetry data queues Do not modify unless you have evaluated its impact given your service load. |
+| agent_collector_heartbeat_period | SW_AGENT_AGENT_COLLECTOR_HEARTBEAT_PERIOD | <class 'int'> | 30 | The agent will exchange heartbeat message with SkyWalking OAP backend every `period` seconds |
+| agent_collector_properties_report_period_factor | SW_AGENT_AGENT_COLLECTOR_PROPERTIES_REPORT_PERIOD_FACTOR | <class 'int'> | 10 | The agent will report service instance properties every `factor * heartbeat period` seconds default: 10*30 = 300 seconds |
+| agent_instance_properties_json | SW_AGENT_AGENT_INSTANCE_PROPERTIES_JSON | <class 'str'> |  | A custom JSON string to be reported as service instance properties, e.g. `{"key": "value"}` |
+| agent_experimental_fork_support | SW_AGENT_AGENT_EXPERIMENTAL_FORK_SUPPORT | <class 'bool'> | False | The agent will try to restart itself in any os.fork()-ed child process. Important Note: it's not suitable for short-lived processes as each one will introduce overhead and create a new instance in SkyWalking dashboard in format of `service_instance-child-<pid>` (TODO) |
+| agent_queue_timeout | SW_AGENT_AGENT_QUEUE_TIMEOUT | <class 'int'> | 1 | DANGEROUS - This option controls the interval of each bulk report from telemetry data queues Do not modify unless you have evaluated its impact given your service load. |
 ###  SW_PYTHON Auto Instrumentation CLI
 | Configuration | Environment Variable | Type | Default Value | Description |
 | :------------ | :------------ | :------------ | :------------ | :------------ |
-| sw_python_bootstrap_propagate | SW_AGENT_SW_PYTHON_BOOTSTRAP_PROPAGATE | <class 'bool'> | False | Special: can only be passed via environment. This config controls the child process agent bootstrap behavior in `sw-python` CLI, if set to `False`, a valid child process will not boot up a SkyWalking Agent. Please refer to the [CLI Guide](CLI.md) for details. |
+| agent_sw_python_bootstrap_propagate | SW_AGENT_AGENT_SW_PYTHON_BOOTSTRAP_PROPAGATE | <class 'bool'> | False | Special: can only be passed via environment. This config controls the child process agent bootstrap behavior in `sw-python` CLI, if set to `False`, a valid child process will not boot up a SkyWalking Agent. Please refer to the [CLI Guide](CLI.md) for details. |
 ###  Trace Reporter Configurations
 | Configuration | Environment Variable | Type | Default Value | Description |
 | :------------ | :------------ | :------------ | :------------ | :------------ |
-| trace_reporter_max_buffer_size | SW_AGENT_TRACE_REPORTER_MAX_BUFFER_SIZE | <class 'int'> | 10000 | The maximum queue backlog size for sending the segment data to backend, segments beyond this are silently dropped |
-| trace_ignore_path | SW_AGENT_TRACE_IGNORE_PATH | <class 'str'> |  | You can setup multiple URL path patterns, The endpoints match these patterns wouldn't be traced. the current matching rules follow Ant Path match style , like /path/*, /path/**, /path/?. |
-| ignore_suffix | SW_AGENT_IGNORE_SUFFIX | <class 'str'> | .jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.html,.svg  | If the operation name of the first span is included in this set, this segment should be ignored. |
+| agent_trace_reporter_max_buffer_size | SW_AGENT_AGENT_TRACE_REPORTER_MAX_BUFFER_SIZE | <class 'int'> | 10000 | The maximum queue backlog size for sending the segment data to backend, segments beyond this are silently dropped |
+| agent_trace_ignore_path | SW_AGENT_AGENT_TRACE_IGNORE_PATH | <class 'str'> |  | You can setup multiple URL path patterns, The endpoints match these patterns wouldn't be traced. the current matching rules follow Ant Path match style , like /path/*, /path/**, /path/?. |
+| agent_ignore_suffix | SW_AGENT_AGENT_IGNORE_SUFFIX | <class 'str'> | .jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.html,.svg  | If the operation name of the first span is included in this set, this segment should be ignored. |
 | correlation_element_max_number | SW_AGENT_CORRELATION_ELEMENT_MAX_NUMBER | <class 'int'> | 3 | Max element count of the correlation context. |
 | correlation_value_max_length | SW_AGENT_CORRELATION_VALUE_MAX_LENGTH | <class 'int'> | 128 | Max value length of correlation context element. |
 ###  Profiling Configurations
 | Configuration | Environment Variable | Type | Default Value | Description |
 | :------------ | :------------ | :------------ | :------------ | :------------ |
-| profiler_active | SW_AGENT_PROFILER_ACTIVE | <class 'bool'> | True | If `True`, Python agent will enable profiler when user create a new profiling task. |
-| get_profile_task_interval | SW_AGENT_GET_PROFILE_TASK_INTERVAL | <class 'int'> | 20 | The number of seconds between two profile task query. |
-| profile_max_parallel | SW_AGENT_PROFILE_MAX_PARALLEL | <class 'int'> | 5 | The number of parallel monitor segment count. |
-| profile_duration | SW_AGENT_PROFILE_DURATION | <class 'int'> | 10 | The maximum monitor segment time(minutes), if current segment monitor time out of limit, then stop it. |
-| profile_dump_max_stack_depth | SW_AGENT_PROFILE_DUMP_MAX_STACK_DEPTH | <class 'int'> | 500 | The number of max dump thread stack depth |
-| profile_snapshot_transport_buffer_size | SW_AGENT_PROFILE_SNAPSHOT_TRANSPORT_BUFFER_SIZE | <class 'int'> | 50 | The number of snapshot transport to backend buffer size |
+| agent_profile_active | SW_AGENT_AGENT_PROFILE_ACTIVE | <class 'bool'> | True | If `True`, Python agent will enable profiler when user create a new profiling task. |
+| agent_collector_get_profile_task_interval | SW_AGENT_AGENT_COLLECTOR_GET_PROFILE_TASK_INTERVAL | <class 'int'> | 20 | The number of seconds between two profile task query. |
+| agent_profile_max_parallel | SW_AGENT_AGENT_PROFILE_MAX_PARALLEL | <class 'int'> | 5 | The number of parallel monitor segment count. |
+| agent_profile_duration | SW_AGENT_AGENT_PROFILE_DURATION | <class 'int'> | 10 | The maximum monitor segment time(minutes), if current segment monitor time out of limit, then stop it. |
+| agent_profile_dump_max_stack_depth | SW_AGENT_AGENT_PROFILE_DUMP_MAX_STACK_DEPTH | <class 'int'> | 500 | The number of max dump thread stack depth |
+| agent_profile_snapshot_transport_buffer_size | SW_AGENT_AGENT_PROFILE_SNAPSHOT_TRANSPORT_BUFFER_SIZE | <class 'int'> | 50 | The number of snapshot transport to backend buffer size |
 ###  Log Reporter Configurations
 | Configuration | Environment Variable | Type | Default Value | Description |
 | :------------ | :------------ | :------------ | :------------ | :------------ |
-| log_reporter_active | SW_AGENT_LOG_REPORTER_ACTIVE | <class 'bool'> | True | If `True`, Python agent will report collected logs to the OAP or Satellite. Otherwise, it disables the feature. |
-| log_reporter_safe_mode | SW_AGENT_LOG_REPORTER_SAFE_MODE | <class 'bool'> | False | If `True`, Python agent will filter out HTTP basic auth information from log records. By default, it disables the feature due to potential performance impact brought by regular expression |
-| log_reporter_max_buffer_size | SW_AGENT_LOG_REPORTER_MAX_BUFFER_SIZE | <class 'int'> | 10000 | The maximum queue backlog size for sending log data to backend, logs beyond this are silently dropped. |
-| log_reporter_level | SW_AGENT_LOG_REPORTER_LEVEL | <class 'str'> | WARNING | This config specifies the logger levels of concern, any logs with a level below the config will be ignored. |
-| log_reporter_ignore_filter | SW_AGENT_LOG_REPORTER_IGNORE_FILTER | <class 'bool'> | False | This config customizes whether to ignore the application-defined logger filters, if `True`, all logs are reported disregarding any filter rules. |
-| log_reporter_formatted | SW_AGENT_LOG_REPORTER_FORMATTED | <class 'bool'> | True | If `True`, the log reporter will transmit the logs as formatted. Otherwise, puts logRecord.msg and logRecord.args into message content and tags(`argument.n`), respectively. Along with an `exception` tag if an exception was raised. Only applies to logging module. |
-| log_reporter_layout | SW_AGENT_LOG_REPORTER_LAYOUT | <class 'str'> | %(asctime)s [%(threadName)s] %(levelname)s %(name)s - %(message)s | The log reporter formats the logRecord message based on the layout given. Only applies to logging module. |
-| cause_exception_depth | SW_AGENT_CAUSE_EXCEPTION_DEPTH | <class 'int'> | 10 | This configuration is shared by log reporter and tracer. This config limits agent to report up to `limit` stacktrace, please refer to [Python traceback]( https://docs.python.org/3/library/traceback.html#traceback.print_tb) for more explanations. |
+| agent_log_reporter_active | SW_AGENT_AGENT_LOG_REPORTER_ACTIVE | <class 'bool'> | True | If `True`, Python agent will report collected logs to the OAP or Satellite. Otherwise, it disables the feature. |
+| agent_log_reporter_safe_mode | SW_AGENT_AGENT_LOG_REPORTER_SAFE_MODE | <class 'bool'> | False | If `True`, Python agent will filter out HTTP basic auth information from log records. By default, it disables the feature due to potential performance impact brought by regular expression |
+| agent_log_reporter_max_buffer_size | SW_AGENT_AGENT_LOG_REPORTER_MAX_BUFFER_SIZE | <class 'int'> | 10000 | The maximum queue backlog size for sending log data to backend, logs beyond this are silently dropped. |
+| agent_log_reporter_level | SW_AGENT_AGENT_LOG_REPORTER_LEVEL | <class 'str'> | WARNING | This config specifies the logger levels of concern, any logs with a level below the config will be ignored. |
+| agent_log_reporter_ignore_filter | SW_AGENT_AGENT_LOG_REPORTER_IGNORE_FILTER | <class 'bool'> | False | This config customizes whether to ignore the application-defined logger filters, if `True`, all logs are reported disregarding any filter rules. |
+| agent_log_reporter_formatted | SW_AGENT_AGENT_LOG_REPORTER_FORMATTED | <class 'bool'> | True | If `True`, the log reporter will transmit the logs as formatted. Otherwise, puts logRecord.msg and logRecord.args into message content and tags(`argument.n`), respectively. Along with an `exception` tag if an exception was raised. Only applies to logging module. |
+| agent_log_reporter_layout | SW_AGENT_AGENT_LOG_REPORTER_LAYOUT | <class 'str'> | %(asctime)s [%(threadName)s] %(levelname)s %(name)s - %(message)s | The log reporter formats the logRecord message based on the layout given. Only applies to logging module. |
+| agent_cause_exception_depth | SW_AGENT_AGENT_CAUSE_EXCEPTION_DEPTH | <class 'int'> | 10 | This configuration is shared by log reporter and tracer. This config limits agent to report up to `limit` stacktrace, please refer to [Python traceback]( https://docs.python.org/3/library/traceback.html#traceback.print_tb) for more explanations. |
 ###  Meter Reporter Configurations
 | Configuration | Environment Variable | Type | Default Value | Description |
 | :------------ | :------------ | :------------ | :------------ | :------------ |
-| meter_reporter_active | SW_AGENT_METER_REPORTER_ACTIVE | <class 'bool'> | True | If `True`, Python agent will report collected meters to the OAP or Satellite. Otherwise, it disables the feature. |
-| meter_reporter_max_buffer_size | SW_AGENT_METER_REPORTER_MAX_BUFFER_SIZE | <class 'int'> | 10000 | The maximum queue backlog size for sending meter data to backend, meters beyond this are silently dropped. |
-| meter_reporter_period | SW_AGENT_METER_REPORTER_PERIOD | <class 'int'> | 20 | The interval in seconds between each meter data report |
-| pvm_meter_reporter_active | SW_AGENT_PVM_METER_REPORTER_ACTIVE | <class 'bool'> | True | If `True`, Python agent will report collected Python Virtual Machine (PVM) meters to the OAP or Satellite. Otherwise, it disables the feature. |
+| agent_meter_reporter_active | SW_AGENT_AGENT_METER_REPORTER_ACTIVE | <class 'bool'> | True | If `True`, Python agent will report collected meters to the OAP or Satellite. Otherwise, it disables the feature. |
+| agent_meter_reporter_max_buffer_size | SW_AGENT_AGENT_METER_REPORTER_MAX_BUFFER_SIZE | <class 'int'> | 10000 | The maximum queue backlog size for sending meter data to backend, meters beyond this are silently dropped. |
+| agent_meter_reporter_period | SW_AGENT_AGENT_METER_REPORTER_PERIOD | <class 'int'> | 20 | The interval in seconds between each meter data report |
+| agent_pvm_meter_reporter_active | SW_AGENT_AGENT_PVM_METER_REPORTER_ACTIVE | <class 'bool'> | True | If `True`, Python agent will report collected Python Virtual Machine (PVM) meters to the OAP or Satellite. Otherwise, it disables the feature. |
 ###  Plugin Related configurations
 | Configuration | Environment Variable | Type | Default Value | Description |
 | :------------ | :------------ | :------------ | :------------ | :------------ |
-| disable_plugins | SW_AGENT_DISABLE_PLUGINS | <class 'list'> | [''] | The name patterns in comma-separated pattern, plugins whose name matches one of the pattern won't be installed |
-| http_params_length_threshold | SW_AGENT_HTTP_PARAMS_LENGTH_THRESHOLD | <class 'int'> | 1024 | 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. |
-| http_ignore_method | SW_AGENT_HTTP_IGNORE_METHOD | <class 'str'> |  | Comma-delimited list of http methods to ignore (GET, POST, HEAD, OPTIONS, etc...) |
-| sql_parameters_length | SW_AGENT_SQL_PARAMETERS_LENGTH | <class 'int'> | 0 | The maximum length of the collected parameter, parameters longer than the specified length will be truncated, length 0 turns off parameter tracing |
-| pymongo_trace_parameters | SW_AGENT_PYMONGO_TRACE_PARAMETERS | <class 'bool'> | False | Indicates whether to collect the filters of pymongo |
-| pymongo_parameters_max_length | SW_AGENT_PYMONGO_PARAMETERS_MAX_LENGTH | <class 'int'> | 512 | The maximum length of the collected filters, filters longer than the specified length will be truncated |
-| elasticsearch_trace_dsl | SW_AGENT_ELASTICSEARCH_TRACE_DSL | <class 'bool'> | False | If true, trace all the DSL(Domain Specific Language) in ElasticSearch access, default is false |
-| flask_collect_http_params | SW_AGENT_FLASK_COLLECT_HTTP_PARAMS | <class 'bool'> | False | This config item controls that whether the Flask plugin should collect the parameters of the request. |
-| sanic_collect_http_params | SW_AGENT_SANIC_COLLECT_HTTP_PARAMS | <class 'bool'> | False | This config item controls that whether the Sanic plugin should collect the parameters of the request. |
-| django_collect_http_params | SW_AGENT_DJANGO_COLLECT_HTTP_PARAMS | <class 'bool'> | False | This config item controls that whether the Django plugin should collect the parameters of the request. |
-| fastapi_collect_http_params | SW_AGENT_FASTAPI_COLLECT_HTTP_PARAMS | <class 'bool'> | False | This config item controls that whether the FastAPI plugin should collect the parameters of the request. |
-| bottle_collect_http_params | SW_AGENT_BOTTLE_COLLECT_HTTP_PARAMS | <class 'bool'> | False | This config item controls that whether the Bottle plugin should collect the parameters of the request. |
-| celery_parameters_length | SW_AGENT_CELERY_PARAMETERS_LENGTH | <class 'int'> | 512 | The maximum length of `celery` functions parameters, longer than this will be truncated, 0 turns off |
+| agent_disable_plugins | SW_AGENT_AGENT_DISABLE_PLUGINS | <class 'list'> | [''] | The name patterns in comma-separated pattern, plugins whose name matches one of the pattern won't be installed |
+| plugin_http_http_params_length_threshold | SW_AGENT_PLUGIN_HTTP_HTTP_PARAMS_LENGTH_THRESHOLD | <class 'int'> | 1024 | 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_ignore_method | SW_AGENT_PLUGIN_HTTP_IGNORE_METHOD | <class 'str'> |  | Comma-delimited list of http methods to ignore (GET, POST, HEAD, OPTIONS, etc...) |
+| plugin_sql_parameters_max_length | SW_AGENT_PLUGIN_SQL_PARAMETERS_MAX_LENGTH | <class 'int'> | 0 | The maximum length of the collected parameter, parameters longer than the specified length will be truncated, length 0 turns off parameter tracing |
+| plugin_pymongo_trace_parameters | SW_AGENT_PLUGIN_PYMONGO_TRACE_PARAMETERS | <class 'bool'> | False | Indicates whether to collect the filters of pymongo |
+| plugin_pymongo_parameters_max_length | SW_AGENT_PLUGIN_PYMONGO_PARAMETERS_MAX_LENGTH | <class 'int'> | 512 | The maximum length of the collected filters, filters longer than the specified length will be truncated |
+| plugin_elasticsearch_trace_dsl | SW_AGENT_PLUGIN_ELASTICSEARCH_TRACE_DSL | <class 'bool'> | False | If true, trace all the DSL(Domain Specific Language) in ElasticSearch access, default is false |
+| plugin_flask_collect_http_params | SW_AGENT_PLUGIN_FLASK_COLLECT_HTTP_PARAMS | <class 'bool'> | False | This config item controls that whether the Flask plugin should collect the parameters of the request. |
+| plugin_sanic_collect_http_params | SW_AGENT_PLUGIN_SANIC_COLLECT_HTTP_PARAMS | <class 'bool'> | False | This config item controls that whether the Sanic plugin should collect the parameters of the request. |
+| plugin_django_collect_http_params | SW_AGENT_PLUGIN_DJANGO_COLLECT_HTTP_PARAMS | <class 'bool'> | False | This config item controls that whether the Django plugin should collect the parameters of the request. |
+| plugin_fastapi_collect_http_params | SW_AGENT_PLUGIN_FASTAPI_COLLECT_HTTP_PARAMS | <class 'bool'> | False | This config item controls that whether the FastAPI plugin should collect the parameters of the request. |
+| plugin_bottle_collect_http_params | SW_AGENT_PLUGIN_BOTTLE_COLLECT_HTTP_PARAMS | <class 'bool'> | False | This config item controls that whether the Bottle plugin should collect the parameters of the request. |
+| plugin_celery_parameters_length | SW_AGENT_PLUGIN_CELERY_PARAMETERS_LENGTH | <class 'int'> | 512 | The maximum length of `celery` functions parameters, longer than this will be truncated, 0 turns off |
diff --git a/docs/en/setup/Intrusive.md b/docs/en/setup/Intrusive.md
index 89d4f47..743bb06 100644
--- a/docs/en/setup/Intrusive.md
+++ b/docs/en/setup/Intrusive.md
@@ -7,20 +7,20 @@
 By default, SkyWalking Python agent uses gRPC protocol to report data to SkyWalking backend,
 in SkyWalking backend, the port of gRPC protocol is `11800`, and the port of HTTP protocol is `12800`,
 
-You could configure `collector_address` (or environment variable `SW_AGENT_COLLECTOR_ADDRESS`)
+You could configure `collector_address` (or environment variable `SW_AGENT_COLLECTOR_BACKEND_SERVICES`)
 and set `protocol` (or environment variable `SW_AGENT_PROTOCOL` to one of
 `gprc`, `http` or `kafka` according to the protocol you would like to use.
 
 ### Report data via gRPC protocol (Default)
 
 For example, if you want to use gRPC protocol to report data, configure `collector_address`
-(or environment variable `SW_AGENT_COLLECTOR_ADDRESS`) to `<oap-ip-or-host>:11800`,
+(or environment variable `SW_AGENT_COLLECTOR_BACKEND_SERVICES`) to `<oap-ip-or-host>:11800`,
 such as `127.0.0.1:11800`:
 
 ```python
 from skywalking import agent, config
 
-config.init(collector_address='127.0.0.1:11800', service_name='your awesome service')
+config.init(collector_address='127.0.0.1:11800', agent_name='your awesome service')
 
 agent.start()
 ```
@@ -28,7 +28,7 @@
 ### Report data via HTTP protocol
 
 However, if you want to use HTTP protocol to report data, configure `collector_address`
-(or environment variable `SW_AGENT_COLLECTOR_ADDRESS`) to `<oap-ip-or-host>:12800`,
+(or environment variable `SW_AGENT_COLLECTOR_BACKEND_SERVICES`) to `<oap-ip-or-host>:12800`,
 such as `127.0.0.1:12800`, further set `protocol` (or environment variable `SW_AGENT_PROTOCOL` to `http`):
 
 > Remember you should install `skywalking-python` with extra requires `http`, `pip install "apache-skywalking[http]`.
@@ -36,7 +36,7 @@
 ```python
 from skywalking import agent, config
 
-config.init(collector_address='127.0.0.1:12800', service_name='your awesome service', protocol='http')
+config.init(collector_address='127.0.0.1:12800', agent_name='your awesome service', protocol='http')
 
 agent.start()
 ```
@@ -44,7 +44,7 @@
 ### Report data via Kafka protocol
 
 Finally, if you want to use Kafka protocol to report data, configure `kafka_bootstrap_servers`
-(or environment variable `SW_AGENT_KAFKA_BOOTSTRAP_SERVERS`) to `kafka-brokers`,
+(or environment variable `SW_KAFKA_BOOTSTRAP_SERVERS`) to `kafka-brokers`,
 such as `127.0.0.1:9200`, further set `protocol` (or environment variable `SW_AGENT_PROTOCOL` to `kafka`):
 
 > Remember you should install `skywalking-python` with extra requires `kafka`, `pip install "apache-skywalking[kafka]"`.
@@ -52,11 +52,11 @@
 ```python
 from skywalking import agent, config
 
-config.init(kafka_bootstrap_servers='127.0.0.1:9200', service_name='your awesome service', protocol='kafka')
+config.init(kafka_bootstrap_servers='127.0.0.1:9200', agent_name='your awesome service', protocol='kafka')
 
 agent.start()
 ```
 
-Alternatively, you can also pass the configurations via environment variables (such as `SW_AGENT_SERVICE_NAME`, `SW_AGENT_COLLECTOR_ADDRESS`, etc.) so that you don't need to call `config.init`.
+Alternatively, you can also pass the configurations via environment variables (such as `SW_AGENT_NAME`, `SW_AGENT_COLLECTOR_BACKEND_SERVICES`, etc.) so that you don't need to call `config.init`.
 
 All supported environment variables can be found in the [Environment Variables List](Configuration.md).
diff --git a/docs/en/setup/advanced/LogReporter.md b/docs/en/setup/advanced/LogReporter.md
index acfe409..bbe2c44 100644
--- a/docs/en/setup/advanced/LogReporter.md
+++ b/docs/en/setup/advanced/LogReporter.md
@@ -8,7 +8,7 @@
 ```Python 
 from skywalking import agent, config
 
-config.init(collector_address='127.0.0.1:11800', service_name='your awesome service',
+config.init(collector_address='127.0.0.1:11800', agent_name='your awesome service',
                 log_reporter_active=True)  # defaults to grpc protocol
 agent.start()
 ``` 
diff --git a/docs/en/setup/faq/How-to-disable-plugin.md b/docs/en/setup/faq/How-to-disable-plugin.md
index 757e899..32de24b 100644
--- a/docs/en/setup/faq/How-to-disable-plugin.md
+++ b/docs/en/setup/faq/How-to-disable-plugin.md
@@ -6,7 +6,8 @@
 ```python
 from skywalking import config
 
-config.disable_plugins = ['sw_http_server', 'sw_urllib_request']  # can be also CSV format, i.e. 'sw_http_server,sw_urllib_request'
+config.agent_disable_plugins = ['sw_http_server',
+                                'sw_urllib_request']  # can be also CSV format, i.e. 'sw_http_server,sw_urllib_request'
 ```
 
 You can also disable the plugins via environment variables `SW_AGENT_DISABLE_PLUGINS`, 
diff --git a/docs/en/setup/faq/How-to-use-with-uwsgi.md b/docs/en/setup/faq/How-to-use-with-uwsgi.md
index f051c97..2bd12ac 100644
--- a/docs/en/setup/faq/How-to-use-with-uwsgi.md
+++ b/docs/en/setup/faq/How-to-use-with-uwsgi.md
@@ -17,7 +17,7 @@
 
 @postfork
 def init_tracing():
-    config.init(collector_address='127.0.0.1:11800', service_name='your awesome service')
+    config.init(collector_address='127.0.0.1:11800', agent_name='your awesome service')
 
     agent.start()
 
diff --git a/poetry.lock b/poetry.lock
index 88afb64..dbe6e3f 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -174,6 +174,25 @@
 ]
 
 [[package]]
+name = "astroid"
+version = "2.11.7"
+description = "An abstract syntax tree for Python with inference support."
+category = "dev"
+optional = false
+python-versions = ">=3.6.2"
+files = [
+    {file = "astroid-2.11.7-py3-none-any.whl", hash = "sha256:86b0a340a512c65abf4368b80252754cda17c02cdbbd3f587dddf98112233e7b"},
+    {file = "astroid-2.11.7.tar.gz", hash = "sha256:bb24615c77f4837c707669d16907331374ae8a964650a66999da3f5ca68dc946"},
+]
+
+[package.dependencies]
+lazy-object-proxy = ">=1.4.0"
+setuptools = ">=20.0"
+typed-ast = {version = ">=1.4.0,<2.0", markers = "implementation_name == \"cpython\" and python_version < \"3.8\""}
+typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""}
+wrapt = ">=1.11,<2"
+
+[[package]]
 name = "async-timeout"
 version = "3.0.1"
 description = "Timeout context manager for asyncio programs"
@@ -694,6 +713,21 @@
 packaging = "*"
 
 [[package]]
+name = "dill"
+version = "0.3.6"
+description = "serialize all of python"
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+files = [
+    {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"},
+    {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"},
+]
+
+[package.extras]
+graph = ["objgraph (>=1.7.2)"]
+
+[[package]]
 name = "django"
 version = "3.2.8"
 description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design."
@@ -1536,6 +1570,24 @@
 ]
 
 [[package]]
+name = "isort"
+version = "5.11.5"
+description = "A Python utility / library to sort Python imports."
+category = "dev"
+optional = false
+python-versions = ">=3.7.0"
+files = [
+    {file = "isort-5.11.5-py3-none-any.whl", hash = "sha256:ba1d72fb2595a01c7895a5128f9585a5cc4b6d395f1c8d514989b9a7eb2a8746"},
+    {file = "isort-5.11.5.tar.gz", hash = "sha256:6be1f76a507cb2ecf16c7cf14a37e41609ca082330be4e3436a18ef74add55db"},
+]
+
+[package.extras]
+colors = ["colorama (>=0.4.3,<0.5.0)"]
+pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"]
+plugins = ["setuptools"]
+requirements-deprecated-finder = ["pip-api", "pipreqs"]
+
+[[package]]
 name = "itsdangerous"
 version = "2.1.2"
 description = "Safely pass data to untrusted environments and back."
@@ -1615,6 +1667,52 @@
 zookeeper = ["kazoo (>=1.3.1)"]
 
 [[package]]
+name = "lazy-object-proxy"
+version = "1.9.0"
+description = "A fast and thorough lazy object proxy."
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+files = [
+    {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"},
+    {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"},
+    {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"},
+    {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"},
+    {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"},
+    {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"},
+    {file = "lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"},
+    {file = "lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"},
+    {file = "lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"},
+    {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"},
+    {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"},
+    {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"},
+    {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"},
+    {file = "lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"},
+    {file = "lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"},
+    {file = "lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"},
+    {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"},
+    {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"},
+    {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"},
+    {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"},
+    {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"},
+    {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"},
+    {file = "lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"},
+    {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"},
+    {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"},
+    {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"},
+    {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"},
+    {file = "lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"},
+    {file = "lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"},
+    {file = "lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"},
+    {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"},
+    {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"},
+    {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"},
+    {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"},
+    {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"},
+    {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"},
+]
+
+[[package]]
 name = "loguru"
 version = "0.6.0"
 description = "Python logging made (stupidly) simple"
@@ -1921,6 +2019,25 @@
 testing = ["pytest", "pytest-cov"]
 
 [[package]]
+name = "platformdirs"
+version = "3.0.0"
+description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+files = [
+    {file = "platformdirs-3.0.0-py3-none-any.whl", hash = "sha256:b1d5eb14f221506f50d6604a561f4c5786d9e80355219694a1b244bcd96f4567"},
+    {file = "platformdirs-3.0.0.tar.gz", hash = "sha256:8a1228abb1ef82d788f74139988b137e78692984ec7b08eaa6c65f1723af28f9"},
+]
+
+[package.dependencies]
+typing-extensions = {version = ">=4.4", markers = "python_version < \"3.8\""}
+
+[package.extras]
+docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"]
+test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"]
+
+[[package]]
 name = "pluggy"
 version = "1.0.0"
 description = "plugin and hook calling mechanisms for python"
@@ -2216,6 +2333,31 @@
 ]
 
 [[package]]
+name = "pylint"
+version = "2.13.9"
+description = "python code static checker"
+category = "dev"
+optional = false
+python-versions = ">=3.6.2"
+files = [
+    {file = "pylint-2.13.9-py3-none-any.whl", hash = "sha256:705c620d388035bdd9ff8b44c5bcdd235bfb49d276d488dd2c8ff1736aa42526"},
+    {file = "pylint-2.13.9.tar.gz", hash = "sha256:095567c96e19e6f57b5b907e67d265ff535e588fe26b12b5ebe1fc5645b2c731"},
+]
+
+[package.dependencies]
+astroid = ">=2.11.5,<=2.12.0-dev0"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+dill = ">=0.2"
+isort = ">=4.2.5,<6"
+mccabe = ">=0.6,<0.8"
+platformdirs = ">=2.2.0"
+tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
+typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""}
+
+[package.extras]
+testutil = ["gitpython (>3)"]
+
+[[package]]
 name = "pymongo"
 version = "3.12.0"
 description = "Python driver for MongoDB <http://www.mongodb.org>"
@@ -2796,6 +2938,40 @@
 docs = ["Sphinx (>=1.3.1)", "docutils", "pylons-sphinx-themes"]
 
 [[package]]
+name = "typed-ast"
+version = "1.5.4"
+description = "a fork of Python 2 and 3 ast modules with type comment support"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+files = [
+    {file = "typed_ast-1.5.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:669dd0c4167f6f2cd9f57041e03c3c2ebf9063d0757dc89f79ba1daa2bfca9d4"},
+    {file = "typed_ast-1.5.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:211260621ab1cd7324e0798d6be953d00b74e0428382991adfddb352252f1d62"},
+    {file = "typed_ast-1.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:267e3f78697a6c00c689c03db4876dd1efdfea2f251a5ad6555e82a26847b4ac"},
+    {file = "typed_ast-1.5.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c542eeda69212fa10a7ada75e668876fdec5f856cd3d06829e6aa64ad17c8dfe"},
+    {file = "typed_ast-1.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:a9916d2bb8865f973824fb47436fa45e1ebf2efd920f2b9f99342cb7fab93f72"},
+    {file = "typed_ast-1.5.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:79b1e0869db7c830ba6a981d58711c88b6677506e648496b1f64ac7d15633aec"},
+    {file = "typed_ast-1.5.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a94d55d142c9265f4ea46fab70977a1944ecae359ae867397757d836ea5a3f47"},
+    {file = "typed_ast-1.5.4-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:183afdf0ec5b1b211724dfef3d2cad2d767cbefac291f24d69b00546c1837fb6"},
+    {file = "typed_ast-1.5.4-cp36-cp36m-win_amd64.whl", hash = "sha256:639c5f0b21776605dd6c9dbe592d5228f021404dafd377e2b7ac046b0349b1a1"},
+    {file = "typed_ast-1.5.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cf4afcfac006ece570e32d6fa90ab74a17245b83dfd6655a6f68568098345ff6"},
+    {file = "typed_ast-1.5.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed855bbe3eb3715fca349c80174cfcfd699c2f9de574d40527b8429acae23a66"},
+    {file = "typed_ast-1.5.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6778e1b2f81dfc7bc58e4b259363b83d2e509a65198e85d5700dfae4c6c8ff1c"},
+    {file = "typed_ast-1.5.4-cp37-cp37m-win_amd64.whl", hash = "sha256:0261195c2062caf107831e92a76764c81227dae162c4f75192c0d489faf751a2"},
+    {file = "typed_ast-1.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2efae9db7a8c05ad5547d522e7dbe62c83d838d3906a3716d1478b6c1d61388d"},
+    {file = "typed_ast-1.5.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7d5d014b7daa8b0bf2eaef684295acae12b036d79f54178b92a2b6a56f92278f"},
+    {file = "typed_ast-1.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:370788a63915e82fd6f212865a596a0fefcbb7d408bbbb13dea723d971ed8bdc"},
+    {file = "typed_ast-1.5.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4e964b4ff86550a7a7d56345c7864b18f403f5bd7380edf44a3c1fb4ee7ac6c6"},
+    {file = "typed_ast-1.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:683407d92dc953c8a7347119596f0b0e6c55eb98ebebd9b23437501b28dcbb8e"},
+    {file = "typed_ast-1.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4879da6c9b73443f97e731b617184a596ac1235fe91f98d279a7af36c796da35"},
+    {file = "typed_ast-1.5.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3e123d878ba170397916557d31c8f589951e353cc95fb7f24f6bb69adc1a8a97"},
+    {file = "typed_ast-1.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebd9d7f80ccf7a82ac5f88c521115cc55d84e35bf8b446fcd7836eb6b98929a3"},
+    {file = "typed_ast-1.5.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98f80dee3c03455e92796b58b98ff6ca0b2a6f652120c263efdba4d6c5e58f72"},
+    {file = "typed_ast-1.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:0fdbcf2fef0ca421a3f5912555804296f0b0960f0418c440f5d6d3abb549f3e1"},
+    {file = "typed_ast-1.5.4.tar.gz", hash = "sha256:39e21ceb7388e4bb37f4c679d72707ed46c2fbf2a5609b8b8ebc4b067d977df2"},
+]
+
+[[package]]
 name = "typing-extensions"
 version = "4.4.0"
 description = "Backported and Experimental Type Hints for Python 3.7+"
@@ -3463,4 +3639,4 @@
 [metadata]
 lock-version = "2.0"
 python-versions = ">=3.7, <3.11"
-content-hash = "e5d6730b56dadeffa7355b287be1264c2925a142e958cff02ed3d8067ec9261c"
+content-hash = "1d42154067478257d0ac1a7c065cd03e81219992808471f6b04cd45d53cc6f3f"
diff --git a/pyproject.toml b/pyproject.toml
index 899f042..80365c6 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -130,6 +130,7 @@
 httpx = "^0.23.3"
 
 [tool.poetry.group.lint.dependencies]
+pylint = '*'
 flake8 = "^5.0.4"
 # isort = "^5.10.1"
 unify = "^0.5"
diff --git a/skywalking/agent/__init__.py b/skywalking/agent/__init__.py
index 9d61487..77d590b 100644
--- a/skywalking/agent/__init__.py
+++ b/skywalking/agent/__init__.py
@@ -98,7 +98,7 @@
 
 
 def __query_profile_command():
-    wait = base = config.get_profile_task_interval
+    wait = base = config.agent_collector_get_profile_task_interval
 
     while not __finished.is_set():
         try:
@@ -134,7 +134,7 @@
     global __heartbeat_thread, __report_thread, __log_report_thread, __query_profile_thread, \
         __command_dispatch_thread, __send_profile_thread, __queue, __log_queue, __snapshot_queue, __meter_queue, __finished
 
-    __queue = Queue(maxsize=config.trace_reporter_max_buffer_size)
+    __queue = Queue(maxsize=config.agent_trace_reporter_max_buffer_size)
     __finished = Event()
     __heartbeat_thread = Thread(name='HeartbeatThread', target=__heartbeat, daemon=True)
     __report_thread = Thread(name='ReportThread', target=__report, daemon=True)
@@ -144,12 +144,12 @@
     __report_thread.start()
     __command_dispatch_thread.start()
 
-    if config.meter_reporter_active:
-        __meter_queue = Queue(maxsize=config.meter_reporter_max_buffer_size)
+    if config.agent_meter_reporter_active:
+        __meter_queue = Queue(maxsize=config.agent_meter_reporter_max_buffer_size)
         __meter_report_thread = Thread(name='MeterReportThread', target=__report_meter, daemon=True)
         __meter_report_thread.start()
 
-        if config.pvm_meter_reporter_active:
+        if config.agent_pvm_meter_reporter_active:
             from skywalking.meter.pvm.cpu_usage import CPUUsageDataSource
             from skywalking.meter.pvm.gc_data import GCDataSource
             from skywalking.meter.pvm.mem_usage import MEMUsageDataSource
@@ -160,14 +160,13 @@
             GCDataSource().registry()
             ThreadDataSource().registry()
 
-
-    if config.log_reporter_active:
-        __log_queue = Queue(maxsize=config.log_reporter_max_buffer_size)
+    if config.agent_log_reporter_active:
+        __log_queue = Queue(maxsize=config.agent_log_reporter_max_buffer_size)
         __log_report_thread = Thread(name='LogReportThread', target=__report_log, daemon=True)
         __log_report_thread.start()
 
-    if config.profiler_active:
-        __snapshot_queue = Queue(maxsize=config.profile_snapshot_transport_buffer_size)
+    if config.agent_profile_active:
+        __snapshot_queue = Queue(maxsize=config.agent_profile_snapshot_transport_buffer_size)
 
         __query_profile_thread = Thread(name='QueryProfileCommandThread', target=__query_profile_command, daemon=True)
         __query_profile_thread.start()
@@ -189,7 +188,7 @@
         __protocol = KafkaProtocol()
 
     plugins.install()
-    if config.log_reporter_active:  # todo - Add support for printing traceID/ context in logs
+    if config.agent_log_reporter_active:  # todo - Add support for printing traceID/ context in logs
         from skywalking import log
         log.install()
 
@@ -200,11 +199,11 @@
     __protocol.report_segment(__queue, False)
     __queue.join()
 
-    if config.log_reporter_active:
+    if config.agent_log_reporter_active:
         __protocol.report_log(__log_queue, False)
         __log_queue.join()
 
-    if config.profiler_active:
+    if config.agent_profile_active:
         __protocol.report_snapshot(__snapshot_queue, False)
         __snapshot_queue.join()
 
diff --git a/skywalking/agent/protocol/grpc.py b/skywalking/agent/protocol/grpc.py
index d873830..565d399 100644
--- a/skywalking/agent/protocol/grpc.py
+++ b/skywalking/agent/protocol/grpc.py
@@ -43,14 +43,14 @@
         self.properties_sent = False
         self.state = None
 
-        if config.force_tls:
-            self.channel = grpc.secure_channel(config.collector_address, grpc.ssl_channel_credentials())
+        if config.agent_force_tls:
+            self.channel = grpc.secure_channel(config.agent_collector_backend_services, grpc.ssl_channel_credentials())
         else:
-            self.channel = grpc.insecure_channel(config.collector_address)
+            self.channel = grpc.insecure_channel(config.agent_collector_backend_services)
 
-        if config.authentication:
+        if config.agent_authentication:
             self.channel = grpc.intercept_channel(
-                self.channel, header_adder_interceptor('authentication', config.authentication)
+                self.channel, header_adder_interceptor('authentication', config.agent_authentication)
             )
 
         self.channel.subscribe(self._cb, try_to_connect=True)
@@ -98,7 +98,7 @@
 
             while True:
                 try:
-                    timeout = config.queue_timeout  # type: int
+                    timeout = config.agent_queue_timeout  # type: int
                     if not start:  # make sure first time through queue is always checked
                         start = time()
                     else:
@@ -117,8 +117,8 @@
                 s = SegmentObject(
                     traceId=str(segment.related_traces[0]),
                     traceSegmentId=str(segment.segment_id),
-                    service=config.service_name,
-                    serviceInstance=config.service_instance,
+                    service=config.agent_name,
+                    serviceInstance=config.agent_instance_name,
                     spans=[SpanObject(
                         spanId=span.sid,
                         parentSpanId=span.pid,
@@ -167,7 +167,7 @@
 
             while True:
                 try:
-                    timeout = config.queue_timeout  # type: int
+                    timeout = config.agent_queue_timeout  # type: int
                     if not start:  # make sure first time through queue is always checked
                         start = time()
                     else:
@@ -199,7 +199,7 @@
 
             while True:
                 try:
-                    timeout = config.queue_timeout  # type: int
+                    timeout = config.agent_queue_timeout  # type: int
                     if not start:  # make sure first time through queue is always checked
                         start = time()
                     else:
@@ -230,7 +230,7 @@
 
             while True:
                 try:
-                    timeout = config.queue_timeout  # type: int
+                    timeout = config.agent_queue_timeout  # type: int
                     if not start:  # make sure first time through queue is always checked
                         start = time()
                     else:
diff --git a/skywalking/agent/protocol/http.py b/skywalking/agent/protocol/http.py
index 695604e..e3a9afa 100644
--- a/skywalking/agent/protocol/http.py
+++ b/skywalking/agent/protocol/http.py
@@ -47,7 +47,7 @@
 
             while True:
                 try:
-                    timeout = config.queue_timeout  # type: int
+                    timeout = config.agent_queue_timeout  # type: int
                     if not start:  # make sure first time through queue is always checked
                         start = time()
                     else:
@@ -78,7 +78,7 @@
 
             while True:
                 try:
-                    timeout = config.queue_timeout  # type: int
+                    timeout = config.agent_queue_timeout  # type: int
                     if not start:  # make sure first time through queue is always checked
                         start = time()
                     else:
diff --git a/skywalking/agent/protocol/kafka.py b/skywalking/agent/protocol/kafka.py
index e5483f7..1c7eaa4 100644
--- a/skywalking/agent/protocol/kafka.py
+++ b/skywalking/agent/protocol/kafka.py
@@ -53,7 +53,7 @@
 
             while True:
                 try:
-                    timeout = config.queue_timeout  # type: int
+                    timeout = config.agent_queue_timeout  # type: int
                     if not start:  # make sure first time through queue is always checked
                         start = time()
                     else:
@@ -71,8 +71,8 @@
                 s = SegmentObject(
                     traceId=str(segment.related_traces[0]),
                     traceSegmentId=str(segment.segment_id),
-                    service=config.service_name,
-                    serviceInstance=config.service_instance,
+                    service=config.agent_name,
+                    serviceInstance=config.agent_instance_name,
                     spans=[SpanObject(
                         spanId=span.sid,
                         parentSpanId=span.pid,
@@ -117,7 +117,7 @@
 
             while True:
                 try:
-                    timeout = config.queue_timeout  # type: int
+                    timeout = config.agent_queue_timeout  # type: int
                     if not start:  # make sure first time through queue is always checked
                         start = time()
                     else:
@@ -144,7 +144,7 @@
 
             while True:
                 try:
-                    timeout = config.queue_timeout  # type: int
+                    timeout = config.agent_queue_timeout  # type: int
                     if not start:  # make sure first time through queue is always checked
                         start = time()
                     else:
diff --git a/skywalking/bootstrap/loader/sitecustomize.py b/skywalking/bootstrap/loader/sitecustomize.py
index 46f0772..bf24ba1 100644
--- a/skywalking/bootstrap/loader/sitecustomize.py
+++ b/skywalking/bootstrap/loader/sitecustomize.py
@@ -131,7 +131,7 @@
 
     # also override debug for skywalking agent itself
     if os.environ.get('SW_PYTHON_CLI_DEBUG_ENABLED') == 'True':  # set from the original CLI runner
-        config.logging_level = 'DEBUG'
+        config.agent_logging_level = 'DEBUG'
 
     # Currently supports configs read from os.environ
 
diff --git a/skywalking/client/__init__.py b/skywalking/client/__init__.py
index 420d1a2..d9f12ad 100644
--- a/skywalking/client/__init__.py
+++ b/skywalking/client/__init__.py
@@ -47,7 +47,7 @@
         Default: 30 * 10 seconds
         """
         self.sent_properties_counter += 1
-        if self.sent_properties_counter % config.collector_properties_report_period_factor == 0:
+        if self.sent_properties_counter % config.agent_collector_properties_report_period_factor == 0:
             self.send_instance_props()
 
     @staticmethod
@@ -74,11 +74,11 @@
                 {'key': 'Process No.', 'value': str(os.getpid())},
             ]
 
-        namespace = config.namespace
+        namespace = config.agent_namespace
         if namespace:
             properties.append({'key': 'namespace', 'value': namespace})
 
-        instance_properties_json = config.instance_properties_json
+        instance_properties_json = config.agent_instance_properties_json
         if instance_properties_json:
             # load instance properties from json string
             json_properties = json.loads(instance_properties_json)
diff --git a/skywalking/client/grpc.py b/skywalking/client/grpc.py
index 1ebcd97..7be0d0a 100644
--- a/skywalking/client/grpc.py
+++ b/skywalking/client/grpc.py
@@ -41,8 +41,8 @@
 
     def send_instance_props(self):
         self.service_stub.reportInstanceProperties(InstanceProperties(
-            service=config.service_name,
-            serviceInstance=config.service_instance,
+            service=config.agent_name,
+            serviceInstance=config.agent_instance_name,
             properties=self.instance_properties,
         ))
 
@@ -50,15 +50,15 @@
         self.refresh_instance_props()
 
         self.service_stub.keepAlive(InstancePingPkg(
-            service=config.service_name,
-            serviceInstance=config.service_instance,
+            service=config.agent_name,
+            serviceInstance=config.agent_instance_name,
         ))
 
         if logger_debug_enabled:
             logger.debug(
                 'service heart beats, [%s], [%s]',
-                config.service_name,
-                config.service_instance,
+                config.agent_name,
+                config.agent_instance_name,
             )
 
 
@@ -95,8 +95,8 @@
 
     def do_query(self):
         query = ProfileTaskCommandQuery(
-            service=config.service_name,
-            serviceInstance=config.service_instance,
+            service=config.agent_name,
+            serviceInstance=config.agent_instance_name,
             lastCommandTime=profile_task_execution_service.get_last_command_create_time()
         )
 
@@ -108,8 +108,8 @@
 
     def finish(self, task: ProfileTask):
         finish_report = ProfileTaskFinishReport(
-            service=config.service_name,
-            serviceInstance=config.service_instance,
+            service=config.agent_name,
+            serviceInstance=config.agent_instance_name,
             taskId=task.task_id
         )
         self.profile_stub.reportTaskFinish(finish_report)
diff --git a/skywalking/client/http.py b/skywalking/client/http.py
index 7b8313e..bc35fd6 100644
--- a/skywalking/client/http.py
+++ b/skywalking/client/http.py
@@ -28,15 +28,15 @@
         super().__init__()
         self.instance_properties = self.get_instance_properties()
 
-        proto = 'https://' if config.force_tls else 'http://'
-        self.url_instance_props = f"{proto}{config.collector_address.rstrip('/')}/v3/management/reportProperties"
-        self.url_heart_beat = f"{proto}{config.collector_address.rstrip('/')}/v3/management/keepAlive"
+        proto = 'https://' if config.agent_force_tls else 'http://'
+        self.url_instance_props = f"{proto}{config.agent_collector_backend_services.rstrip('/')}/v3/management/reportProperties"
+        self.url_heart_beat = f"{proto}{config.agent_collector_backend_services.rstrip('/')}/v3/management/keepAlive"
         self.session = requests.Session()
 
     def send_instance_props(self):
         res = self.session.post(self.url_instance_props, json={
-            'service': config.service_name,
-            'serviceInstance': config.service_instance,
+            'service': config.agent_name,
+            'serviceInstance': config.agent_instance_name,
             'properties': self.instance_properties,
         })
         if logger_debug_enabled:
@@ -48,12 +48,12 @@
         if logger_debug_enabled:
             logger.debug(
                 'service heart beats, [%s], [%s]',
-                config.service_name,
-                config.service_instance,
+                config.agent_name,
+                config.agent_instance_name,
             )
         res = self.session.post(self.url_heart_beat, json={
-            'service': config.service_name,
-            'serviceInstance': config.service_instance,
+            'service': config.agent_name,
+            'serviceInstance': config.agent_instance_name,
         })
         if logger_debug_enabled:
             logger.debug('heartbeat response: %s', res)
@@ -61,8 +61,8 @@
 
 class HttpTraceSegmentReportService(TraceSegmentReportService):
     def __init__(self):
-        proto = 'https://' if config.force_tls else 'http://'
-        self.url_report = f"{proto}{config.collector_address.rstrip('/')}/v3/segment"
+        proto = 'https://' if config.agent_force_tls else 'http://'
+        self.url_report = f"{proto}{config.agent_collector_backend_services.rstrip('/')}/v3/segment"
         self.session = requests.Session()
 
     def report(self, generator):
@@ -70,8 +70,8 @@
             res = self.session.post(self.url_report, json={
                 'traceId': str(segment.related_traces[0]),
                 'traceSegmentId': str(segment.segment_id),
-                'service': config.service_name,
-                'serviceInstance': config.service_instance,
+                'service': config.agent_name,
+                'serviceInstance': config.agent_instance_name,
                 'spans': [{
                     'spanId': span.sid,
                     'parentSpanId': span.pid,
@@ -112,8 +112,8 @@
 
 class HttpLogDataReportService(LogDataReportService):
     def __init__(self):
-        proto = 'https://' if config.force_tls else 'http://'
-        self.url_report = f"{proto}{config.collector_address.rstrip('/')}/v3/logs"
+        proto = 'https://' if config.agent_force_tls else 'http://'
+        self.url_report = f"{proto}{config.agent_collector_backend_services.rstrip('/')}/v3/logs"
         self.session = requests.Session()
 
     def report(self, generator):
diff --git a/skywalking/client/kafka.py b/skywalking/client/kafka.py
index 16fdaba..536266d 100644
--- a/skywalking/client/kafka.py
+++ b/skywalking/client/kafka.py
@@ -32,7 +32,7 @@
 def __init_kafka_configs():
     kafka_configs['bootstrap_servers'] = config.kafka_bootstrap_servers.split(',')
     # process all kafka configs in env
-    kafka_keys = [key for key in os.environ.keys() if key.startswith('SW_AGENT_KAFKA_REPORTER_CONFIG_')]
+    kafka_keys = [key for key in os.environ.keys() if key.startswith('SW_KAFKA_REPORTER_CONFIG_')]
     for kafka_key in kafka_keys:
         key = kafka_key[25:]
         val = os.environ.get(kafka_key)
@@ -70,8 +70,8 @@
 
     def send_instance_props(self):
         instance = InstanceProperties(
-            service=config.service_name,
-            serviceInstance=config.service_instance,
+            service=config.agent_name,
+            serviceInstance=config.agent_instance_name,
             properties=self.instance_properties,
         )
 
@@ -85,13 +85,13 @@
         if logger_debug_enabled:
             logger.debug(
                 'service heart beats, [%s], [%s]',
-                config.service_name,
-                config.service_instance,
+                config.agent_name,
+                config.agent_instance_name,
             )
 
         instance_ping_pkg = InstancePingPkg(
-            service=config.service_name,
-            serviceInstance=config.service_instance,
+            service=config.agent_name,
+            serviceInstance=config.agent_instance_name,
         )
 
         key = bytes(instance_ping_pkg.serviceInstance, encoding='utf-8')
@@ -134,7 +134,7 @@
     def report(self, generator):
         collection = MeterDataCollection()
         collection.meterData.extend(list(generator))
-        key = bytes(config.service_instance, encoding='utf-8')
+        key = bytes(config.agent_instance_name, encoding='utf-8')
         value = collection.SerializeToString()
         self.producer.send(topic=self.topic, key=key, value=value)
 
diff --git a/skywalking/config.py b/skywalking/config.py
index 4cc97e0..67c5ac6 100644
--- a/skywalking/config.py
+++ b/skywalking/config.py
@@ -45,160 +45,163 @@
 # BEGIN: Agent Core Configuration Options
 # The backend OAP server address, 11800 is default OAP gRPC port, 12800 is HTTP, Kafka ignores this option
 # and uses kafka_bootstrap_servers option. **This option should be changed accordingly with selected protocol**
-collector_address: str = os.getenv('SW_AGENT_COLLECTOR_ADDRESS', 'oap_host:oap_port')
+agent_collector_backend_services: str = os.getenv('SW_AGENT_COLLECTOR_BACKEND_SERVICES', 'oap_host:oap_port')
 # The protocol to communicate with the backend OAP, `http`, `grpc` or `kafka`, **we highly suggest using `grpc` in
 # production as it's well optimized than `http`**. The `kafka` protocol provides an alternative way to submit data to
 # the backend.
 protocol: str = os.getenv('SW_AGENT_PROTOCOL', 'grpc').lower()
 # The name of your awesome Python service
-service_name: str = os.getenv('SW_AGENT_SERVICE_NAME', 'Python Service Name')
+agent_name: str = os.getenv('SW_AGENT_NAME', 'Python Service Name')
 # The name of this particular awesome Python service instance
-service_instance: str = os.getenv('SW_AGENT_SERVICE_INSTANCE', str(uuid.uuid1()).replace('-', ''))
+agent_instance_name: str = os.getenv('SW_AGENT_INSTANCE_NAME', str(uuid.uuid1()).replace('-', ''))
 # The agent namespace of the Python service (available as tag and the suffix of service name)
-namespace: str = os.getenv('SW_AGENT_NAMESPACE', '')
+agent_namespace: str = os.getenv('SW_AGENT_NAMESPACE', '')
 # A list of host/port pairs to use for establishing the initial connection to your Kafka cluster.
 # It is in the form of host1:port1,host2:port2,... (used for Kafka reporter protocol)
-kafka_bootstrap_servers: str = os.getenv('SW_AGENT_KAFKA_BOOTSTRAP_SERVERS', 'localhost:9092')
+kafka_bootstrap_servers: str = os.getenv('SW_KAFKA_BOOTSTRAP_SERVERS', 'localhost:9092')
 # The kafka namespace specified by OAP side SW_NAMESPACE, prepends the following kafka topic names with a `-`.
-kafka_namespace: str = os.getenv('SW_AGENT_KAFKA_NAMESPACE', '')
+kafka_namespace: str = os.getenv('SW_KAFKA_NAMESPACE', '')
 # Specifying Kafka topic name for service instance reporting and registering, this should be in sync with OAP
-kafka_topic_management: str = os.getenv('SW_AGENT_KAFKA_TOPIC_MANAGEMENT', 'skywalking-managements')
+kafka_topic_management: str = os.getenv('SW_KAFKA_TOPIC_MANAGEMENT', 'skywalking-managements')
 # Specifying Kafka topic name for Tracing data, this should be in sync with OAP
-kafka_topic_segment: str = os.getenv('SW_AGENT_KAFKA_TOPIC_SEGMENT', 'skywalking-segments')
+kafka_topic_segment: str = os.getenv('SW_KAFKA_TOPIC_SEGMENT', 'skywalking-segments')
 # Specifying Kafka topic name for Log data, this should be in sync with OAP
-kafka_topic_log: str = os.getenv('SW_AGENT_KAFKA_TOPIC_LOG', 'skywalking-logs')
+kafka_topic_log: str = os.getenv('SW_KAFKA_TOPIC_LOG', 'skywalking-logs')
 # Specifying Kafka topic name for Meter data, this should be in sync with OAP
-kafka_topic_meter: str = os.getenv('SW_AGENT_KAFKA_TOPIC_METER', 'skywalking-meters')
+kafka_topic_meter: str = os.getenv('SW_KAFKA_TOPIC_METER', 'skywalking-meters')
 # The configs to init KafkaProducer, supports the basic arguments (whose type is either `str`, `bool`, or `int`) listed
 # [here](https://kafka-python.readthedocs.io/en/master/apidoc/KafkaProducer.html#kafka.KafkaProducer)
-# This config only works from env variables, each one should be passed in `SW_AGENT_KAFKA_REPORTER_CONFIG_<KEY_NAME>`
-kafka_reporter_custom_configurations: str = os.getenv('SW_AGENT_KAFKA_REPORTER_CUSTOM_CONFIGURATIONS', '')
+# This config only works from env variables, each one should be passed in `SW_KAFKA_REPORTER_CONFIG_<KEY_NAME>`
+kafka_reporter_custom_configurations: str = os.getenv('SW_KAFKA_REPORTER_CUSTOM_CONFIGURATIONS', '')
 # Use TLS for communication with SkyWalking OAP (no cert required)
-force_tls: bool = os.getenv('SW_AGENT_FORCE_TLS', '').lower() == 'true'
+agent_force_tls: bool = os.getenv('SW_AGENT_FORCE_TLS', '').lower() == 'true'
 # The authentication token to verify that the agent is trusted by the backend OAP, as for how to configure the
 # backend, refer to [the yaml](https://github.com/apache/skywalking/blob/4f0f39ffccdc9b41049903cc540b8904f7c9728e/
 # oap-server/server-bootstrap/src/main/resources/application.yml#L155-L158).
-authentication: str = os.getenv('SW_AGENT_AUTHENTICATION', '')
+agent_authentication: str = os.getenv('SW_AGENT_AUTHENTICATION', '')
 # The level of agent self-logs, could be one of `CRITICAL`, `FATAL`, `ERROR`, `WARN`(`WARNING`), `INFO`, `DEBUG`.
 # Please turn on debug if an issue is encountered to find out what's going on
-logging_level: str = os.getenv('SW_AGENT_LOGGING_LEVEL', 'INFO')
+agent_logging_level: str = os.getenv('SW_AGENT_LOGGING_LEVEL', 'INFO')
 
 # BEGIN: Agent Core Danger Zone
 # The agent will exchange heartbeat message with SkyWalking OAP backend every `period` seconds
-heartbeat_period: int = int(os.getenv('SW_AGENT_HEARTBEAT_PERIOD', '30'))
+agent_collector_heartbeat_period: int = int(os.getenv('SW_AGENT_COLLECTOR_HEARTBEAT_PERIOD', '30'))
 # The agent will report service instance properties every
 # `factor * heartbeat period` seconds default: 10*30 = 300 seconds
-collector_properties_report_period_factor = int(os.getenv('SW_AGENT_COLLECTOR_PROPERTIES_REPORT_PERIOD_FACTOR', '10'))
+agent_collector_properties_report_period_factor = int(
+    os.getenv('SW_AGENT_COLLECTOR_PROPERTIES_REPORT_PERIOD_FACTOR', '10'))
 # A custom JSON string to be reported as service instance properties, e.g. `{"key": "value"}`
-instance_properties_json: str = os.getenv('SW_INSTANCE_PROPERTIES_JSON', '')
+agent_instance_properties_json: str = os.getenv('SW_AGENT_INSTANCE_PROPERTIES_JSON', '')
 # The agent will try to restart itself in any os.fork()-ed child process. Important Note: it's not suitable for
 # short-lived processes as each one will introduce overhead and create a new instance in SkyWalking dashboard
 # in format of `service_instance-child-<pid>` (TODO)
-experimental_fork_support: bool = os.getenv('SW_AGENT_EXPERIMENTAL_FORK_SUPPORT', '').lower() == 'true'
+agent_experimental_fork_support: bool = os.getenv('SW_AGENT_EXPERIMENTAL_FORK_SUPPORT', '').lower() == 'true'
 # DANGEROUS - This option controls the interval of each bulk report from telemetry data queues
 # Do not modify unless you have evaluated its impact given your service load.
-queue_timeout: int = int(os.getenv('SW_AGENT_QUEUE_TIMEOUT', '1'))
+agent_queue_timeout: int = int(os.getenv('SW_AGENT_QUEUE_TIMEOUT', '1'))
 
 # BEGIN: SW_PYTHON Auto Instrumentation CLI
 # Special: can only be passed via environment. This config controls the child process agent bootstrap behavior in
 # `sw-python` CLI, if set to `False`, a valid child process will not boot up a SkyWalking Agent. Please refer to the
 # [CLI Guide](CLI.md) for details.
-sw_python_bootstrap_propagate = os.getenv('SW_AGENT_SW_PYTHON_BOOTSTRAP_PROPAGATE', '').lower() == 'true'
+agent_sw_python_bootstrap_propagate = os.getenv('SW_AGENT_SW_PYTHON_BOOTSTRAP_PROPAGATE', '').lower() == 'true'
 
 # BEGIN: Trace Reporter Configurations
 # The maximum queue backlog size for sending the segment data to backend, segments beyond this are silently dropped
-trace_reporter_max_buffer_size: int = int(os.getenv('SW_AGENT_TRACE_REPORTER_MAX_BUFFER_SIZE', '10000'))
+agent_trace_reporter_max_buffer_size: int = int(os.getenv('SW_AGENT_TRACE_REPORTER_MAX_BUFFER_SIZE', '10000'))
 # You can setup multiple URL path patterns, The endpoints match these patterns wouldn't be traced. the current
 # matching rules follow Ant Path match style , like /path/*, /path/**, /path/?.
-trace_ignore_path: str = os.getenv('SW_AGENT_TRACE_IGNORE_PATH', '')
+agent_trace_ignore_path: str = os.getenv('SW_AGENT_TRACE_IGNORE_PATH', '')
 # If the operation name of the first span is included in this set, this segment should be ignored.
-ignore_suffix: str = os.getenv('SW_AGENT_IGNORE_SUFFIX', '.jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,'
-                                                         '.mp4,.html,.svg ')
+agent_ignore_suffix: str = os.getenv('SW_AGENT_IGNORE_SUFFIX', '.jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,'
+                                                               '.mp4,.html,.svg ')
 # Max element count of the correlation context.
-correlation_element_max_number: int = int(os.getenv('SW_AGENT_CORRELATION_ELEMENT_MAX_NUMBER', '3'))
+correlation_element_max_number: int = int(os.getenv('SW_CORRELATION_ELEMENT_MAX_NUMBER', '3'))
 # Max value length of correlation context element.
-correlation_value_max_length: int = int(os.getenv('SW_AGENT_CORRELATION_VALUE_MAX_LENGTH', '128'))
+correlation_value_max_length: int = int(os.getenv('SW_CORRELATION_VALUE_MAX_LENGTH', '128'))
 
 # BEGIN: Profiling Configurations
 # If `True`, Python agent will enable profiler when user create a new profiling task.
-profiler_active: bool = os.getenv('SW_AGENT_PROFILER_ACTIVE', '').lower() != 'false'
+agent_profile_active: bool = os.getenv('SW_AGENT_PROFILE_ACTIVE', '').lower() != 'false'
 # The number of seconds between two profile task query.
-get_profile_task_interval: int = int(os.getenv('SW_AGENT_GET_PROFILE_TASK_INTERVAL', '20'))
+agent_collector_get_profile_task_interval: int = int(os.getenv('SW_AGENT_COLLECTOR_GET_PROFILE_TASK_INTERVAL', '20'))
 # The number of parallel monitor segment count.
-profile_max_parallel: int = int(os.getenv('SW_AGENT_PROFILE_MAX_PARALLEL', '5'))
+agent_profile_max_parallel: int = int(os.getenv('SW_AGENT_PROFILE_MAX_PARALLEL', '5'))
 # The maximum monitor segment time(minutes), if current segment monitor time out of limit, then stop it.
-profile_duration: int = int(os.getenv('SW_AGENT_PROFILE_DURATION', '10'))
+agent_profile_duration: int = int(os.getenv('SW_AGENT_PROFILE_DURATION', '10'))
 # The number of max dump thread stack depth
-profile_dump_max_stack_depth: int = int(os.getenv('SW_AGENT_PROFILE_DUMP_MAX_STACK_DEPTH', '500'))
+agent_profile_dump_max_stack_depth: int = int(os.getenv('SW_AGENT_PROFILE_DUMP_MAX_STACK_DEPTH', '500'))
 # The number of snapshot transport to backend buffer size
-profile_snapshot_transport_buffer_size: int = int(os.getenv('SW_AGENT_PROFILE_SNAPSHOT_TRANSPORT_BUFFER_SIZE', '50'))
+agent_profile_snapshot_transport_buffer_size: int = int(
+    os.getenv('SW_AGENT_PROFILE_SNAPSHOT_TRANSPORT_BUFFER_SIZE', '50'))
 
 # BEGIN: Log Reporter Configurations
 # If `True`, Python agent will report collected logs to the OAP or Satellite. Otherwise, it disables the feature.
-log_reporter_active: bool = os.getenv('SW_AGENT_LOG_REPORTER_ACTIVE', '').lower() != 'false'
+agent_log_reporter_active: bool = os.getenv('SW_AGENT_LOG_REPORTER_ACTIVE', '').lower() != 'false'
 # If `True`, Python agent will filter out HTTP basic auth information from log records. By default, it disables the
 # feature due to potential performance impact brought by regular expression
-log_reporter_safe_mode: bool = os.getenv('SW_AGENT_LOG_REPORTER_SAFE_MODE', '').lower() == 'true'
+agent_log_reporter_safe_mode: bool = os.getenv('SW_AGENT_LOG_REPORTER_SAFE_MODE', '').lower() == 'true'
 # The maximum queue backlog size for sending log data to backend, logs beyond this are silently dropped.
-log_reporter_max_buffer_size: int = int(os.getenv('SW_AGENT_LOG_REPORTER_MAX_BUFFER_SIZE', '10000'))
+agent_log_reporter_max_buffer_size: int = int(os.getenv('SW_AGENT_LOG_REPORTER_MAX_BUFFER_SIZE', '10000'))
 # This config specifies the logger levels of concern, any logs with a level below the config will be ignored.
-log_reporter_level: str = os.getenv('SW_AGENT_LOG_REPORTER_LEVEL', 'WARNING')
+agent_log_reporter_level: str = os.getenv('SW_AGENT_LOG_REPORTER_LEVEL', 'WARNING')
 # This config customizes whether to ignore the application-defined logger filters, if `True`, all logs are reported
 # disregarding any filter rules.
-log_reporter_ignore_filter: bool = os.getenv('SW_AGENT_LOG_REPORTER_IGNORE_FILTER', '').lower() == 'true'
+agent_log_reporter_ignore_filter: bool = os.getenv('SW_AGENT_LOG_REPORTER_IGNORE_FILTER', '').lower() == 'true'
 # If `True`, the log reporter will transmit the logs as formatted. Otherwise, puts logRecord.msg and logRecord.args
 # into message content and tags(`argument.n`), respectively. Along with an `exception` tag if an exception was raised.
 # Only applies to logging module.
-log_reporter_formatted: bool = os.getenv('SW_AGENT_LOG_REPORTER_FORMATTED', '').lower() != 'false'
+agent_log_reporter_formatted: bool = os.getenv('SW_AGENT_LOG_REPORTER_FORMATTED', '').lower() != 'false'
 # The log reporter formats the logRecord message based on the layout given.
 # Only applies to logging module.
-log_reporter_layout: str = os.getenv('SW_AGENT_LOG_REPORTER_LAYOUT',
-                                     '%(asctime)s [%(threadName)s] %(levelname)s %(name)s - %(message)s')
+agent_log_reporter_layout: str = os.getenv('SW_AGENT_LOG_REPORTER_LAYOUT',
+                                           '%(asctime)s [%(threadName)s] %(levelname)s %(name)s - %(message)s')
 # This configuration is shared by log reporter and tracer.
 # This config limits agent to report up to `limit` stacktrace, please refer to [Python traceback](
 # https://docs.python.org/3/library/traceback.html#traceback.print_tb) for more explanations.
-cause_exception_depth: int = int(os.getenv('SW_AGENT_CAUSE_EXCEPTION_DEPTH', '10'))
+agent_cause_exception_depth: int = int(os.getenv('SW_AGENT_CAUSE_EXCEPTION_DEPTH', '10'))
 
 # BEGIN: Meter Reporter Configurations
 # If `True`, Python agent will report collected meters to the OAP or Satellite. Otherwise, it disables the feature.
-meter_reporter_active: bool = os.getenv('SW_AGENT_METER_REPORTER_ACTIVE', '').lower() != 'false'
+agent_meter_reporter_active: bool = os.getenv('SW_AGENT_METER_REPORTER_ACTIVE', '').lower() != 'false'
 # The maximum queue backlog size for sending meter data to backend, meters beyond this are silently dropped.
-meter_reporter_max_buffer_size: int = int(os.getenv('SW_AGENT_METER_REPORTER_MAX_BUFFER_SIZE', '10000'))
+agent_meter_reporter_max_buffer_size: int = int(os.getenv('SW_AGENT_METER_REPORTER_MAX_BUFFER_SIZE', '10000'))
 # The interval in seconds between each meter data report
-meter_reporter_period: int = int(os.getenv('SW_AGENT_METER_REPORTER_PERIOD', '20'))
+agent_meter_reporter_period: int = int(os.getenv('SW_AGENT_METER_REPORTER_PERIOD', '20'))
 # If `True`, Python agent will report collected Python Virtual Machine (PVM) meters to the OAP or Satellite.
 # Otherwise, it disables the feature.
-pvm_meter_reporter_active: bool = os.getenv('SW_AGENT_PVM_METER_REPORTER_ACTIVE', '').lower() != 'false'
+agent_pvm_meter_reporter_active: bool = os.getenv('SW_AGENT_PVM_METER_REPORTER_ACTIVE', '').lower() != 'false'
 
 # BEGIN: Plugin Related configurations
 # The name patterns in comma-separated pattern, plugins whose name matches one of the pattern won't be installed
-disable_plugins: List[str] = os.getenv('SW_AGENT_DISABLE_PLUGINS', '').split(',')
+agent_disable_plugins: List[str] = os.getenv('SW_AGENT_DISABLE_PLUGINS', '').split(',')
 # 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.
-http_params_length_threshold: int = int(os.getenv('SW_AGENT_HTTP_PARAMS_LENGTH_THRESHOLD', '1024'))
+plugin_http_http_params_length_threshold: int = int(
+    os.getenv('SW_PLUGIN_HTTP_HTTP_PARAMS_LENGTH_THRESHOLD', '1024'))
 # Comma-delimited list of http methods to ignore (GET, POST, HEAD, OPTIONS, etc...)
-http_ignore_method: str = os.getenv('SW_AGENT_HTTP_IGNORE_METHOD', '').upper()
+plugin_http_ignore_method: str = os.getenv('SW_PLUGIN_HTTP_IGNORE_METHOD', '').upper()
 # The maximum length of the collected parameter, parameters longer than the specified length will be truncated,
 # length 0 turns off parameter tracing
-sql_parameters_length: int = int(os.getenv('SW_AGENT_SQL_PARAMETERS_LENGTH', '0'))
+plugin_sql_parameters_max_length: int = int(os.getenv('SW_PLUGIN_SQL_PARAMETERS_MAX_LENGTH', '0'))
 # Indicates whether to collect the filters of pymongo
-pymongo_trace_parameters: bool = os.getenv('SW_AGENT_PYMONGO_TRACE_PARAMETERS', '').lower() == 'true'
+plugin_pymongo_trace_parameters: bool = os.getenv('SW_PLUGIN_PYMONGO_TRACE_PARAMETERS', '').lower() == 'true'
 # The maximum length of the collected filters, filters longer than the specified length will be truncated
-pymongo_parameters_max_length: int = int(os.getenv('SW_AGENT_PYMONGO_PARAMETERS_MAX_LENGTH', '512'))
+plugin_pymongo_parameters_max_length: int = int(os.getenv('SW_PLUGIN_PYMONGO_PARAMETERS_MAX_LENGTH', '512'))
 # If true, trace all the DSL(Domain Specific Language) in ElasticSearch access, default is false
-elasticsearch_trace_dsl: bool = os.getenv('SW_AGENT_ELASTICSEARCH_TRACE_DSL', '').lower() == 'true'
+plugin_elasticsearch_trace_dsl: bool = os.getenv('SW_PLUGIN_ELASTICSEARCH_TRACE_DSL', '').lower() == 'true'
 # This config item controls that whether the Flask plugin should collect the parameters of the request.
-flask_collect_http_params: bool = os.getenv('SW_AGENT_FLASK_COLLECT_HTTP_PARAMS', '').lower() == 'true'
+plugin_flask_collect_http_params: bool = os.getenv('SW_PLUGIN_FLASK_COLLECT_HTTP_PARAMS', '').lower() == 'true'
 # This config item controls that whether the Sanic plugin should collect the parameters of the request.
-sanic_collect_http_params: bool = os.getenv('SW_AGENT_SANIC_COLLECT_HTTP_PARAMS', '').lower() == 'true'
+plugin_sanic_collect_http_params: bool = os.getenv('SW_PLUGIN_SANIC_COLLECT_HTTP_PARAMS', '').lower() == 'true'
 # This config item controls that whether the Django plugin should collect the parameters of the request.
-django_collect_http_params: bool = os.getenv('SW_AGENT_DJANGO_COLLECT_HTTP_PARAMS', '').lower() == 'true'
+plugin_django_collect_http_params: bool = os.getenv('SW_PLUGIN_DJANGO_COLLECT_HTTP_PARAMS', '').lower() == 'true'
 # This config item controls that whether the FastAPI plugin should collect the parameters of the request.
-fastapi_collect_http_params: bool = os.getenv('SW_AGENT_FASTAPI_COLLECT_HTTP_PARAMS', '').lower() == 'true'
+plugin_fastapi_collect_http_params: bool = os.getenv('SW_PLUGIN_FASTAPI_COLLECT_HTTP_PARAMS', '').lower() == 'true'
 # This config item controls that whether the Bottle plugin should collect the parameters of the request.
-bottle_collect_http_params: bool = os.getenv('SW_AGENT_BOTTLE_COLLECT_HTTP_PARAMS', '').lower() == 'true'
+plugin_bottle_collect_http_params: bool = os.getenv('SW_PLUGIN_BOTTLE_COLLECT_HTTP_PARAMS', '').lower() == 'true'
 # The maximum length of `celery` functions parameters, longer than this will be truncated, 0 turns off
-celery_parameters_length: int = int(os.getenv('SW_AGENT_CELERY_PARAMETERS_LENGTH', '512'))
+plugin_celery_parameters_length: int = int(os.getenv('SW_PLUGIN_CELERY_PARAMETERS_LENGTH', '512'))
 
 # THIS MUST FOLLOW DIRECTLY AFTER LIST OF CONFIG OPTIONS!
 options = [key for key in globals() if key not in options]  # THIS MUST FOLLOW DIRECTLY AFTER LIST OF CONFIG OPTIONS!
@@ -228,15 +231,15 @@
     """
     Examine reporter configuration and warn users about the incompatibility of protocol vs features
     """
-    global profiler_active, meter_reporter_active
+    global agent_profile_active, agent_meter_reporter_active
 
-    if protocol == 'http' and (profiler_active or meter_reporter_active):
-        profiler_active = False
-        meter_reporter_active = False
+    if protocol == 'http' and (agent_profile_active or agent_meter_reporter_active):
+        agent_profile_active = False
+        agent_meter_reporter_active = False
         warnings.warn('HTTP protocol does not support meter reporter and profiler. Please use gRPC protocol if you '
                       'would like to use both features.')
-    elif protocol == 'kafka' and profiler_active:
-        profiler_active = False
+    elif protocol == 'kafka' and agent_profile_active:
+        agent_profile_active = False
         warnings.warn('Kafka protocol does not support profiler. Please use gRPC protocol if you would like to use '
                       'this feature.')
 
@@ -248,9 +251,9 @@
     TODO: add cluster concept
     Ref https://github.com/apache/skywalking-java/pull/123
     """
-    global service_name
-    if namespace:
-        service_name = f'{service_name}|{namespace}'
+    global agent_name
+    if agent_namespace:
+        agent_name = f'{agent_name}|{agent_namespace}'
 
     global kafka_topic_management, kafka_topic_meter, kafka_topic_log, kafka_topic_segment
     if kafka_namespace:
@@ -265,8 +268,8 @@
     Build path matchers based on user provided regex expressions
     """
     reesc = re.compile(r'([.*+?^=!:${}()|\[\]\\])')
-    suffix = r'^.+(?:' + '|'.join(reesc.sub(r'\\\1', s.strip()) for s in ignore_suffix.split(',')) + ')$'
-    method = r'^' + '|'.join(s.strip() for s in http_ignore_method.split(',')) + '$'
+    suffix = r'^.+(?:' + '|'.join(reesc.sub(r'\\\1', s.strip()) for s in agent_ignore_suffix.split(',')) + ')$'
+    method = r'^' + '|'.join(s.strip() for s in plugin_http_ignore_method.split(',')) + '$'
     path = '^(?:' + \
            '|'.join(  # replaces ","
                '/(?:[^/]*/)*'.join(  # replaces "/**/"
@@ -277,7 +280,7 @@
                            ) for p3 in p2.split('*')
                        ) for p2 in p1.strip().split('**')
                    ) for p1 in p0.split('/**/')
-               ) for p0 in trace_ignore_path.split(',')
+               ) for p0 in agent_trace_ignore_path.split(',')
            ) + ')$'
 
     global RE_IGNORE_PATH, RE_HTTP_IGNORE_METHOD
diff --git a/skywalking/log/sw_logging.py b/skywalking/log/sw_logging.py
index 516d850..3c0e99d 100644
--- a/skywalking/log/sw_logging.py
+++ b/skywalking/log/sw_logging.py
@@ -28,13 +28,13 @@
 def install():
     from logging import Logger
 
-    layout = config.log_reporter_layout  # type: str
+    layout = config.agent_log_reporter_layout  # type: str
     if layout:
         from skywalking.log.formatter import SWFormatter
-        sw_formatter = SWFormatter(fmt=layout, tb_limit=config.cause_exception_depth)
+        sw_formatter = SWFormatter(fmt=layout, tb_limit=config.agent_cause_exception_depth)
 
     _handle = Logger.handle
-    log_reporter_level = logging.getLevelName(config.log_reporter_level)  # type: int
+    log_reporter_level = logging.getLevelName(config.agent_log_reporter_level)  # type: int
 
     def _sw_handle(self, record):
         _handle(self=self, record=record)
@@ -48,7 +48,7 @@
         if record.levelno < log_reporter_level:
             return
 
-        if not config.log_reporter_ignore_filter and not self.filter(record):  # ignore filtered logs
+        if not config.agent_log_reporter_ignore_filter and not self.filter(record):  # ignore filtered logs
             return
 
         def build_log_tags() -> LogTags:
@@ -60,7 +60,7 @@
             l_tags = LogTags()
             l_tags.data.extend(core_tags)
 
-            if config.log_reporter_formatted:
+            if config.agent_log_reporter_formatted:
                 return l_tags
 
             for i, arg in enumerate(record.args):
@@ -89,8 +89,8 @@
 
         log_data = LogData(
             timestamp=round(record.created * 1000),
-            service=config.service_name,
-            serviceInstance=config.service_instance,
+            service=config.agent_name,
+            serviceInstance=config.agent_instance_name,
             body=LogDataBody(
                 type='text',
                 text=TextLog(
@@ -116,7 +116,7 @@
     Logger.handle = _sw_handle
 
     def transform(record) -> str:
-        if config.log_reporter_formatted:
+        if config.agent_log_reporter_formatted:
             if layout:
                 return sw_formatter.format(record=record)
             newline = '\n'
diff --git a/skywalking/loggings.py b/skywalking/loggings.py
index 93e1bdc..3955d7d 100644
--- a/skywalking/loggings.py
+++ b/skywalking/loggings.py
@@ -39,5 +39,5 @@
 def init():
     global logger_debug_enabled
     logging.addLevelName(logging.CRITICAL + 10, 'OFF')
-    logger.setLevel(logging.getLevelName(config.logging_level))
+    logger.setLevel(logging.getLevelName(config.agent_logging_level))
     logger_debug_enabled = logger.isEnabledFor(logging.DEBUG)
diff --git a/skywalking/meter/meter.py b/skywalking/meter/meter.py
index f8eacd1..8feec19 100644
--- a/skywalking/meter/meter.py
+++ b/skywalking/meter/meter.py
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
+import typing
 from abc import ABC, abstractmethod
 from enum import Enum
 from skywalking.protocol.language_agent.Meter_pb2 import Label
@@ -110,6 +110,7 @@
         def __init__(self, name: str, tags=None):
             # Derived Builder should instantiate its corresponding meter here.
             # self.meter = BaseMeter(name, tags)
+            self.meter: typing.Optional[BaseMeter] = None
             pass
 
         def tag(self, name: str, value):
diff --git a/skywalking/meter/meter_service.py b/skywalking/meter/meter_service.py
index fc7608f..67ad85e 100644
--- a/skywalking/meter/meter_service.py
+++ b/skywalking/meter/meter_service.py
@@ -22,7 +22,6 @@
 from skywalking import agent
 from skywalking.meter.meter import BaseMeter
 from skywalking.utils.time import current_milli_time
-from skywalking.config import meter_reporter_period
 
 
 class MeterService(Thread):
@@ -40,8 +39,8 @@
 
         def archive(meterdata):
             meterdata = meterdata.transform()
-            meterdata.service = config.service_name
-            meterdata.serviceInstance = config.service_instance
+            meterdata.service = config.agent_name
+            meterdata.serviceInstance = config.agent_instance_name
             meterdata.timestamp = current_milli_time()
             agent.archive_meter(meterdata)
 
@@ -50,5 +49,5 @@
 
     def run(self):
         while True:
-            time.sleep(meter_reporter_period)
+            time.sleep(config.agent_meter_reporter_period)
             self.send()
diff --git a/skywalking/plugins/__init__.py b/skywalking/plugins/__init__.py
index 55b22d3..af2a426 100644
--- a/skywalking/plugins/__init__.py
+++ b/skywalking/plugins/__init__.py
@@ -31,7 +31,7 @@
 
 
 def install():
-    disable_patterns = config.disable_plugins
+    disable_patterns = config.agent_disable_plugins
     if isinstance(disable_patterns, str):
         disable_patterns = [re.compile(p.strip()) for p in disable_patterns.split(',') if p.strip()]
     else:
diff --git a/skywalking/plugins/sw_asyncpg.py b/skywalking/plugins/sw_asyncpg.py
index 2a0e21e..7daa857 100644
--- a/skywalking/plugins/sw_asyncpg.py
+++ b/skywalking/plugins/sw_asyncpg.py
@@ -48,17 +48,17 @@
             span.tag(TagDbInstance(getattr(proto, '_database', '<unavailable>')))
             span.tag(TagDbStatement(query))
 
-            if config.sql_parameters_length and params is not None:
+            if config.plugin_sql_parameters_max_length and params is not None:
                 if not is_many:
                     text = ','.join(str(v) for v in params)
 
-                    if len(text) > config.sql_parameters_length:
-                        text = f'{text[:config.sql_parameters_length]}...'
+                    if len(text) > config.plugin_sql_parameters_max_length:
+                        text = f'{text[:config.plugin_sql_parameters_max_length]}...'
 
                     span.tag(TagDbSqlParameters(f'[{text}]'))
 
                 else:
-                    max_len = config.sql_parameters_length
+                    max_len = config.plugin_sql_parameters_max_length
                     total_len = 0
                     text_list = []
 
diff --git a/skywalking/plugins/sw_bottle.py b/skywalking/plugins/sw_bottle.py
index 9c628e1..0fe27a9 100644
--- a/skywalking/plugins/sw_bottle.py
+++ b/skywalking/plugins/sw_bottle.py
@@ -69,8 +69,8 @@
             span.tag(TagHttpMethod(method))
             span.tag(TagHttpURL(request.url.split('?')[0]))
 
-            if config.bottle_collect_http_params and request.query:
-                span.tag(TagHttpParams(params_tostring(request.query)[0:config.http_params_length_threshold]))
+            if config.plugin_bottle_collect_http_params and request.query:
+                span.tag(TagHttpParams(params_tostring(request.query)[0:config.plugin_http_http_params_length_threshold]))
 
             res = _app_call(self, environ, start_response)
 
diff --git a/skywalking/plugins/sw_celery.py b/skywalking/plugins/sw_celery.py
index 5e7e2e2..90b9fa7 100644
--- a/skywalking/plugins/sw_celery.py
+++ b/skywalking/plugins/sw_celery.py
@@ -59,8 +59,8 @@
             # span.tag(TagMqTopic(exchange))
             # span.tag(TagMqQueue(queue))
 
-            if config.celery_parameters_length:
-                params = f'*{args}, **{kwargs}'[:config.celery_parameters_length]
+            if config.plugin_celery_parameters_length:
+                params = f'*{args}, **{kwargs}'[:config.plugin_celery_parameters_length]
                 span.tag(TagCeleryParameters(params))
 
             options = {**options}
@@ -109,8 +109,8 @@
                 # span.tag(TagMqTopic(exchange))
                 # span.tag(TagMqQueue(queue))
 
-                if config.celery_parameters_length:
-                    params = f'*{args}, **{kwargs}'[:config.celery_parameters_length]
+                if config.plugin_celery_parameters_length:
+                    params = f'*{args}, **{kwargs}'[:config.plugin_celery_parameters_length]
                     span.tag(TagCeleryParameters(params))
 
                 return _fun(*args, **kwargs)
diff --git a/skywalking/plugins/sw_django.py b/skywalking/plugins/sw_django.py
index efe8bcd..57759fa 100644
--- a/skywalking/plugins/sw_django.py
+++ b/skywalking/plugins/sw_django.py
@@ -66,8 +66,8 @@
             span.tag(TagHttpURL(request.build_absolute_uri().split('?')[0]))
 
             # you can get request parameters by `request.GET` even though client are using POST or other methods
-            if config.django_collect_http_params and request.GET:
-                span.tag(TagHttpParams(params_tostring(request.GET)[0:config.http_params_length_threshold]))
+            if config.plugin_django_collect_http_params and request.GET:
+                span.tag(TagHttpParams(params_tostring(request.GET)[0:config.plugin_http_http_params_length_threshold]))
 
             resp = _get_response(this, request)
             span.tag(TagHttpStatusCode(resp.status_code))
diff --git a/skywalking/plugins/sw_elasticsearch.py b/skywalking/plugins/sw_elasticsearch.py
index 7e1a1be..144b8dd 100644
--- a/skywalking/plugins/sw_elasticsearch.py
+++ b/skywalking/plugins/sw_elasticsearch.py
@@ -41,7 +41,7 @@
             res = _perform_request(this, method, url, headers=headers, params=params, body=body)
 
             span.tag(TagDbType('Elasticsearch'))
-            if config.elasticsearch_trace_dsl:
+            if config.plugin_elasticsearch_trace_dsl:
                 span.tag(TagDbStatement('' if body is None else body))
 
             return res
diff --git a/skywalking/plugins/sw_fastapi.py b/skywalking/plugins/sw_fastapi.py
index 9c2f40b..45ce504 100644
--- a/skywalking/plugins/sw_fastapi.py
+++ b/skywalking/plugins/sw_fastapi.py
@@ -59,8 +59,8 @@
             span.peer = f'{req.client.host}:{req.client.port}'
             span.tag(TagHttpMethod(method))
             span.tag(TagHttpURL(str(req.url).split('?')[0]))
-            if config.fastapi_collect_http_params and req.query_params:
-                span.tag(TagHttpParams(params_tostring(req.query_params)[0:config.http_params_length_threshold]))
+            if config.plugin_fastapi_collect_http_params and req.query_params:
+                span.tag(TagHttpParams(params_tostring(req.query_params)[0:config.plugin_http_http_params_length_threshold]))
 
             status_code = 500
 
diff --git a/skywalking/plugins/sw_flask.py b/skywalking/plugins/sw_flask.py
index 1edac53..d1dec4b 100644
--- a/skywalking/plugins/sw_flask.py
+++ b/skywalking/plugins/sw_flask.py
@@ -60,8 +60,8 @@
                 span.peer = f"{req.environ['REMOTE_ADDR']}:{req.environ['REMOTE_PORT']}"
             span.tag(TagHttpMethod(method))
             span.tag(TagHttpURL(req.url.split('?')[0]))
-            if config.flask_collect_http_params and req.values:
-                span.tag(TagHttpParams(params_tostring(req.values)[0:config.http_params_length_threshold]))
+            if config.plugin_flask_collect_http_params and req.values:
+                span.tag(TagHttpParams(params_tostring(req.values)[0:config.plugin_http_http_params_length_threshold]))
             resp = _full_dispatch_request(this)
 
             if resp.status_code >= 400:
diff --git a/skywalking/plugins/sw_loguru.py b/skywalking/plugins/sw_loguru.py
index f3a94d2..9dd8c2c 100644
--- a/skywalking/plugins/sw_loguru.py
+++ b/skywalking/plugins/sw_loguru.py
@@ -47,7 +47,7 @@
     from types import MethodType
 
     _log = logger._log
-    log_reporter_level = logging.getLevelName(config.log_reporter_level)  # type: int
+    log_reporter_level = logging.getLevelName(config.agent_log_reporter_level)  # type: int
 
     def gen_record(self, level_id, static_level_no, from_decorator, options, message, args, kwargs):
         """ Generate log record as loguru.logger._log """
@@ -159,7 +159,7 @@
         if record['level'].no < log_reporter_level:
             return
 
-        if not config.log_reporter_ignore_filter and record['level'].no < core.min_level:  # ignore filtered logs
+        if not config.agent_log_reporter_ignore_filter and record['level'].no < core.min_level:  # ignore filtered logs
             return
 
         # loguru has only one logger. Use tags referring Python-Agent doc
@@ -174,7 +174,7 @@
         exception = record['exception']
         if exception:
             stack_trace = ''.join(traceback.format_exception(exception.type, exception.value, exception.traceback,
-                                                             limit=config.cause_exception_depth))
+                                                             limit=config.agent_cause_exception_depth))
             tags.data.append(KeyStringValuePair(key='exception',
                                                 value=sw_filter(stack_trace)
                                                 ))  # \n doesn't work in tags for UI
@@ -196,8 +196,8 @@
 
         log_data = LogData(
             timestamp=round(record['time'].timestamp() * 1000),
-            service=config.service_name,
-            serviceInstance=config.service_instance,
+            service=config.agent_name,
+            serviceInstance=config.agent_instance_name,
             body=LogDataBody(
                 type='text',
                 text=TextLog(
diff --git a/skywalking/plugins/sw_mysqlclient.py b/skywalking/plugins/sw_mysqlclient.py
index 9650b0d..9adbc5b 100644
--- a/skywalking/plugins/sw_mysqlclient.py
+++ b/skywalking/plugins/sw_mysqlclient.py
@@ -61,9 +61,9 @@
                 span.tag(TagDbInstance((self.connection.db or '')))
                 span.tag(TagDbStatement(query))
 
-                if config.sql_parameters_length and args:
+                if config.plugin_sql_parameters_max_length and args:
                     parameter = ','.join([str(arg) for arg in args])
-                    max_len = config.sql_parameters_length
+                    max_len = config.plugin_sql_parameters_max_length
                     parameter = f'{parameter[0:max_len]}...' if len(parameter) > max_len else parameter
                     span.tag(TagDbSqlParameters(f'[{parameter}]'))
 
diff --git a/skywalking/plugins/sw_psycopg.py b/skywalking/plugins/sw_psycopg.py
index 15defb3..e524c2c 100644
--- a/skywalking/plugins/sw_psycopg.py
+++ b/skywalking/plugins/sw_psycopg.py
@@ -56,11 +56,11 @@
                 span.tag(TagDbInstance(dsn['dbname']))
                 span.tag(TagDbStatement(query))
 
-                if config.sql_parameters_length and vars is not None:
+                if config.plugin_sql_parameters_max_length and vars is not None:
                     text = ','.join(str(v) for v in vars)
 
-                    if len(text) > config.sql_parameters_length:
-                        text = f'{text[:config.sql_parameters_length]}...'
+                    if len(text) > config.plugin_sql_parameters_max_length:
+                        text = f'{text[:config.plugin_sql_parameters_max_length]}...'
 
                     span.tag(TagDbSqlParameters(f'[{text}]'))
 
@@ -79,8 +79,8 @@
                 span.tag(TagDbInstance(dsn['dbname']))
                 span.tag(TagDbStatement(query))
 
-                if config.sql_parameters_length:
-                    max_len = config.sql_parameters_length
+                if config.plugin_sql_parameters_max_length:
+                    max_len = config.plugin_sql_parameters_max_length
                     total_len = 0
                     text_list = []
 
@@ -112,11 +112,11 @@
                 span.tag(TagDbInstance(dsn['dbname']))
                 span.tag(TagDbStatement(query))
 
-                if config.sql_parameters_length and vars is not None:
+                if config.plugin_sql_parameters_max_length and vars is not None:
                     text = ','.join(str(v) for v in vars)
 
-                    if len(text) > config.sql_parameters_length:
-                        text = f'{text[:config.sql_parameters_length]}...'
+                    if len(text) > config.plugin_sql_parameters_max_length:
+                        text = f'{text[:config.plugin_sql_parameters_max_length]}...'
 
                     span.tag(TagDbSqlParameters(f'[{text}]'))
 
@@ -171,11 +171,11 @@
                 span.tag(TagDbInstance(dsn['dbname']))
                 span.tag(TagDbStatement(query))
 
-                if config.sql_parameters_length and vars is not None:
+                if config.plugin_sql_parameters_max_length and vars is not None:
                     text = ','.join(str(v) for v in vars)
 
-                    if len(text) > config.sql_parameters_length:
-                        text = f'{text[:config.sql_parameters_length]}...'
+                    if len(text) > config.plugin_sql_parameters_max_length:
+                        text = f'{text[:config.plugin_sql_parameters_max_length]}...'
 
                     span.tag(TagDbSqlParameters(f'[{text}]'))
 
@@ -194,8 +194,8 @@
                 span.tag(TagDbInstance(dsn['dbname']))
                 span.tag(TagDbStatement(query))
 
-                if config.sql_parameters_length:
-                    max_len = config.sql_parameters_length
+                if config.plugin_sql_parameters_max_length:
+                    max_len = config.plugin_sql_parameters_max_length
                     total_len = 0
                     text_list = []
 
@@ -227,11 +227,11 @@
                 span.tag(TagDbInstance(dsn['dbname']))
                 span.tag(TagDbStatement(query))
 
-                if config.sql_parameters_length and vars is not None:
+                if config.plugin_sql_parameters_max_length and vars is not None:
                     text = ','.join(str(v) for v in vars)
 
-                    if len(text) > config.sql_parameters_length:
-                        text = f'{text[:config.sql_parameters_length]}...'
+                    if len(text) > config.plugin_sql_parameters_max_length:
+                        text = f'{text[:config.plugin_sql_parameters_max_length]}...'
 
                     span.tag(TagDbSqlParameters(f'[{text}]'))
 
diff --git a/skywalking/plugins/sw_psycopg2.py b/skywalking/plugins/sw_psycopg2.py
index 8975756..4424b58 100644
--- a/skywalking/plugins/sw_psycopg2.py
+++ b/skywalking/plugins/sw_psycopg2.py
@@ -54,11 +54,11 @@
                 span.tag(TagDbInstance(dsn['dbname']))
                 span.tag(TagDbStatement(query))
 
-                if config.sql_parameters_length and vars is not None:
+                if config.plugin_sql_parameters_max_length and vars is not None:
                     text = ','.join(str(v) for v in vars)
 
-                    if len(text) > config.sql_parameters_length:
-                        text = f'{text[:config.sql_parameters_length]}...'
+                    if len(text) > config.plugin_sql_parameters_max_length:
+                        text = f'{text[:config.plugin_sql_parameters_max_length]}...'
 
                     span.tag(TagDbSqlParameters(f'[{text}]'))
 
@@ -76,8 +76,8 @@
                 span.tag(TagDbInstance(dsn['dbname']))
                 span.tag(TagDbStatement(query))
 
-                if config.sql_parameters_length:
-                    max_len = config.sql_parameters_length
+                if config.plugin_sql_parameters_max_length:
+                    max_len = config.plugin_sql_parameters_max_length
                     total_len = 0
                     text_list = []
 
diff --git a/skywalking/plugins/sw_pymongo.py b/skywalking/plugins/sw_pymongo.py
index c4fd1a8..0330960 100644
--- a/skywalking/plugins/sw_pymongo.py
+++ b/skywalking/plugins/sw_pymongo.py
@@ -67,10 +67,10 @@
                 span.tag(TagDbType('MongoDB'))
                 span.tag(TagDbInstance(dbname))
 
-                if config.pymongo_trace_parameters:
+                if config.plugin_pymongo_trace_parameters:
                     # get filters
                     filters = _get_filter(operation, spec)
-                    max_len = config.pymongo_parameters_max_length
+                    max_len = config.plugin_pymongo_parameters_max_length
                     filters = f'{filters[0:max_len]}...' if len(filters) > max_len else filters
                     span.tag(TagDbStatement(filters))
 
@@ -116,7 +116,7 @@
 
             span.tag(TagDbType('MongoDB'))
             span.tag(TagDbInstance(this.collection.database.name))
-            if config.pymongo_trace_parameters:
+            if config.plugin_pymongo_trace_parameters:
                 filters = ''
                 bulk_ops = this.ops
                 for bulk_op in bulk_ops:
@@ -124,7 +124,7 @@
                     _filter = f'{opname} {str(bulk_op[1])}'
                     filters = f'{filters + _filter} '
 
-                max_len = config.pymongo_parameters_max_length
+                max_len = config.plugin_pymongo_parameters_max_length
                 filters = f'{filters[0:max_len]}...' if len(filters) > max_len else filters
                 span.tag(TagDbStatement(filters))
 
@@ -152,9 +152,9 @@
             span.tag(TagDbType('MongoDB'))
             span.tag(TagDbInstance(this.collection.database.name))
 
-            if config.pymongo_trace_parameters:
+            if config.plugin_pymongo_trace_parameters:
                 filters = f'find {str(operation.spec)}'
-                max_len = config.pymongo_parameters_max_length
+                max_len = config.plugin_pymongo_parameters_max_length
                 filters = f'{filters[0:max_len]}...' if len(filters) > max_len else filters
                 span.tag(TagDbStatement(filters))
 
diff --git a/skywalking/plugins/sw_pymysql.py b/skywalking/plugins/sw_pymysql.py
index be27aca..d813760 100644
--- a/skywalking/plugins/sw_pymysql.py
+++ b/skywalking/plugins/sw_pymysql.py
@@ -45,9 +45,9 @@
             span.tag(TagDbInstance((this.connection.db or b'').decode('utf-8')))
             span.tag(TagDbStatement(query))
 
-            if config.sql_parameters_length and args:
+            if config.plugin_sql_parameters_max_length and args:
                 parameter = ','.join([str(arg) for arg in args])
-                max_len = config.sql_parameters_length
+                max_len = config.plugin_sql_parameters_max_length
                 parameter = f'{parameter[0:max_len]}...' if len(parameter) > max_len else parameter
                 span.tag(TagDbSqlParameters(f'[{parameter}]'))
 
diff --git a/skywalking/plugins/sw_requests.py b/skywalking/plugins/sw_requests.py
index d7cf541..743bb32 100644
--- a/skywalking/plugins/sw_requests.py
+++ b/skywalking/plugins/sw_requests.py
@@ -43,7 +43,7 @@
         url_param = sw_urlparse(url)
 
         # ignore trace skywalking self request
-        if config.protocol == 'http' and config.collector_address.rstrip('/').endswith(url_param.netloc):
+        if config.protocol == 'http' and config.agent_collector_backend_services.rstrip('/').endswith(url_param.netloc):
             return _request(this, method, url, params, data, headers, cookies, files, auth, timeout,
                             allow_redirects,
                             proxies,
diff --git a/skywalking/plugins/sw_sanic.py b/skywalking/plugins/sw_sanic.py
index b29c422..6823789 100644
--- a/skywalking/plugins/sw_sanic.py
+++ b/skywalking/plugins/sw_sanic.py
@@ -94,8 +94,8 @@
             span.peer = f'{req.remote_addr or req.ip}:{req.port}'
             span.tag(TagHttpMethod(method))
             span.tag(TagHttpURL(req.url.split('?')[0]))
-            if config.sanic_collect_http_params and req.args:
-                span.tag(TagHttpParams(params_tostring(req.args)[0:config.http_params_length_threshold]))
+            if config.plugin_sanic_collect_http_params and req.args:
+                span.tag(TagHttpParams(params_tostring(req.args)[0:config.plugin_http_http_params_length_threshold]))
             resp = _handle_request(self, request, write_callback, stream_callback)
             if isawaitable(resp):
                 result = await resp
diff --git a/skywalking/profile/profile_context.py b/skywalking/profile/profile_context.py
index 29ae461..283ad36 100644
--- a/skywalking/profile/profile_context.py
+++ b/skywalking/profile/profile_context.py
@@ -59,7 +59,7 @@
         self.task = task  # type: ProfileTask
         self._current_profiling_cnt = AtomicInteger(var=0)
         self._total_started_profiling_cnt = AtomicInteger(var=0)
-        self.profiling_segment_slots = AtomicArray(length=config.profile_max_parallel)
+        self.profiling_segment_slots = AtomicArray(length=config.agent_profile_max_parallel)
         self._profiling_thread = None  # type: Optional[Thread]
         self._profiling_stop_event = None  # type: Optional[Event]
 
@@ -96,7 +96,7 @@
 
         # check has available slot
         using_slot_cnt = self._current_profiling_cnt.get()
-        if using_slot_cnt >= config.profile_max_parallel:
+        if using_slot_cnt >= config.agent_profile_max_parallel:
             return ProfileStatusReference.create_with_none()
 
         # check first operation name matches
@@ -215,7 +215,7 @@
         self._profiling_thread = profiling_thread
         self._profile_context = profile_context
         self._profile_start_time = -1
-        self.profiling_max_time_mills = config.profile_duration * 60 * 1000
+        self.profiling_max_time_mills = config.agent_profile_duration * 60 * 1000
 
         self.dump_sequence = 0
 
@@ -248,7 +248,7 @@
 
         extracted = traceback.extract_stack(stack)
         for idx, item in enumerate(extracted):
-            if idx > config.profile_dump_max_stack_depth:
+            if idx > config.agent_profile_dump_max_stack_depth:
                 break
 
             code_sig = f'{item.filename}.{item.name}: {item.lineno}'
@@ -284,7 +284,7 @@
         self._profiling_thread = profiling_thread
         self._profile_context = profile_context
         self._profile_start_time = -1
-        self.profiling_max_time_mills = config.profile_duration * 60 * 1000
+        self.profiling_max_time_mills = config.agent_profile_duration * 60 * 1000
 
         self.dump_sequence = 0
 
@@ -300,7 +300,7 @@
         stack_list = []
         extracted = traceback.extract_stack(self._profiling_thread.gr_frame)
         for idx, item in enumerate(extracted):
-            if idx > config.profile_dump_max_stack_depth:
+            if idx > config.agent_profile_dump_max_stack_depth:
                 break
 
             code_sig = f'{item.filename}.{item.name}: {item.lineno}'
diff --git a/skywalking/trace/context.py b/skywalking/trace/context.py
index 53dafc2..6ef6429 100644
--- a/skywalking/trace/context.py
+++ b/skywalking/trace/context.py
@@ -123,8 +123,8 @@
                 trace_id=str(parent.context.segment.related_traces[0]),
                 segment_id=str(parent.context.segment.segment_id),
                 span_id=str(parent.sid),
-                service=config.service_name,
-                service_instance=config.service_instance,
+                service=config.agent_name,
+                service_instance=config.agent_instance_name,
                 endpoint=parent.op,
                 client_address=parent.peer,
                 correlation=parent.context._correlation,
diff --git a/skywalking/trace/segment.py b/skywalking/trace/segment.py
index 8b7d76d..62a0698 100644
--- a/skywalking/trace/segment.py
+++ b/skywalking/trace/segment.py
@@ -59,8 +59,8 @@
         carrier.segment_id = str(snapshot.segment_id)
         carrier.endpoint = snapshot.endpoint
         carrier.span_id = snapshot.span_id
-        carrier.service = config.service_name
-        carrier.service_instance = config.service_instance
+        carrier.service = config.agent_name
+        carrier.service_instance = config.agent_instance_name
         return SegmentRef(carrier, ref_type='CrossThread')
 
 
diff --git a/skywalking/trace/span.py b/skywalking/trace/span.py
index 3d016a2..18fe1d9 100644
--- a/skywalking/trace/span.py
+++ b/skywalking/trace/span.py
@@ -214,8 +214,8 @@
             trace_id=str(self.context.segment.related_traces[0]),
             segment_id=str(self.context.segment.segment_id),
             span_id=str(self.sid),
-            service=config.service_name,
-            service_instance=config.service_instance,
+            service=config.agent_name,
+            service_instance=config.agent_instance_name,
             endpoint=self.op,
             client_address=self.peer,
             correlation=self.context._correlation,
diff --git a/skywalking/utils/filter.py b/skywalking/utils/filter.py
index 452acde..be09bfb 100644
--- a/skywalking/utils/filter.py
+++ b/skywalking/utils/filter.py
@@ -37,12 +37,12 @@
 def sw_filter(target: str):
     # Remove user:pw from any valid full urls
     # this filter is disabled by default due to perf impact
-    if config.log_reporter_safe_mode:
+    if config.agent_log_reporter_safe_mode:
         return re.sub(r'://(.*?)@', r'://', target)
     return target
 
 
 def sw_traceback():
-    stack_trace = traceback.format_exc(limit=config.cause_exception_depth)
+    stack_trace = traceback.format_exc(limit=config.agent_cause_exception_depth)
 
     return sw_filter(target=stack_trace)
diff --git a/tests/e2e/base/docker-compose.base.yml b/tests/e2e/base/docker-compose.base.yml
index ecebe43..d22e998 100644
--- a/tests/e2e/base/docker-compose.base.yml
+++ b/tests/e2e/base/docker-compose.base.yml
@@ -40,15 +40,15 @@
     networks:
       - e2e
     environment:
-      SW_AGENT_SERVICE_NAME: e2e-service-provider
-      SW_AGENT_SERVICE_INSTANCE: provider1
+      SW_AGENT_NAME: e2e-service-provider
+      SW_AGENT_INSTANCE_NAME: provider1
       SW_AGENT_LOGGING_LEVEL: DEBUG
       SW_AGENT_LOG_REPORTER_ACTIVE: "True"
       SW_AGENT_LOG_REPORTER_LEVEL: WARNING
       SW_AGENT_LOG_REPORTER_SAFE_MODE: "True"
       SW_AGENT_METER_REPORTER_ACTIVE: "True"
       SW_AGENT_PVM_METER_REPORTER_ACTIVE: "True"
-      SW_INSTANCE_PROPERTIES_JSON: '{"custom_property":"The answer to all is 42"}'
+      SW_AGENT_INSTANCE_PROPERTIES_JSON: '{"custom_property":"The answer to all is 42"}'
     healthcheck:
       test: [ "CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/9090" ]
       interval: 5s
@@ -64,9 +64,9 @@
     networks:
       - e2e
     environment:
-      SW_AGENT_SERVICE_NAME: e2e-service-consumer
-      SW_AGENT_SERVICE_INSTANCE: consumer1
-      SW_AGENT_NAMESPACE: namespace
+      SW_AGENT_NAME: e2e-service-consumer
+      SW_AGENT_INSTANCE_NAME: consumer1
+      SW_AGENT_NAMESPACE: "namespace"
       SW_AGENT_LOGGING_LEVEL: DEBUG
     healthcheck:
       test: [ "CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/9090" ]
diff --git a/tests/e2e/case/grpc/docker-compose.yml b/tests/e2e/case/grpc/docker-compose.yml
index d27d4f3..5a124d3 100644
--- a/tests/e2e/case/grpc/docker-compose.yml
+++ b/tests/e2e/case/grpc/docker-compose.yml
@@ -31,7 +31,7 @@
     ports:
       - "9090"
     environment:
-      SW_AGENT_COLLECTOR_ADDRESS: oap:11800
+      SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800
     depends_on:
       oap:
         condition: service_healthy
@@ -41,7 +41,7 @@
       file: ../../base/docker-compose.base.yml
       service: consumer
     environment:
-      SW_AGENT_COLLECTOR_ADDRESS: oap:11800
+      SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800
     ports:
       - "9090"
     depends_on:
diff --git a/tests/e2e/case/http/docker-compose.yml b/tests/e2e/case/http/docker-compose.yml
index 7163fd3..41d93c8 100644
--- a/tests/e2e/case/http/docker-compose.yml
+++ b/tests/e2e/case/http/docker-compose.yml
@@ -32,7 +32,7 @@
     ports:
       - "9090"
     environment: # HTTP endpoint
-      SW_AGENT_COLLECTOR_ADDRESS: oap:12800
+      SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:12800
       SW_AGENT_PROTOCOL: http
     depends_on:
       oap:
@@ -43,7 +43,7 @@
       file: ../../base/docker-compose.base.yml
       service: consumer
     environment:
-      SW_AGENT_COLLECTOR_ADDRESS: oap:12800
+      SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:12800
       SW_AGENT_PROTOCOL: http
     ports:
       - "9090"
diff --git a/tests/e2e/case/kafka/docker-compose.yml b/tests/e2e/case/kafka/docker-compose.yml
index 552e50e..3e7e171 100644
--- a/tests/e2e/case/kafka/docker-compose.yml
+++ b/tests/e2e/case/kafka/docker-compose.yml
@@ -97,10 +97,10 @@
     ports:
       - "9090"
     environment:
-      SW_AGENT_COLLECTOR_ADDRESS: oap:11800
+      SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800
       SW_AGENT_PROTOCOL: kafka
-      SW_AGENT_KAFKA_BOOTSTRAP_SERVERS: broker-a:9092,broker-b:9092
-      SW_AGENT_KAFKA_NAMESPACE: 'e2e'
+      SW_KAFKA_BOOTSTRAP_SERVERS: broker-a:9092,broker-b:9092
+      SW_KAFKA_NAMESPACE: 'e2e'
     depends_on:
       oap:
         condition: service_healthy
@@ -110,10 +110,10 @@
       file: ../../base/docker-compose.base.yml
       service: consumer
     environment:
-      SW_AGENT_COLLECTOR_ADDRESS: oap:11800
+      SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800
       SW_AGENT_PROTOCOL: kafka
-      SW_AGENT_KAFKA_BOOTSTRAP_SERVERS: broker-a:9092,broker-b:9092
-      SW_AGENT_KAFKA_NAMESPACE: 'e2e'
+      SW_KAFKA_BOOTSTRAP_SERVERS: broker-a:9092,broker-b:9092
+      SW_KAFKA_NAMESPACE: 'e2e'
     ports:
       - "9090"
     depends_on:
diff --git a/tests/e2e/case/profiling/greenlet/docker-compose.yml b/tests/e2e/case/profiling/greenlet/docker-compose.yml
index f95a41d..68bc3e6 100644
--- a/tests/e2e/case/profiling/greenlet/docker-compose.yml
+++ b/tests/e2e/case/profiling/greenlet/docker-compose.yml
@@ -37,7 +37,7 @@
       - ../provider/entrypoint.py:/services/entrypoint.py
       - ./start_gevent.sh:/services/start_gevent.sh
     environment:
-      SW_AGENT_COLLECTOR_ADDRESS: oap:11800
+      SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800
     depends_on:
       oap:
         condition: service_healthy
@@ -49,7 +49,7 @@
       file: ../../../base/docker-compose.base.yml
       service: consumer
     environment:
-      SW_AGENT_COLLECTOR_ADDRESS: oap:11800
+      SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800
     ports:
       - "9090"
     depends_on:
diff --git a/tests/e2e/case/profiling/provider/entrypoint.py b/tests/e2e/case/profiling/provider/entrypoint.py
index 23aa07b..ef8de1e 100644
--- a/tests/e2e/case/profiling/provider/entrypoint.py
+++ b/tests/e2e/case/profiling/provider/entrypoint.py
@@ -20,7 +20,7 @@
 import grpc.experimental.gevent as grpc_gevent # noqa key point
 grpc_gevent.init_gevent()  # noqa key point
 from skywalking import config, agent # noqa
-config.logging_level = 'DEBUG'
+config.agent_logging_level = 'DEBUG'
 # config.init()
 agent.start()
 
diff --git a/tests/e2e/case/profiling/threading/docker-compose.yml b/tests/e2e/case/profiling/threading/docker-compose.yml
index 2149b13..b24176a 100644
--- a/tests/e2e/case/profiling/threading/docker-compose.yml
+++ b/tests/e2e/case/profiling/threading/docker-compose.yml
@@ -36,7 +36,7 @@
     volumes:
       - ../provider/provider.py:/services/provider.py
     environment:
-      SW_AGENT_COLLECTOR_ADDRESS: oap:11800
+      SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800
     depends_on:
       oap:
         condition: service_healthy
@@ -46,7 +46,7 @@
       file: ../../../base/docker-compose.base.yml
       service: consumer
     environment:
-      SW_AGENT_COLLECTOR_ADDRESS: oap:11800
+      SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800
     ports:
       - "9090"
     depends_on:
diff --git a/tests/plugin/data/sw_elasticsearch/docker-compose.yml b/tests/plugin/data/sw_elasticsearch/docker-compose.yml
index 4de169c..0498b2c 100644
--- a/tests/plugin/data/sw_elasticsearch/docker-compose.yml
+++ b/tests/plugin/data/sw_elasticsearch/docker-compose.yml
@@ -57,8 +57,8 @@
       elasticsearch:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
-      SW_AGENT_ELASTICSEARCH_TRACE_DSL: 'True'
+      SW_PLUGIN_ELASTICSEARCH_TRACE_DSL: 'True'
 networks:
   beyond:
diff --git a/tests/plugin/data/sw_happybase/docker-compose.yml b/tests/plugin/data/sw_happybase/docker-compose.yml
index 01c7f08..1a4db2c 100644
--- a/tests/plugin/data/sw_happybase/docker-compose.yml
+++ b/tests/plugin/data/sw_happybase/docker-compose.yml
@@ -51,8 +51,8 @@
       hbase:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
-      SW_AGENT_ELASTICSEARCH_TRACE_DSL: 'True'
+      SW_PLUGIN_ELASTICSEARCH_TRACE_DSL: 'True'
 networks:
   beyond:
diff --git a/tests/plugin/data/sw_kafka/docker-compose.yml b/tests/plugin/data/sw_kafka/docker-compose.yml
index d8bf993..618aeb5 100644
--- a/tests/plugin/data/sw_kafka/docker-compose.yml
+++ b/tests/plugin/data/sw_kafka/docker-compose.yml
@@ -79,7 +79,7 @@
       consumer:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: producer
+      SW_AGENT_NAME: producer
       SW_AGENT_LOGGING_LEVEL: INFO
 
   consumer:
@@ -102,7 +102,7 @@
       kafka-server:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: INFO
 
 networks:
diff --git a/tests/plugin/data/sw_loguru/docker-compose.yml b/tests/plugin/data/sw_loguru/docker-compose.yml
index 666994f..1ab330a 100644
--- a/tests/plugin/data/sw_loguru/docker-compose.yml
+++ b/tests/plugin/data/sw_loguru/docker-compose.yml
@@ -41,7 +41,7 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
       SW_AGENT_LOG_REPORTER_LEVEL: INFO
 
@@ -60,9 +60,9 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
-      SW_AGENT_FASTAPI_COLLECT_HTTP_PARAMS: 'True'
+      SW_PLUGIN_FASTAPI_COLLECT_HTTP_PARAMS: 'True'
 
 
 networks:
diff --git a/tests/plugin/data/sw_mysqlclient/docker-compose.yml b/tests/plugin/data/sw_mysqlclient/docker-compose.yml
index a4b6908..645ebaf 100644
--- a/tests/plugin/data/sw_mysqlclient/docker-compose.yml
+++ b/tests/plugin/data/sw_mysqlclient/docker-compose.yml
@@ -61,9 +61,9 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
-      SW_AGENT_SQL_PARAMETERS_LENGTH: 512
+      SW_PLUGIN_SQL_PARAMETERS_MAX_LENGTH: 512
 
   consumer:
     extends:
@@ -80,7 +80,7 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
 networks:
diff --git a/tests/plugin/data/sw_psycopg/docker-compose.yml b/tests/plugin/data/sw_psycopg/docker-compose.yml
index 3494cf5..da426e9 100644
--- a/tests/plugin/data/sw_psycopg/docker-compose.yml
+++ b/tests/plugin/data/sw_psycopg/docker-compose.yml
@@ -61,9 +61,9 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
-      SW_AGENT_SQL_PARAMETERS_LENGTH: 512
+      SW_PLUGIN_SQL_PARAMETERS_MAX_LENGTH: 512
 
   consumer:
     extends:
@@ -80,7 +80,7 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
 networks:
diff --git a/tests/plugin/data/sw_psycopg2/docker-compose.yml b/tests/plugin/data/sw_psycopg2/docker-compose.yml
index d7000e2..a04a71f 100644
--- a/tests/plugin/data/sw_psycopg2/docker-compose.yml
+++ b/tests/plugin/data/sw_psycopg2/docker-compose.yml
@@ -60,9 +60,9 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
-      SW_AGENT_SQL_PARAMETERS_LENGTH: 512
+      SW_PLUGIN_SQL_PARAMETERS_MAX_LENGTH: 512
 
   consumer:
     extends:
@@ -79,7 +79,7 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
 networks:
diff --git a/tests/plugin/data/sw_pymongo/docker-compose.yml b/tests/plugin/data/sw_pymongo/docker-compose.yml
index e829c0a..894aad6 100644
--- a/tests/plugin/data/sw_pymongo/docker-compose.yml
+++ b/tests/plugin/data/sw_pymongo/docker-compose.yml
@@ -56,9 +56,9 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
-      SW_AGENT_PYMONGO_TRACE_PARAMETERS: 'True'
+      SW_PLUGIN_PYMONGO_TRACE_PARAMETERS: 'True'
 
   consumer:
     extends:
@@ -75,7 +75,7 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
 networks:
diff --git a/tests/plugin/data/sw_pymysql/docker-compose.yml b/tests/plugin/data/sw_pymysql/docker-compose.yml
index d6f98f2..55e0e0c 100644
--- a/tests/plugin/data/sw_pymysql/docker-compose.yml
+++ b/tests/plugin/data/sw_pymysql/docker-compose.yml
@@ -60,9 +60,9 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
-      SW_AGENT_SQL_PARAMETERS_LENGTH: 512
+      SW_PLUGIN_SQL_PARAMETERS_MAX_LENGTH: 512
 
   consumer:
     extends:
@@ -79,7 +79,7 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
 networks:
diff --git a/tests/plugin/data/sw_rabbitmq/docker-compose.yml b/tests/plugin/data/sw_rabbitmq/docker-compose.yml
index a8453b8..66d49dd 100644
--- a/tests/plugin/data/sw_rabbitmq/docker-compose.yml
+++ b/tests/plugin/data/sw_rabbitmq/docker-compose.yml
@@ -63,7 +63,7 @@
       consumer:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: producer
+      SW_AGENT_NAME: producer
       SW_AGENT_LOGGING_LEVEL: INFO
 
   consumer:
@@ -86,7 +86,7 @@
       rabbitmq-server:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: INFO
 
 networks:
diff --git a/tests/plugin/data/sw_redis/docker-compose.yml b/tests/plugin/data/sw_redis/docker-compose.yml
index 4b2aabb..468cf64 100644
--- a/tests/plugin/data/sw_redis/docker-compose.yml
+++ b/tests/plugin/data/sw_redis/docker-compose.yml
@@ -54,7 +54,7 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
   consumer:
@@ -72,7 +72,7 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
 networks:
diff --git a/tests/plugin/docker-compose.base.yml b/tests/plugin/docker-compose.base.yml
index faf67ee..2ae8950 100644
--- a/tests/plugin/docker-compose.base.yml
+++ b/tests/plugin/docker-compose.base.yml
@@ -35,9 +35,9 @@
   agent:
     image: apache/skywalking-python-agent:latest-plugin
     environment:
-      SW_AGENT_COLLECTOR_ADDRESS: collector:19876
+      SW_AGENT_COLLECTOR_BACKEND_SERVICES: collector:19876
       SW_AGENT_LOGGING_LEVEL: DEBUG
-      SW_AGENT_PROFILER_ACTIVE: 'False'
+      SW_AGENT_PROFILE_ACTIVE: 'False'
     networks:
       - beyond
     command: ['python3', '/entrypoint.py']
diff --git a/tests/plugin/http/sw_aiohttp/docker-compose.yml b/tests/plugin/http/sw_aiohttp/docker-compose.yml
index bd9617c..ad9f832 100644
--- a/tests/plugin/http/sw_aiohttp/docker-compose.yml
+++ b/tests/plugin/http/sw_aiohttp/docker-compose.yml
@@ -41,7 +41,7 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
   consumer:
@@ -59,7 +59,7 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
 networks:
diff --git a/tests/plugin/http/sw_http/docker-compose.yml b/tests/plugin/http/sw_http/docker-compose.yml
index e4fc0b3..f5c5fb3 100644
--- a/tests/plugin/http/sw_http/docker-compose.yml
+++ b/tests/plugin/http/sw_http/docker-compose.yml
@@ -41,7 +41,7 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
   consumer:
@@ -59,7 +59,7 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
 networks:
diff --git a/tests/plugin/http/sw_http_wsgi/docker-compose.yml b/tests/plugin/http/sw_http_wsgi/docker-compose.yml
index 2250952..99f1950 100644
--- a/tests/plugin/http/sw_http_wsgi/docker-compose.yml
+++ b/tests/plugin/http/sw_http_wsgi/docker-compose.yml
@@ -41,7 +41,7 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
   consumer:
@@ -59,7 +59,7 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
 networks:
diff --git a/tests/plugin/http/sw_httpx/docker-compose.yml b/tests/plugin/http/sw_httpx/docker-compose.yml
index d5ac43b..856539a 100644
--- a/tests/plugin/http/sw_httpx/docker-compose.yml
+++ b/tests/plugin/http/sw_httpx/docker-compose.yml
@@ -38,7 +38,7 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
   consumer:
@@ -56,7 +56,7 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
 networks:
diff --git a/tests/plugin/http/sw_requests/docker-compose.yml b/tests/plugin/http/sw_requests/docker-compose.yml
index 06eda43..0b66033 100644
--- a/tests/plugin/http/sw_requests/docker-compose.yml
+++ b/tests/plugin/http/sw_requests/docker-compose.yml
@@ -41,7 +41,7 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
   consumer:
@@ -59,7 +59,7 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
 networks:
diff --git a/tests/plugin/http/sw_urllib3/docker-compose.yml b/tests/plugin/http/sw_urllib3/docker-compose.yml
index c13fe0a..e3dac0a 100644
--- a/tests/plugin/http/sw_urllib3/docker-compose.yml
+++ b/tests/plugin/http/sw_urllib3/docker-compose.yml
@@ -41,7 +41,7 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
   consumer:
@@ -59,7 +59,7 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
 networks:
diff --git a/tests/plugin/http/sw_websockets/docker-compose.yml b/tests/plugin/http/sw_websockets/docker-compose.yml
index be4e9d6..9ad00cb 100644
--- a/tests/plugin/http/sw_websockets/docker-compose.yml
+++ b/tests/plugin/http/sw_websockets/docker-compose.yml
@@ -41,7 +41,7 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
   consumer:
@@ -59,9 +59,9 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
-      SW_AGENT_FASTAPI_COLLECT_HTTP_PARAMS: 'True'
+      SW_PLUGIN_FASTAPI_COLLECT_HTTP_PARAMS: 'True'
 
 networks:
   beyond:
diff --git a/tests/plugin/web/sw_bottle/docker-compose.yml b/tests/plugin/web/sw_bottle/docker-compose.yml
index 54d6297..5d9b6b6 100644
--- a/tests/plugin/web/sw_bottle/docker-compose.yml
+++ b/tests/plugin/web/sw_bottle/docker-compose.yml
@@ -41,7 +41,7 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
   consumer:
@@ -59,9 +59,9 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
-      SW_AGENT_BOTTLE_COLLECT_HTTP_PARAMS: 'True'
+      SW_PLUGIN_BOTTLE_COLLECT_HTTP_PARAMS: 'True'
 
 networks:
   beyond:
diff --git a/tests/plugin/web/sw_django/docker-compose.yml b/tests/plugin/web/sw_django/docker-compose.yml
index 40b2c9a..116dfe3 100644
--- a/tests/plugin/web/sw_django/docker-compose.yml
+++ b/tests/plugin/web/sw_django/docker-compose.yml
@@ -41,7 +41,7 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
   consumer:
@@ -59,9 +59,9 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
-      SW_AGENT_DJANGO_COLLECT_HTTP_PARAMS: 'True'
+      SW_PLUGIN_DJANGO_COLLECT_HTTP_PARAMS: 'True'
 
 networks:
   beyond:
diff --git a/tests/plugin/web/sw_falcon/docker-compose.yml b/tests/plugin/web/sw_falcon/docker-compose.yml
index 5602ab2..6cdba02 100644
--- a/tests/plugin/web/sw_falcon/docker-compose.yml
+++ b/tests/plugin/web/sw_falcon/docker-compose.yml
@@ -41,7 +41,7 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
   consumer:
@@ -59,7 +59,7 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
 networks:
diff --git a/tests/plugin/web/sw_fastapi/docker-compose.yml b/tests/plugin/web/sw_fastapi/docker-compose.yml
index 94c9fef..9bf06f9 100644
--- a/tests/plugin/web/sw_fastapi/docker-compose.yml
+++ b/tests/plugin/web/sw_fastapi/docker-compose.yml
@@ -41,7 +41,7 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
   consumer:
@@ -59,9 +59,9 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
-      SW_AGENT_FASTAPI_COLLECT_HTTP_PARAMS: 'True'
+      SW_PLUGIN_FASTAPI_COLLECT_HTTP_PARAMS: 'True'
 
 
 networks:
diff --git a/tests/plugin/web/sw_flask/docker-compose.yml b/tests/plugin/web/sw_flask/docker-compose.yml
index 5464757..73c5b49 100644
--- a/tests/plugin/web/sw_flask/docker-compose.yml
+++ b/tests/plugin/web/sw_flask/docker-compose.yml
@@ -41,7 +41,7 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
   consumer:
@@ -59,8 +59,8 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
-      SW_AGENT_FLASK_COLLECT_HTTP_PARAMS: 'True'
+      SW_PLUGIN_FLASK_COLLECT_HTTP_PARAMS: 'True'
 networks:
   beyond:
diff --git a/tests/plugin/web/sw_pyramid/docker-compose.yml b/tests/plugin/web/sw_pyramid/docker-compose.yml
index 2250952..99f1950 100644
--- a/tests/plugin/web/sw_pyramid/docker-compose.yml
+++ b/tests/plugin/web/sw_pyramid/docker-compose.yml
@@ -41,7 +41,7 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
   consumer:
@@ -59,7 +59,7 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
 networks:
diff --git a/tests/plugin/web/sw_sanic/docker-compose.yml b/tests/plugin/web/sw_sanic/docker-compose.yml
index d7f5106..2cf2870 100644
--- a/tests/plugin/web/sw_sanic/docker-compose.yml
+++ b/tests/plugin/web/sw_sanic/docker-compose.yml
@@ -41,7 +41,7 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
   consumer:
     extends:
@@ -58,8 +58,8 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
-      SW_AGENT_SANIC_COLLECT_HTTP_PARAMS: 'True'
+      SW_PLUGIN_SANIC_COLLECT_HTTP_PARAMS: 'True'
 networks:
   beyond:
diff --git a/tests/plugin/web/sw_tornado/docker-compose.yml b/tests/plugin/web/sw_tornado/docker-compose.yml
index 0e29370..424c7c6 100644
--- a/tests/plugin/web/sw_tornado/docker-compose.yml
+++ b/tests/plugin/web/sw_tornado/docker-compose.yml
@@ -41,7 +41,7 @@
       timeout: 60s
       retries: 120
     environment:
-      SW_AGENT_SERVICE_NAME: provider
+      SW_AGENT_NAME: provider
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
   consumer:
@@ -59,7 +59,7 @@
       provider:
         condition: service_healthy
     environment:
-      SW_AGENT_SERVICE_NAME: consumer
+      SW_AGENT_NAME: consumer
       SW_AGENT_LOGGING_LEVEL: DEBUG
 
 networks:
diff --git a/tests/unit/test_ant_matcher.py b/tests/unit/test_ant_matcher.py
index 3de01ad..a5ddf0d 100644
--- a/tests/unit/test_ant_matcher.py
+++ b/tests/unit/test_ant_matcher.py
@@ -21,7 +21,7 @@
 
 
 def fast_path_match(pattern, path):
-    config.trace_ignore_path = pattern
+    config.agent_trace_ignore_path = pattern
     config.finalize()
 
     return config.RE_IGNORE_PATH.match(path)
diff --git a/tests/unit/test_filter.py b/tests/unit/test_filter.py
index 6346264..a7daea2 100644
--- a/tests/unit/test_filter.py
+++ b/tests/unit/test_filter.py
@@ -30,7 +30,7 @@
 
     def test_log_filter(self):
         from skywalking import config
-        config.log_reporter_safe_mode = True
+        config.agent_log_reporter_safe_mode = True
 
         self.assertEqual(
             'user:password not in http://localhost:8080',
diff --git a/tools/config_doc_gen.py b/tools/config_doc_gen.py
index f9d5995..6de94c5 100644
--- a/tools/config_doc_gen.py
+++ b/tools/config_doc_gen.py
@@ -18,7 +18,7 @@
 """
 A simple doc generator for configuration options
 """
-from skywalking.config import options_with_default_value_and_type
+from skywalking import config
 
 DOC_HEAD = """# Supported Agent Configuration Options
 
@@ -42,6 +42,8 @@
 | :------------ | :------------ | :------------ | :------------ | :------------ |
 """
 
+OPTIONS = config.options_with_default_value_and_type
+
 
 def comments_from_file(file_path):
     """
@@ -87,12 +89,12 @@
     def env_var_name(config_entry):
         return 'SW_AGENT_' + config_entry.upper()
 
-    configuration = list(options_with_default_value_and_type.keys())[config_index]
-    type_ = options_with_default_value_and_type[configuration][1]
-    default_val = options_with_default_value_and_type[configuration][0]
+    configuration = list(OPTIONS.keys())[config_index]
+    type_ = OPTIONS[configuration][1]
+    default_val = OPTIONS[configuration][0]
 
     # special case for randomly generated default value
-    if configuration == 'service_instance':
+    if configuration == 'agent_instance_name':
         default_val = "str(uuid.uuid1()).replace('-', '')"
     return f'| {configuration} | {env_var_name(configuration)} | {str(type_)} | {default_val} | {comment} |'
 
@@ -123,7 +125,7 @@
     """
     with open('skywalking/config.py', 'r') as config_file:
         data = config_file.read().replace('\n', '')
-        for each in options_with_default_value_and_type.keys():
+        for each in OPTIONS.keys():
             if f'_{each.upper()}' not in data:
                 raise Exception(f'Environment variable for {each.upper()} is not found in config.py\n'
                                 f'This means you have a mismatch of config.py variable and env var name')
