This is an automated email from the ASF dual-hosted git repository.
jianglongtao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 8d558df1843 Refactor the agent.yaml configuration file #21067 (#21118)
8d558df1843 is described below
commit 8d558df1843dc07e8420f071e0f57f3f00ce4bdb
Author: jiangML <[email protected]>
AuthorDate: Mon Sep 26 00:19:22 2022 +0800
Refactor the agent.yaml configuration file #21067 (#21118)
* Refactor: refactor the agent.yaml configuration file
* Adjust the format of the agent.yaml configuration parameter
* Update observability documentation
* Add metrics documentation
* Adjust SQLRouteEngineAdvice to fit SQLRouteEngine
* Modify the jaeger system property to uppercase
* Optimize code and documentation
* Update the observability documentation
* Update the observability documentation
* Remove duplicate checksums
---
.../observability/_index.cn.md | 133 ++++++++++++---------
.../observability/_index.en.md | 133 ++++++++++++---------
.../agent/config/AgentConfiguration.java | 8 +-
.../core/config/yaml/YamlAgentConfiguration.java | 11 +-
...n.java => YamlPluginCategoryConfiguration.java} | 12 +-
.../swapper/YamlAgentConfigurationSwapper.java | 20 +++-
.../agent/core/plugin/AgentPluginLoader.java | 18 ++-
.../core/plugin/PluginBootServiceManager.java | 7 --
.../src/test/resources/conf/agent.yaml | 66 +++++-----
.../src/main/resources/conf/agent.yaml | 72 +++++------
.../BaseLoggingPluginDefinitionService.java | 2 +-
.../base/service/BaseLoggingPluginBootService.java | 2 +-
.../metrics/api/advice/SQLRouteEngineAdvice.java | 2 +-
.../api/advice/SQLRouteEngineAdviceTest.java | 3 +-
.../src/test/resources/conf/agent.yaml | 64 +++++-----
.../service/PrometheusPluginBootService.java | 4 +-
.../service/JaegerTracingPluginBootService.java | 18 +--
.../OpenTelemetryTracingPluginBootService.java | 7 +-
.../service/OpenTracingPluginBootService.java | 4 +-
.../service/OpenTracingPluginBootServiceTest.java | 2 +-
.../service/ZipkinTracingPluginBootService.java | 24 +++-
.../test/resources/docker/proxy/conf/agent.yaml | 69 +++++------
.../test/resources/docker/proxy/conf/agent.yaml | 73 ++++++-----
23 files changed, 418 insertions(+), 336 deletions(-)
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/observability/_index.cn.md
b/docs/document/content/user-manual/shardingsphere-proxy/observability/_index.cn.md
index d94229f77d6..e9ca8ed047b 100644
---
a/docs/document/content/user-manual/shardingsphere-proxy/observability/_index.cn.md
+++
b/docs/document/content/user-manual/shardingsphere-proxy/observability/_index.cn.md
@@ -40,66 +40,60 @@ tree
* 配置说明
`conf/agent.yaml` 用于管理 agent 配置。
-内置插件包括 Jaeger、OpenTracing、Zipkin、OpenTelemetry、Logging 及 Prometheus。
-当需要开启插件时,只需要移除 `ignoredPluginNames` 中对应的插件名称即可。
+内置插件包括 Jaeger、OpenTracing、Zipkin、OpenTelemetry、BaseLogging 及 Prometheus。
+默认不开启任何插件。
```yaml
-applicationName: shardingsphere-agent
-ignoredPluginNames:
- - Jaeger
- - OpenTracing
- - Zipkin
- - OpenTelemetry
- - Logging
- - Prometheus
-
plugins:
- Prometheus:
- host: "localhost"
- port: 9090
- props:
- JVM_INFORMATION_COLLECTOR_ENABLED : "true"
- Jaeger:
- host: "localhost"
- port: 5775
- props:
- SERVICE_NAME: "shardingsphere-agent"
- JAEGER_SAMPLER_TYPE: "const"
- JAEGER_SAMPLER_PARAM: "1"
- Zipkin:
- host: "localhost"
- port: 9411
- props:
- SERVICE_NAME: "shardingsphere-agent"
- URL_VERSION: "/api/v2/spans"
- SAMPLER_TYPE: "const"
- SAMPLER_PARAM: "1"
- OpenTracing:
- props:
- OPENTRACING_TRACER_CLASS_NAME:
"org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer"
- OpenTelemetry:
- props:
- otel.resource.attributes: "service.name=shardingsphere-agent"
- otel.traces.exporter: "zipkin"
- Logging:
- props:
- LEVEL: "INFO"
-
+# logging:
+# BaseLogging:
+# props:
+# level: "INFO"
+# metrics:
+# Prometheus:
+# host: "localhost"
+# port: 9090
+# props:
+# jvm-information-collector-enabled: "true"
+# tracing:
+# Jaeger:
+# host: "localhost"
+# port: 5775
+# props:
+# service-name: "shardingsphere"
+# jaeger-sampler-type: "const"
+# jaeger-sampler-param: "1"
+# Zipkin:
+# host: "localhost"
+# port: 9411
+# props:
+# service-name: "shardingsphere"
+# url-version: "/api/v2/spans"
+# sampler-type: "const"
+# sampler-param: "1"
+# OpenTracing:
+# props:
+# opentracing-tracer-class-name:
"org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer"
+# OpenTelemetry:
+# props:
+# otel-resource-attributes: "service.name=shardingsphere"
+# otel-traces-exporter: "zipkin"
```
* 参数说明;
-| 名称 | 说明 |取值范围 |默认值 |
-| :--------- | :-------- |:--------- | :-------- |
-| JVM_INFORMATION_COLLECTOR_ENABLED | 是否开启 JVM 采集器 |true、false|true|
-| SERVICE_NAME | 链路跟踪的服务名称 | 自定义 | shardingsphere-agent |
-| JAEGER_SAMPLER_TYPE | Jaeger 采样率类型 | const、probabilistic、ratelimiting、remote
| const |
-| JAEGER_SAMPLER_PARAM | Jaeger 采样率参数 |const:0、1,probabilistic:0.0 -
1.0,ratelimiting:>
0,自定义每秒采集数量,remote:需要自定义配置远程采样率管理服务地址,JAEGER_SAMPLER_MANAGER_HOST_PORT |1(const
类型)|
-| SAMPLER_TYPE | Zipkin 采样率类型 |const、counting、ratelimiting、boundary | const |
-| SAMPLER_PARAM | Zipkin 采样率参数 |const: 0、1,counting:0.01 - 1.0,ratelimiting:>
0,自定义每秒采集数量,boundary: 0.0001 - 1.0 | 1(const 类型)|
-| otel.resource.attributes|opentelemetry 资源属性 | 字符串键值对(,分割) |
service.name=shardingsphere-agent |
-| otel.traces.exporter | Tracing expoter | zipkin、jaeger | zipkin |
-| otel.traces.sampler | opentelemetry 采样率类型 |
always_on、always_off、traceidratio | always_on |
-| otel.traces.sampler.arg | opentelemetry 采样率参数 | traceidratio:0.0 - 1.0 | 1.0
|
+| 名称 | 说明 |取值范围 | 默认值
|
+|:----------------------------------|:--------------------|:---------
|:----------------------------------|
+| jvm-information-collector-enabled | 是否开启 JVM 采集器 |true、false| true
|
+| service-name | 链路跟踪的服务名称 | 自定义 |
shardingsphere |
+| jaeger-sampler-type | Jaeger 采样率类型 |
const、probabilistic、ratelimiting、remote | const |
+| jaeger-sampler-param | Jaeger 采样率参数
|const:0、1,probabilistic:0.0 - 1.0,ratelimiting:>
0,自定义每秒采集数量,remote:需要自定义配置远程采样率管理服务地址,JAEGER_SAMPLER_MANAGER_HOST_PORT |
1(const 类型) |
+| url-version | Zipkin url 地址 | 自定义 |
/api/v2/spans |
+| sampler-type | Zipkin 采样率类型
|const、counting、ratelimiting、boundary | const |
+| sampler-param | Zipkin 采样率参数 |const:
0、1,counting:0.01 - 1.0,ratelimiting:> 0,自定义每秒采集数量,boundary: 0.0001 - 1.0 |
1(const 类型) |
+| otel-resource-attributes | opentelemetry 资源属性 | 字符串键值对(,分割) |
service.name=shardingsphere-agent |
+| otel-traces-exporter | Tracing expoter | zipkin、jaeger |
zipkin |
+| otel-traces-sampler | opentelemetry 采样率类型 |
always_on、always_off、traceidratio | always_on |
+| otel-traces-sampler-arg | opentelemetry 采样率参数 | traceidratio:0.0 -
1.0 | 1.0 |
## ShardingSphere-Proxy 中使用
@@ -117,3 +111,34 @@ nohup java ${JAVA_OPTS} ${JAVA_MEM_OPTS} \
bin/start.sh
```
正常启动后,可以在 ShardingSphere-Proxy 日志中找到 plugin 的加载信息,访问 Proxy 后,可以通过配置的监控地址查看到
`Metric` 和 `Tracing` 的数据。
+
+
+## Metrics
+| 指标名称 | 类型 | 描述
|
+|:----------------------------------|:-----------|:-------------------------------------------------------|
+| proxy_request_total | COUNTER | 请求总数
|
+| proxy_connection_total | GAUGE | 当前连接总数
|
+| proxy_execute_latency_millis | HISTOGRAM | 执行耗时毫秒
|
+| proxy_execute_error_total | COUNTER | 执行异常总数
|
+| route_sql_select_total | COUNTER | 路由执行 select SQL 语句总数
|
+| route_sql_insert_total | COUNTER | 路由执行 insert SQL 语句总数
|
+| route_sql_update_total | COUNTER | 路由执行 update SQL 语句总数
|
+| route_sql_delete_total | COUNTER | 路由执行 delete SQL 语句总数
|
+| route_datasource_total | COUNTER | 数据源路由总数
|
+| route_table_total | COUNTER | 表路由数
|
+| proxy_transaction_commit_total | COUNTER | 事务提交次数
|
+| proxy_transaction_rollback_total | COUNTER | 事务回滚次数
|
+| parse_sql_dml_insert_total | COUNTER | 解析 insert SQL 语句总数
|
+| parse_sql_dml_delete_total | COUNTER | 解析 delete SQL 语句总数
|
+| parse_sql_dml_update_total | COUNTER | 解析 update SQL 语句总数
|
+| parse_sql_dml_select_total | COUNTER | 解析 select SQL 语句总数
|
+| parse_sql_ddl_total | COUNTER | 解析 DDL SQL 语句总数
|
+| parse_sql_dcl_total | COUNTER | 解析 DCL SQL 语句总数
|
+| parse_sql_dal_total | COUNTER | 解析 DAL SQL 语句总数
|
+| parse_sql_tcl_total | COUNTER | 解析 TCL SQL 语句总数
|
+| parse_dist_sql_rql_total | COUNTER | 解析 RQL 类型 DistSQL 总数
|
+| parse_dist_sql_rdl_total | COUNTER | 解析 RDL 类型 DistSQL 总数
|
+| parse_dist_sql_ral_total | COUNTER | 解析 RAL 类型 DistSQL 总数
|
+| build_info | GAUGE | 构建信息
|
+| proxy_info | GAUGE | proxy 信息, state:1 正常状态,
state:2 熔断状态 |
+| meta_data_info | GAUGE | proxy 元数据信息,
schema_count:逻辑库数量, database_count:数据源数量 |
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/observability/_index.en.md
b/docs/document/content/user-manual/shardingsphere-proxy/observability/_index.en.md
index f288ce086b0..df5e7620a33 100644
---
a/docs/document/content/user-manual/shardingsphere-proxy/observability/_index.en.md
+++
b/docs/document/content/user-manual/shardingsphere-proxy/observability/_index.en.md
@@ -40,66 +40,60 @@ tree
* Configuration file
`conf/agent.yaml` is used to manage agent configuration.
-Built-in plugins include Jaeger, OpenTracing, Zipkin, OpenTelemetry, Logging
and Prometheus.
-When a plugin needs to be enabled, just remove the corresponding name in
`ignoredPluginNames`.
+Built-in plugins include Jaeger, OpenTracing, Zipkin, OpenTelemetry,
BaseLogging and Prometheus.
+No plugin is enabled by default.
```yaml
-applicationName: shardingsphere-agent
-ignoredPluginNames:
- - Jaeger
- - OpenTracing
- - Zipkin
- - OpenTelemetry
- - Logging
- - Prometheus
-
plugins:
- Prometheus:
- host: "localhost"
- port: 9090
- props:
- JVM_INFORMATION_COLLECTOR_ENABLED : "true"
- Jaeger:
- host: "localhost"
- port: 5775
- props:
- SERVICE_NAME: "shardingsphere-agent"
- JAEGER_SAMPLER_TYPE: "const"
- JAEGER_SAMPLER_PARAM: "1"
- Zipkin:
- host: "localhost"
- port: 9411
- props:
- SERVICE_NAME: "shardingsphere-agent"
- URL_VERSION: "/api/v2/spans"
- SAMPLER_TYPE: "const"
- SAMPLER_PARAM: "1"
- OpenTracing:
- props:
- OPENTRACING_TRACER_CLASS_NAME:
"org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer"
- OpenTelemetry:
- props:
- otel.resource.attributes: "service.name=shardingsphere-agent"
- otel.traces.exporter: "zipkin"
- Logging:
- props:
- LEVEL: "INFO"
-
+# logging:
+# BaseLogging:
+# props:
+# level: "INFO"
+# metrics:
+# Prometheus:
+# host: "localhost"
+# port: 9090
+# props:
+# jvm-information-collector-enabled: "true"
+# tracing:
+# Jaeger:
+# host: "localhost"
+# port: 5775
+# props:
+# service-name: "shardingsphere"
+# jaeger-sampler-type: "const"
+# jaeger-sampler-param: "1"
+# Zipkin:
+# host: "localhost"
+# port: 9411
+# props:
+# service-name: "shardingsphere"
+# url-version: "/api/v2/spans"
+# sampler-type: "const"
+# sampler-param: "1"
+# OpenTracing:
+# props:
+# opentracing-tracer-class-name:
"org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer"
+# OpenTelemetry:
+# props:
+# otel-resource-attributes: "service.name=shardingsphere"
+# otel-traces-exporter: "zipkin"
```
* Parameter description:
-| Name | Description | Value range | Default value |
-| :--------- | :-------- |:--------- | :-------- |
-| JVM_INFORMATION_COLLECTOR_ENABLED | Start JVM collector | true, false
| true |
-| SERVICE_NAME | Tracking service name | Custom | shardingsphere-agent |
-| JAEGER_SAMPLER_TYPE | Jaeger sample rate type | const, probabilistic,
ratelimiting, remote | const |
-| JAEGER_SAMPLER_PARAM | Jaeger sample rate parameter |const:0, 1,
probabilistic:0.0 - 1.0, ratelimiting: > 0, Customize the number of
acquisitions per second, remote:need to customize the remote service
addres,JAEGER_SAMPLER_MANAGER_HOST_PORT | 1 (const type) |
-| SAMPLER_TYPE | Zipkin sample rate type | const, counting, ratelimiting,
boundary | const |
-| SAMPLER_PARAM | Zipkin sampling rate parameter |const:0, 1, counting:0.01 -
1.0, ratelimiting: > 0, boundary:0.0001 - 1.0 | 1 (const type) |
-| otel.resource.attributes | opentelemetry properties | String key value pair
(, split) | service.name=shardingsphere-agent |
-| otel.traces.exporter | Tracing expoter | zipkin, jaeger | zipkin |
-| otel.traces.sampler | Opentelemetry sample rate type | always_on,
always_off, traceidratio | always_on |
-| otel.traces.sampler.arg | Opentelemetry sample rate parameter |
traceidratio:0.0 - 1.0 | 1.0 |
+| Name | Description |
Value range | Default value |
+|:----------------------------------|:------------------------------------|:---------
| :-------- |
+| jvm-information-collector-enabled | Start JVM collector |
true, false | true |
+| service-name | Tracking service name |
Custom | shardingsphere-agent |
+| jaeger-sampler-type | Jaeger sample rate type |
const, probabilistic, ratelimiting, remote | const |
+| jaeger-sampler-param | Jaeger sample rate parameter
|const:0, 1, probabilistic:0.0 - 1.0, ratelimiting: > 0, Customize the number
of acquisitions per second, remote:need to customize the remote service
addres,JAEGER_SAMPLER_MANAGER_HOST_PORT | 1 (const type) |
+| url-version | Zipkin url address |
Custom | /api/v2/spans |
+| sampler-type | Zipkin sample rate type |
const, counting, ratelimiting, boundary | const |
+| sampler-param | Zipkin sampling rate parameter
|const:0, 1, counting:0.01 - 1.0, ratelimiting: > 0, boundary:0.0001 - 1.0 | 1
(const type) |
+| otel-resource-attributes | opentelemetry properties |
String key value pair (, split) | service.name=shardingsphere-agent |
+| otel-traces-exporter | Tracing expoter |
zipkin, jaeger | zipkin |
+| otel-traces-sampler | Opentelemetry sample rate type |
always_on, always_off, traceidratio | always_on |
+| otel-traces-sampler-arg | Opentelemetry sample rate parameter |
traceidratio:0.0 - 1.0 | 1.0 |
## Usage in ShardingSphere-Proxy
@@ -117,3 +111,34 @@ nohup java ${JAVA_OPTS} ${JAVA_MEM_OPTS} \
bin/start.sh
```
After startup, you can find the plugin info in the log of
ShardingSphere-Proxy, `Metric` and `Tracing` data can be viewed through the
configured monitoring address.
+
+
+## Metrics
+| name | type | description
|
+|:---------------------------------|:-----------|:---------------------------------------------------------------------------------------------------------|
+| proxy_request_total | COUNTER | proxy request total
|
+| proxy_connection_total | GAUGE | proxy connection total
|
+| proxy_execute_latency_millis | HISTOGRAM | proxy executor latency
millis
|
+| proxy_execute_error_total | COUNTER | proxy executor error total
|
+| route_sql_select_total | COUNTER | proxy executor route select
sql total |
+| route_sql_insert_total | COUNTER | proxy executor route insert
sql total |
+| route_sql_update_total | COUNTER | proxy executor route update
sql total |
+| route_sql_delete_total | COUNTER | proxy executor route delete
sql total |
+| route_datasource_total | COUNTER | number of datasource routed
|
+| route_table_total | COUNTER | number of table routed
|
+| proxy_transaction_commit_total | COUNTER | transaction commit count
total
|
+| proxy_transaction_rollback_total | COUNTER | transaction rollback count
total |
+| parse_sql_dml_insert_total | COUNTER | proxy executor parse insert
sql total |
+| parse_sql_dml_delete_total | COUNTER | proxy executor parse delete
sql total |
+| parse_sql_dml_update_total | COUNTER | proxy executor parse update
sql total |
+| parse_sql_dml_select_total | COUNTER | proxy executor parse select
sql total |
+| parse_sql_ddl_total | COUNTER | proxy executor parse ddl sql
total |
+| parse_sql_dcl_total | COUNTER | proxy executor parse dcl sql
total |
+| parse_sql_dal_total | COUNTER | proxy executor parse dal sql
total |
+| parse_sql_tcl_total | COUNTER | proxy executor parse tcl sql
total |
+| parse_dist_sql_rql_total | COUNTER | proxy executor parse rql sql
total |
+| parse_dist_sql_rdl_total | COUNTER | proxy executor parse rdl sql
total |
+| parse_dist_sql_ral_total | COUNTER | proxy executor parse ral sql
total |
+| build_info | GAUGE | build information
|
+| proxy_info | GAUGE | proxy information, state:1
OK, state:2 CIRCUIT BREAK |
+| meta_data_info | GAUGE | meta data information,
schema_count:logic number of databases, database_count:actual number of
databases |
\ No newline at end of file
diff --git
a/shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/config/AgentConfiguration.java
b/shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/config/AgentConfiguration.java
index e90a56822dd..ee2c582e2f4 100644
---
a/shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/config/AgentConfiguration.java
+++
b/shardingsphere-agent/shardingsphere-agent-api/src/main/java/org/apache/shardingsphere/agent/config/AgentConfiguration.java
@@ -17,11 +17,11 @@
package org.apache.shardingsphere.agent.config;
-import java.util.Map;
-import java.util.Set;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
+import java.util.Map;
+
/**
* Agent configuration.
*/
@@ -29,9 +29,5 @@ import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public final class AgentConfiguration {
- private final String applicationName;
-
- private final Set<String> ignoredPluginNames;
-
private final Map<String, PluginConfiguration> plugins;
}
diff --git
a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/YamlAgentConfiguration.java
b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/YamlAgentConfiguration.java
index 82e0cad8bf2..7e2cca941df 100644
---
a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/YamlAgentConfiguration.java
+++
b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/YamlAgentConfiguration.java
@@ -20,11 +20,6 @@ package org.apache.shardingsphere.agent.core.config.yaml;
import lombok.Getter;
import lombok.Setter;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Set;
-
/**
* YAML agent configuration.
*/
@@ -32,9 +27,5 @@ import java.util.Set;
@Setter
public final class YamlAgentConfiguration {
- private String applicationName = "shardingsphere-agent";
-
- private Set<String> ignoredPluginNames = new HashSet<>();
-
- private Map<String, YamlPluginConfiguration> plugins = new
LinkedHashMap<>();
+ private YamlPluginCategoryConfiguration plugins;
}
diff --git
a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/YamlAgentConfiguration.java
b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/YamlPluginCategoryConfiguration.java
similarity index 76%
copy from
shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/YamlAgentConfiguration.java
copy to
shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/YamlPluginCategoryConfiguration.java
index 82e0cad8bf2..eab341f1bc2 100644
---
a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/YamlAgentConfiguration.java
+++
b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/YamlPluginCategoryConfiguration.java
@@ -20,21 +20,19 @@ package org.apache.shardingsphere.agent.core.config.yaml;
import lombok.Getter;
import lombok.Setter;
-import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Map;
-import java.util.Set;
/**
- * YAML agent configuration.
+ * YAML plugin category configuration.
*/
@Getter
@Setter
-public final class YamlAgentConfiguration {
+public final class YamlPluginCategoryConfiguration {
- private String applicationName = "shardingsphere-agent";
+ private Map<String, YamlPluginConfiguration> logging = new
LinkedHashMap<>();
- private Set<String> ignoredPluginNames = new HashSet<>();
+ private Map<String, YamlPluginConfiguration> metrics = new
LinkedHashMap<>();
- private Map<String, YamlPluginConfiguration> plugins = new
LinkedHashMap<>();
+ private Map<String, YamlPluginConfiguration> tracing = new
LinkedHashMap<>();
}
diff --git
a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/swapper/YamlAgentConfigurationSwapper.java
b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/swapper/YamlAgentConfigurationSwapper.java
index 6554f611a9f..47d18faaa20 100644
---
a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/swapper/YamlAgentConfigurationSwapper.java
+++
b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/swapper/YamlAgentConfigurationSwapper.java
@@ -22,6 +22,7 @@ import lombok.NoArgsConstructor;
import org.apache.shardingsphere.agent.config.AgentConfiguration;
import org.apache.shardingsphere.agent.config.PluginConfiguration;
import org.apache.shardingsphere.agent.core.config.yaml.YamlAgentConfiguration;
+import
org.apache.shardingsphere.agent.core.config.yaml.YamlPluginCategoryConfiguration;
import
org.apache.shardingsphere.agent.core.config.yaml.YamlPluginConfiguration;
import java.util.LinkedHashMap;
@@ -42,10 +43,23 @@ public final class YamlAgentConfigurationSwapper {
*/
public static AgentConfiguration swap(final YamlAgentConfiguration
yamlConfig) {
Map<String, PluginConfiguration> configurationMap = new
LinkedHashMap<>();
- for (Entry<String, YamlPluginConfiguration> entry :
yamlConfig.getPlugins().entrySet()) {
- configurationMap.put(entry.getKey(), transform(entry.getValue()));
+ YamlPluginCategoryConfiguration plugins = yamlConfig.getPlugins();
+ if (null != plugins) {
+
configurationMap.putAll(transformPluginConfigurationMap(plugins.getLogging()));
+
configurationMap.putAll(transformPluginConfigurationMap(plugins.getMetrics()));
+
configurationMap.putAll(transformPluginConfigurationMap(plugins.getTracing()));
}
- return new AgentConfiguration(yamlConfig.getApplicationName(),
yamlConfig.getIgnoredPluginNames(), configurationMap);
+ return new AgentConfiguration(configurationMap);
+ }
+
+ private static Map<String, PluginConfiguration>
transformPluginConfigurationMap(final Map<String, YamlPluginConfiguration>
yamlConfigurationMap) {
+ Map<String, PluginConfiguration> configurationMap = new
LinkedHashMap<>();
+ if (null != yamlConfigurationMap && yamlConfigurationMap.size() > 0) {
+ for (Entry<String, YamlPluginConfiguration> entry :
yamlConfigurationMap.entrySet()) {
+ configurationMap.put(entry.getKey(),
transform(entry.getValue()));
+ }
+ }
+ return configurationMap;
}
private static PluginConfiguration transform(final YamlPluginConfiguration
yamlConfig) {
diff --git
a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/AgentPluginLoader.java
b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/AgentPluginLoader.java
index f93079b722c..fe0b7f400fe 100644
---
a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/AgentPluginLoader.java
+++
b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/AgentPluginLoader.java
@@ -44,6 +44,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -108,7 +109,6 @@ public final class AgentPluginLoader extends ClassLoader
implements Closeable, P
return;
}
Map<String, PluginInterceptorPoint> pointMap = new HashMap<>();
- Set<String> ignoredPluginNames =
AgentConfigurationRegistry.INSTANCE.get(AgentConfiguration.class).getIgnoredPluginNames();
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream())
{
for (File each : jarFiles) {
outputStream.reset();
@@ -117,10 +117,20 @@ public final class AgentPluginLoader extends ClassLoader
implements Closeable, P
log.info("Loaded jar {}", each.getName());
}
}
- loadPluginDefinitionServices(ignoredPluginNames, pointMap);
+ Collection<String> pluginNames = getPluginNames();
+ loadPluginDefinitionServices(pluginNames, pointMap);
interceptorPointMap = ImmutableMap.<String,
PluginInterceptorPoint>builder().putAll(pointMap).build();
}
+ private Collection<String> getPluginNames() {
+ AgentConfiguration configuration =
AgentConfigurationRegistry.INSTANCE.get(AgentConfiguration.class);
+ Set<String> pluginNames = new HashSet<>();
+ if (null != configuration && null != configuration.getPlugins()) {
+ pluginNames.addAll(configuration.getPlugins().keySet());
+ }
+ return pluginNames;
+ }
+
/**
* To find all intercepting target classes then to build TypeMatcher.
*
@@ -238,10 +248,10 @@ public final class AgentPluginLoader extends ClassLoader
implements Closeable, P
}
}
- private void loadPluginDefinitionServices(final Set<String>
ignoredPluginNames, final Map<String, PluginInterceptorPoint> pointMap) {
+ private void loadPluginDefinitionServices(final Collection<String>
pluginNames, final Map<String, PluginInterceptorPoint> pointMap) {
PluginServiceLoader.newServiceInstances(PluginDefinitionService.class)
.stream()
- .filter(each -> ignoredPluginNames.isEmpty() ||
!ignoredPluginNames.contains(each.getType()))
+ .filter(each -> pluginNames.contains(each.getType()))
.forEach(each -> buildPluginInterceptorPointMap(each,
pointMap));
}
diff --git
a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/PluginBootServiceManager.java
b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/PluginBootServiceManager.java
index 2a3ab181390..5c5be3765aa 100644
---
a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/PluginBootServiceManager.java
+++
b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/PluginBootServiceManager.java
@@ -20,15 +20,12 @@ package org.apache.shardingsphere.agent.core.plugin;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.apache.shardingsphere.agent.config.AgentConfiguration;
import org.apache.shardingsphere.agent.config.PluginConfiguration;
-import
org.apache.shardingsphere.agent.core.config.registry.AgentConfigurationRegistry;
import org.apache.shardingsphere.agent.core.spi.AgentTypedSPIRegistry;
import org.apache.shardingsphere.agent.spi.boot.PluginBootService;
import java.util.Map;
import java.util.Map.Entry;
-import java.util.Set;
/**
* Plugin boot service manager.
@@ -43,11 +40,7 @@ public final class PluginBootServiceManager {
* @param pluginConfigurationMap plugin configuration map
*/
public static void startAllServices(final Map<String, PluginConfiguration>
pluginConfigurationMap) {
- Set<String> ignoredPluginNames =
AgentConfigurationRegistry.INSTANCE.get(AgentConfiguration.class).getIgnoredPluginNames();
for (Entry<String, PluginConfiguration> entry :
pluginConfigurationMap.entrySet()) {
- if (!ignoredPluginNames.isEmpty() &&
ignoredPluginNames.contains(entry.getKey())) {
- continue;
- }
AgentTypedSPIRegistry.getRegisteredServiceOptional(PluginBootService.class,
entry.getKey()).ifPresent(optional -> {
try {
log.info("Start plugin: {}", optional.getType());
diff --git
a/shardingsphere-agent/shardingsphere-agent-core/src/test/resources/conf/agent.yaml
b/shardingsphere-agent/shardingsphere-agent-core/src/test/resources/conf/agent.yaml
index 2daa053734e..0ed75454ea4 100644
---
a/shardingsphere-agent/shardingsphere-agent-core/src/test/resources/conf/agent.yaml
+++
b/shardingsphere-agent/shardingsphere-agent-core/src/test/resources/conf/agent.yaml
@@ -15,35 +15,39 @@
# limitations under the License.
#
-applicationName: shardingsphere
-ignoredPluginNames:
- - Jaeger
- - Opentracing
-
plugins:
- prometheus:
- host: "localhost"
- port: 9090
- props:
- JVM_INFORMATION_COLLECTOR_ENABLED : "true"
- Jaeger:
- host: "localhost"
- port: 5775
- props:
- SERVICE_NAME: "shardingsphere"
- JAEGER_SAMPLER_TYPE: "const"
- JAEGER_SAMPLER_PARAM: "1"
- JAEGER_REPORTER_LOG_SPANS: "true"
- JAEGER_REPORTER_FLUSH_INTERVAL: "1"
- Zipkin:
- host: "localhost"
- port: 9411
- props:
- SERVICE_NAME: "shardingsphere"
- URL_VERSION: "/api/v2/spans"
- Opentracing:
- props:
- OPENTRACING_TRACER_CLASS_NAME:
"org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer"
- Logging:
- props:
- LEVEL: "INFO"
+ logging:
+ BaseLogging:
+ props:
+ level: "INFO"
+ metrics:
+ Prometheus:
+ host: "localhost"
+ port: 9090
+ props:
+ jvm-information-collector-enabled: "true"
+ tracing:
+# Jaeger:
+# host: "localhost"
+# port: 5775
+# props:
+# service-name: "shardingsphere"
+# jaeger-sampler-type: "const"
+# jaeger-sampler-param: "1"
+# jaeger-reporter-log-spans: "true"
+# jaeger-reporter-flush-interval: "1"
+ Zipkin:
+ host: "localhost"
+ port: 9411
+ props:
+ service-name: "shardingsphere"
+ url-version: "/api/v2/spans"
+ sampler-type: "const"
+ sampler-param: "1"
+# OpenTracing:
+# props:
+# opentracing-tracer-class-name:
"org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer"
+ OpenTelemetry:
+ props:
+ otel-resource-attributes: "service.name=shardingsphere"
+ otel-traces-exporter: "zipkin"
diff --git
a/shardingsphere-agent/shardingsphere-agent-distribution/src/main/resources/conf/agent.yaml
b/shardingsphere-agent/shardingsphere-agent-distribution/src/main/resources/conf/agent.yaml
index 83544b10390..271181c381e 100644
---
a/shardingsphere-agent/shardingsphere-agent-distribution/src/main/resources/conf/agent.yaml
+++
b/shardingsphere-agent/shardingsphere-agent-distribution/src/main/resources/conf/agent.yaml
@@ -15,43 +15,37 @@
# limitations under the License.
#
-applicationName: shardingsphere
-ignoredPluginNames:
- - Jaeger
- - OpenTracing
- - Zipkin
- - OpenTelemetry
- - Logging
- - Prometheus
-
plugins:
- Prometheus:
- host: "localhost"
- port: 9090
- props:
- JVM_INFORMATION_COLLECTOR_ENABLED : "true"
- Jaeger:
- host: "localhost"
- port: 5775
- props:
- SERVICE_NAME: "shardingsphere"
- JAEGER_SAMPLER_TYPE: "const"
- JAEGER_SAMPLER_PARAM: "1"
- Zipkin:
- host: "localhost"
- port: 9411
- props:
- SERVICE_NAME: "shardingsphere"
- URL_VERSION: "/api/v2/spans"
- SAMPLER_TYPE: "const"
- SAMPLER_PARAM: "1"
- OpenTracing:
- props:
- OPENTRACING_TRACER_CLASS_NAME:
"org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer"
- OpenTelemetry:
- props:
- otel.resource.attributes: "service.name=shardingsphere"
- otel.traces.exporter: "zipkin"
- Logging:
- props:
- LEVEL: "INFO"
+# logging:
+# BaseLogging:
+# props:
+# level: "INFO"
+# metrics:
+# Prometheus:
+# host: "localhost"
+# port: 9090
+# props:
+# jvm-information-collector-enabled: "true"
+# tracing:
+# Jaeger:
+# host: "localhost"
+# port: 5775
+# props:
+# service-name: "shardingsphere"
+# jaeger-sampler-type: "const"
+# jaeger-sampler-param: "1"
+# Zipkin:
+# host: "localhost"
+# port: 9411
+# props:
+# service-name: "shardingsphere"
+# url-version: "/api/v2/spans"
+# sampler-type: "const"
+# sampler-param: "1"
+# OpenTracing:
+# props:
+# opentracing-tracer-class-name:
"org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer"
+# OpenTelemetry:
+# props:
+# otel-resource-attributes: "service.name=shardingsphere"
+# otel-traces-exporter: "zipkin"
diff --git
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/definition/BaseLoggingPluginDefinitionService.java
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/definition/BaseLoggingPluginDefinitionService.java
index abad4721d35..632a3b23ee9 100644
---
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/definition/BaseLoggingPluginDefinitionService.java
+++
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/definition/BaseLoggingPluginDefinitionService.java
@@ -41,6 +41,6 @@ public final class BaseLoggingPluginDefinitionService extends
AbstractPluginDefi
@Override
public String getType() {
- return "Logging";
+ return "BaseLogging";
}
}
diff --git
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/service/BaseLoggingPluginBootService.java
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/service/BaseLoggingPluginBootService.java
index 6cb0a6d1ff2..29bc7483fdc 100644
---
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/service/BaseLoggingPluginBootService.java
+++
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/shardingsphere-agent-logging-base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/service/BaseLoggingPluginBootService.java
@@ -35,6 +35,6 @@ public final class BaseLoggingPluginBootService implements
PluginBootService {
@Override
public String getType() {
- return "Logging";
+ return "BaseLogging";
}
}
diff --git
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/SQLRouteEngineAdvice.java
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/SQLRouteEngineAdvice.java
index 7da41cb5644..a1f3c4044e5 100644
---
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/SQLRouteEngineAdvice.java
+++
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/SQLRouteEngineAdvice.java
@@ -52,7 +52,7 @@ public final class SQLRouteEngineAdvice implements
InstanceMethodAroundAdvice {
@Override
public void beforeMethod(final AdviceTargetObject target, final Method
method, final Object[] args, final MethodInvocationResult result) {
- QueryContext queryContext = (QueryContext) args[0];
+ QueryContext queryContext = (QueryContext) args[1];
SQLStatement sqlStatement =
queryContext.getSqlStatementContext().getSqlStatement();
if (sqlStatement instanceof InsertStatement) {
MetricsPool.get(MetricIds.ROUTE_SQL_INSERT).ifPresent(MetricsWrapper::inc);
diff --git
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/test/java/org/apache/shardingsphere/agent/metrics/api/advice/SQLRouteEngineAdviceTest.java
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/test/java/org/apache/shardingsphere/agent/metrics/api/advice/SQLRouteEngineAdviceTest.java
index 5405d56b9ef..611bd9491f0 100644
---
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/test/java/org/apache/shardingsphere/agent/metrics/api/advice/SQLRouteEngineAdviceTest.java
+++
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/test/java/org/apache/shardingsphere/agent/metrics/api/advice/SQLRouteEngineAdviceTest.java
@@ -23,6 +23,7 @@ import
org.apache.shardingsphere.agent.metrics.api.constant.MetricIds;
import org.apache.shardingsphere.agent.metrics.api.fixture.FixtureWrapper;
import org.apache.shardingsphere.infra.binder.QueryContext;
import
org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
+import org.apache.shardingsphere.infra.context.ConnectionContext;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
@@ -70,7 +71,7 @@ public final class SQLRouteEngineAdviceTest extends
MetricsAdviceBaseTest {
public void assertRoute(final String metricIds, final QueryContext
queryContext) {
MockAdviceTargetObject targetObject = new MockAdviceTargetObject();
- sqlRouteEngineAdvice.beforeMethod(targetObject, mock(Method.class),
new Object[]{queryContext}, new MethodInvocationResult());
+ sqlRouteEngineAdvice.beforeMethod(targetObject, mock(Method.class),
new Object[]{new ConnectionContext(), queryContext}, new
MethodInvocationResult());
FixtureWrapper wrapper = (FixtureWrapper)
MetricsPool.get(metricIds).get();
assertTrue(MetricsPool.get(metricIds).isPresent());
assertThat(((FixtureWrapper)
MetricsPool.get(metricIds).get()).getFixtureValue(), is(1.0));
diff --git
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/test/resources/conf/agent.yaml
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/test/resources/conf/agent.yaml
index 431a62c4414..0ed75454ea4 100644
---
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/test/resources/conf/agent.yaml
+++
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/test/resources/conf/agent.yaml
@@ -15,33 +15,39 @@
# limitations under the License.
#
-applicationName: shardingsphere
-ignoredPluginNames:
- - Jaeger
- - OpenTracing
-
plugins:
- prometheus:
- host: "localhost"
- port: 9090
- props:
- JVM_INFORMATION_COLLECTOR_ENABLED : "true"
- Jaeger:
- host: "localhost"
- port: 5775
- props:
- JAEGER_SAMPLER_TYPE: "const"
- JAEGER_SAMPLER_PARAM: "1"
- JAEGER_REPORTER_LOG_SPANS: "true"
- JAEGER_REPORTER_FLUSH_INTERVAL: "1"
- Zipkin:
- host: "localhost"
- port: 9441
- props:
- NAME: "Zipkin"
- Opentracing:
- props:
- OPENTRACING_TRACER_CLASS_NAME:
"org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer"
- Logging:
- props:
- LEVEL: "INFO"
+ logging:
+ BaseLogging:
+ props:
+ level: "INFO"
+ metrics:
+ Prometheus:
+ host: "localhost"
+ port: 9090
+ props:
+ jvm-information-collector-enabled: "true"
+ tracing:
+# Jaeger:
+# host: "localhost"
+# port: 5775
+# props:
+# service-name: "shardingsphere"
+# jaeger-sampler-type: "const"
+# jaeger-sampler-param: "1"
+# jaeger-reporter-log-spans: "true"
+# jaeger-reporter-flush-interval: "1"
+ Zipkin:
+ host: "localhost"
+ port: 9411
+ props:
+ service-name: "shardingsphere"
+ url-version: "/api/v2/spans"
+ sampler-type: "const"
+ sampler-param: "1"
+# OpenTracing:
+# props:
+# opentracing-tracer-class-name:
"org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer"
+ OpenTelemetry:
+ props:
+ otel-resource-attributes: "service.name=shardingsphere"
+ otel-traces-exporter: "zipkin"
diff --git
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/service/PrometheusPluginBootService.java
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/service/PrometheusPluginBootService.java
index 396324b54e9..0a7c33db8bf 100644
---
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/service/PrometheusPluginBootService.java
+++
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/service/PrometheusPluginBootService.java
@@ -39,6 +39,8 @@ import java.net.InetSocketAddress;
@Slf4j
public final class PrometheusPluginBootService implements PluginBootService {
+ private static final String KEY_JVM_INFORMATION_COLLECTOR_ENABLED =
"jvm-information-collector-enabled";
+
private HTTPServer httpServer;
@Override
@@ -49,7 +51,7 @@ public final class PrometheusPluginBootService implements
PluginBootService {
}
private void startServer(final PluginConfiguration pluginConfig) {
-
registerCollector(Boolean.parseBoolean(pluginConfig.getProps().getProperty("JVM_INFORMATION_COLLECTOR_ENABLED")));
+
registerCollector(Boolean.parseBoolean(pluginConfig.getProps().getProperty(KEY_JVM_INFORMATION_COLLECTOR_ENABLED)));
InetSocketAddress socketAddress =
getSocketAddress(pluginConfig.getHost(), pluginConfig.getPort());
try {
httpServer = new HTTPServer(socketAddress,
CollectorRegistry.defaultRegistry, true);
diff --git
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/service/JaegerTracingPluginBootService.java
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/service/JaegerTracingPluginBootService.java
index 5c919257d6f..82a7fd391ff 100644
---
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/service/JaegerTracingPluginBootService.java
+++
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/service/JaegerTracingPluginBootService.java
@@ -17,8 +17,6 @@
package org.apache.shardingsphere.agent.plugin.tracing.jaeger.service;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
import io.jaegertracing.Configuration;
import io.opentracing.util.GlobalTracer;
import org.apache.shardingsphere.agent.config.PluginConfiguration;
@@ -31,26 +29,32 @@ import java.util.Optional;
*/
public final class JaegerTracingPluginBootService implements PluginBootService
{
+ private static final String DEFAULT_SERVICE_NAME = "shardingsphere";
+
+ private static final String KEY_SERVICE_NAME = "service-name";
+
private Configuration config;
@SuppressWarnings("AccessOfSystemProperties")
@Override
public void start(final PluginConfiguration pluginConfig) {
pluginConfig.validate("Jaeger");
- pluginConfig.getProps().forEach((key, value) ->
System.setProperty(String.valueOf(key), String.valueOf(value)));
+ pluginConfig.getProps().forEach((key, value) ->
setSystemProperty(String.valueOf(key), String.valueOf(value)));
Configuration.SamplerConfiguration samplerConfig =
Configuration.SamplerConfiguration.fromEnv();
Configuration.ReporterConfiguration reporterConfig =
Configuration.ReporterConfiguration.fromEnv()
.withSender(Configuration.SenderConfiguration.fromEnv().withAgentHost(pluginConfig.getHost()).withAgentPort(pluginConfig.getPort()));
- String serviceName =
Optional.ofNullable(pluginConfig.getProps().getProperty("SERVICE_NAME")).orElse("shardingsphere-agent");
+ String serviceName =
Optional.ofNullable(pluginConfig.getProps().getProperty(KEY_SERVICE_NAME)).orElse(DEFAULT_SERVICE_NAME);
config = new
Configuration(serviceName).withSampler(samplerConfig).withReporter(reporterConfig);
if (!GlobalTracer.isRegistered()) {
GlobalTracer.register(config.getTracer());
}
}
- private void checkConfiguration(final PluginConfiguration pluginConfig) {
-
Preconditions.checkArgument(!Strings.isNullOrEmpty(pluginConfig.getHost()),
"Jaeger hostname is required");
- Preconditions.checkArgument(pluginConfig.getPort() > 0, "Jaeger port
`%d` must be a positive number");
+ private void setSystemProperty(final String key, final String value) {
+ if (!KEY_SERVICE_NAME.equalsIgnoreCase(key)) {
+ String propertyKey = key.replaceAll("-", "_").toUpperCase();
+ System.setProperty(propertyKey, String.valueOf(value));
+ }
}
@Override
diff --git
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/service/OpenTelemetryTracingPluginBootService.java
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/service/OpenTelemet
[...]
index 63f233e1191..ea1bf3b7268 100644
---
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/service/OpenTelemetryTracingPluginBootService.java
+++
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/service/OpenTelemetryTracingPluginBootService.java
@@ -26,12 +26,17 @@ public class OpenTelemetryTracingPluginBootService
implements PluginBootService
@Override
public void start(final PluginConfiguration pluginConfig) {
- pluginConfig.getProps().forEach((key, value) ->
System.setProperty(String.valueOf(key), String.valueOf(value)));
+ pluginConfig.getProps().forEach((key, value) ->
setSystemProperty(String.valueOf(key), String.valueOf(value)));
OpenTelemetrySdk sdk = OpenTelemetrySdkAutoConfiguration.initialize();
// tracer will be created
sdk.getTracer("shardingsphere-agent");
}
+ private void setSystemProperty(final String key, final String value) {
+ String propertyKey = key.replaceAll("-", ".");
+ System.setProperty(propertyKey, String.valueOf(value));
+ }
+
@Override
public void close() {
}
diff --git
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/service/OpenTracingPluginBootService.java
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/service/OpenTracingPluginBootService.java
index 081bfbaf7bc..3ba67c20849 100644
---
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/service/OpenTracingPluginBootService.java
+++
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/service/OpenTracingPluginBootService.java
@@ -28,9 +28,11 @@ import
org.apache.shardingsphere.agent.spi.boot.PluginBootService;
*/
public final class OpenTracingPluginBootService implements PluginBootService {
+ private static final String KEY_OPENTRACING_TRACER_CLASS_NAME =
"opentracing-tracer-class-name";
+
@Override
public void start(final PluginConfiguration pluginConfig) {
- String tracerClassName =
pluginConfig.getProps().getProperty("OPENTRACING_TRACER_CLASS_NAME");
+ String tracerClassName =
pluginConfig.getProps().getProperty(KEY_OPENTRACING_TRACER_CLASS_NAME);
Preconditions.checkNotNull(tracerClassName, "Can not find opentracing
tracer implementation in you config");
try {
init((Tracer)
Class.forName(tracerClassName).getDeclaredConstructor().newInstance());
diff --git
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/service/OpenTracingPluginBootServiceTest.java
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/service/OpenTracingPluginBootSer
[...]
index 9bc9e1cf085..0812d589cbc 100644
---
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/service/OpenTracingPluginBootServiceTest.java
+++
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/service/OpenTracingPluginBootServiceTest.java
@@ -38,7 +38,7 @@ public final class OpenTracingPluginBootServiceTest {
private Properties createProperties() {
Properties result = new Properties();
- result.setProperty("OPENTRACING_TRACER_CLASS_NAME",
"io.opentracing.mock.MockTracer");
+ result.setProperty("opentracing-tracer-class-name",
"io.opentracing.mock.MockTracer");
return result;
}
diff --git
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/service/ZipkinTracingPluginBootService.java
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/service/ZipkinTracingPluginBootService.java
index aa7738af02b..00ba309900e 100644
---
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/service/ZipkinTracingPluginBootService.java
+++
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/service/ZipkinTracingPluginBootService.java
@@ -34,6 +34,22 @@ import java.util.Properties;
*/
public final class ZipkinTracingPluginBootService implements PluginBootService
{
+ private static final String DEFAULT_SERVICE_NAME = "shardingsphere";
+
+ private static final String KEY_SERVICE_NAME = "service-name";
+
+ private static final String DEFAULT_URL_VERSION = "/api/v2/spans";
+
+ private static final String KEY_URL_VERSION = "url-version";
+
+ private static final String DEFAULT_SAMPLER_TYPE = "const";
+
+ private static final String KEY_SAMPLER_TYPE = "sampler-type";
+
+ private static final String DEFAULT_SAMPLER_PARAM = "1";
+
+ private static final String KEY_SAMPLER_PARAM = "sampler-param";
+
private AsyncZipkinSpanHandler zipkinSpanHandler;
private OkHttpSender sender;
@@ -44,8 +60,8 @@ public final class ZipkinTracingPluginBootService implements
PluginBootService {
public void start(final PluginConfiguration pluginConfig) {
pluginConfig.validate("Zipkin");
Properties props = pluginConfig.getProps();
- String urlVersion =
Optional.ofNullable(props.getProperty("URL_VERSION")).orElse("/api/v2/spans");
- String serviceName =
Optional.ofNullable(props.getProperty("SERVICE_NAME")).orElse("shardingsphere-agent");
+ String urlVersion =
Optional.ofNullable(props.getProperty(KEY_URL_VERSION)).orElse(DEFAULT_URL_VERSION);
+ String serviceName =
Optional.ofNullable(props.getProperty(KEY_SERVICE_NAME)).orElse(DEFAULT_SERVICE_NAME);
sender = OkHttpSender.create(String.format("http://%s:%s%s",
pluginConfig.getHost(), pluginConfig.getPort(), urlVersion));
Sampler sampler = createSampler(pluginConfig);
zipkinSpanHandler = AsyncZipkinSpanHandler.create(sender);
@@ -53,8 +69,8 @@ public final class ZipkinTracingPluginBootService implements
PluginBootService {
}
private Sampler createSampler(final PluginConfiguration pluginConfig) {
- String samplerType =
Optional.ofNullable(pluginConfig.getProps().getProperty("SAMPLER_TYPE")).orElse("const");
- String samplerParameter =
Optional.ofNullable(pluginConfig.getProps().getProperty("SAMPLER_PARAM")).orElse("1");
+ String samplerType =
Optional.ofNullable(pluginConfig.getProps().getProperty(KEY_SAMPLER_TYPE)).orElse(DEFAULT_SAMPLER_TYPE);
+ String samplerParameter =
Optional.ofNullable(pluginConfig.getProps().getProperty(KEY_SAMPLER_PARAM)).orElse(DEFAULT_SAMPLER_PARAM);
switch (samplerType) {
case "const":
return "0".equals(samplerParameter) ? Sampler.NEVER_SAMPLE :
Sampler.ALWAYS_SAMPLE;
diff --git
a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/docker/proxy/conf/agent.yaml
b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/docker/proxy/conf/agent.yaml
index 2779540532f..9e18f54da94 100644
---
a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/docker/proxy/conf/agent.yaml
+++
b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-metrics/src/test/resources/docker/proxy/conf/agent.yaml
@@ -15,40 +15,37 @@
# limitations under the License.
#
-applicationName: shardingsphere
-ignoredPluginNames:
- - Jaeger
- - Opentracing
- - Zipkin
- - OpenTelemetry
-
plugins:
- prometheus:
- port: 18090
- props:
- JVM_INFORMATION_COLLECTOR_ENABLED : "true"
- Jaeger:
- host: "localhost"
- port: 5775
- props:
- SERVICE_NAME: "shardingsphere"
- JAEGER_SAMPLER_TYPE: "const"
- JAEGER_SAMPLER_PARAM: "1"
- JAEGER_REPORTER_LOG_SPANS: "true"
- JAEGER_REPORTER_FLUSH_INTERVAL: "1"
- Zipkin:
- host: "localhost"
- port: 9411
- props:
- SERVICE_NAME: "shardingsphere"
- URL_VERSION: "/api/v2/spans"
- Opentracing:
- props:
- OPENTRACING_TRACER_CLASS_NAME:
"org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer"
- OpenTelemetry:
- props:
- otel.resource.attributes: "service.name=shardingsphere"
- otel.traces.exporter: "zipkin"
- Logging:
- props:
- LEVEL: "INFO"
+ logging:
+ BaseLogging:
+ props:
+ level: "INFO"
+ metrics:
+ Prometheus:
+ host: "localhost"
+ port: 18090
+ props:
+ jvm-information-collector-enabled: "true"
+ tracing:
+# Jaeger:
+# host: "localhost"
+# port: 5775
+# props:
+# service-name: "shardingsphere"
+# jaeger-sampler-type: "const"
+# jaeger-sampler-param: "1"
+# Zipkin:
+# host: "localhost"
+# port: 9411
+# props:
+# service-name: "shardingsphere"
+# url-version: "/api/v2/spans"
+# sampler-type: "const"
+# sampler-param: "1"
+# OpenTracing:
+# props:
+# opentracing-tracer-class-name:
"org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer"
+# OpenTelemetry:
+# props:
+# otel-resource-attributes: "service.name=shardingsphere"
+# otel-traces-exporter: "zipkin"
diff --git
a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-opentelemetry/src/test/resources/docker/proxy/conf/agent.yaml
b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-opentelemetry/src/test/resources/docker/proxy/conf/agent.yaml
index a22737e5992..35efa5725f7 100644
---
a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-opentelemetry/src/test/resources/docker/proxy/conf/agent.yaml
+++
b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/shardingsphere-integration-agent-test-opentelemetry/src/test/resources/docker/proxy/conf/agent.yaml
@@ -15,41 +15,40 @@
# limitations under the License.
#
-applicationName: shardingsphere
-ignoredPluginNames:
- - Jaeger
- - Opentracing
- - Zipkin
- - Prometheus
-
plugins:
- prometheus:
- port: 18090
- props:
- JVM_INFORMATION_COLLECTOR_ENABLED : "true"
- Jaeger:
- host: "localhost"
- port: 5775
- props:
- SERVICE_NAME: "shardingsphere"
- JAEGER_SAMPLER_TYPE: "const"
- JAEGER_SAMPLER_PARAM: "1"
- JAEGER_REPORTER_LOG_SPANS: "true"
- JAEGER_REPORTER_FLUSH_INTERVAL: "1"
- Zipkin:
- host: "localhost"
- port: 9411
- props:
- SERVICE_NAME: "shardingsphere"
- URL_VERSION: "/api/v2/spans"
- Opentracing:
- props:
- OPENTRACING_TRACER_CLASS_NAME:
"org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer"
- OpenTelemetry:
- props:
- otel.resource.attributes: "service.name=shardingsphere"
- otel.traces.exporter: "zipkin"
- otel.exporter.zipkin.endpoint:
"http://zipkin.agent.tracing.opentelemetry.host:9411/api/v2/spans"
- Logging:
- props:
- LEVEL: "INFO"
+ logging:
+ BaseLogging:
+ props:
+ level: "INFO"
+ metrics:
+# Prometheus:
+# host: "localhost"
+# port: 18090
+# props:
+# jvm-information-collector-enabled: "true"
+ tracing:
+# Jaeger:
+# host: "localhost"
+# port: 5775
+# props:
+# service-name: "shardingsphere"
+# jaeger-sampler-type: "const"
+# jaeger-sampler-param: "1"
+# jaeger-reporter-log-spans: "true"
+# jaeger-reporter-flush-interval: "1"
+# Zipkin:
+# host: "localhost"
+# port: 9411
+# props:
+# service-name: "shardingsphere"
+# url-version: "/api/v2/spans"
+# sampler-type: "const"
+# sampler-param: "1"
+# OpenTracing:
+# props:
+# opentracing-tracer-class-name:
"org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer"
+ OpenTelemetry:
+ props:
+ otel-resource-attributes: "service.name=shardingsphere"
+ otel-traces-exporter: "zipkin"
+ otel-exporter-zipkin-endpoint:
"http://zipkin.agent.tracing.opentelemetry.host:9411/api/v2/spans"