Add selector property in application.yml (#4514)
### Motivation Ease the efforts of modifying configurations in automatic workflow and scripts, like Docker and helm chart. ### Modification Add a `selector` property into `application.yml` to enable switching configuration simply by environment variables or system properties, and filter the unselected options, leaving only selected one. ### Result - We can switch a configuration by environment variables or system property - Closes #4511
This commit is contained in:
parent
16de88c111
commit
69e3d80e24
|
|
@ -94,15 +94,15 @@ jobs:
|
||||||
- name: Cluster Tests (InfluxDB/ZK/JDK8)
|
- name: Cluster Tests (InfluxDB/ZK/JDK8)
|
||||||
run: export E2E_VERSION=jdk8-1.5 && bash -x test/e2e/run.sh e2e-cluster/e2e-cluster-test-runner --storage=influxdb
|
run: export E2E_VERSION=jdk8-1.5 && bash -x test/e2e/run.sh e2e-cluster/e2e-cluster-test-runner --storage=influxdb
|
||||||
- name: Cluster With Gateway Tests (ES6/ZK/JDK8)
|
- name: Cluster With Gateway Tests (ES6/ZK/JDK8)
|
||||||
run: export E2E_VERSION=jdk8-1.5 && bash -x test/e2e/run.sh e2e-cluster-with-gateway/e2e-cluster-with-gateway-test-runner
|
run: export E2E_VERSION=jdk8-1.5 && bash -x test/e2e/run.sh e2e-cluster-with-gateway/e2e-cluster-with-gateway-test-runner --storage=elasticsearch
|
||||||
- name: Cluster Tests (ES7/ZK/JDK8)
|
- name: Cluster Tests (ES7/ZK/JDK8)
|
||||||
run: export E2E_VERSION=jdk8-1.5 DIST_PACKAGE=apache-skywalking-apm-bin-es7.tar.gz ES_VERSION=7.4.2 && bash -x test/e2e/run.sh e2e-cluster/e2e-cluster-test-runner --storage=elasticsearch
|
run: export E2E_VERSION=jdk8-1.5 DIST_PACKAGE=apache-skywalking-apm-bin-es7.tar.gz ES_VERSION=7.4.2 && bash -x test/e2e/run.sh e2e-cluster/e2e-cluster-test-runner --storage=elasticsearch
|
||||||
- name: TTL ES Tests(JDK8)
|
- name: TTL ES Tests(JDK8)
|
||||||
run: export E2E_VERSION=jdk8-1.5 && bash -x test/e2e/run.sh e2e-ttl/e2e-ttl-es
|
run: export E2E_VERSION=jdk8-1.5 && bash -x test/e2e/run.sh e2e-ttl/e2e-ttl-es --storage=elasticsearch
|
||||||
- name: TTL ES7 Tests(JDK8)
|
- name: TTL ES7 Tests(JDK8)
|
||||||
run: export E2E_VERSION=jdk8-1.5 DIST_PACKAGE=apache-skywalking-apm-bin-es7.tar.gz ES_VERSION=7.4.2 && bash -x test/e2e/run.sh e2e-ttl/e2e-ttl-es
|
run: export E2E_VERSION=jdk8-1.5 DIST_PACKAGE=apache-skywalking-apm-bin-es7.tar.gz ES_VERSION=7.4.2 && bash -x test/e2e/run.sh e2e-ttl/e2e-ttl-es --storage=elasticsearch7
|
||||||
- name: TTL InfluxDB Tests(JDK8)
|
- name: TTL InfluxDB Tests(JDK8)
|
||||||
run: export E2E_VERSION=jdk8-1.5 && bash -x test/e2e/run.sh e2e-ttl/e2e-ttl-influxdb
|
run: export E2E_VERSION=jdk8-1.5 && bash -x test/e2e/run.sh e2e-ttl/e2e-ttl-influxdb --storage=influxdb
|
||||||
|
|
||||||
Compatibilities:
|
Compatibilities:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
|
||||||
|
|
@ -15,40 +15,42 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
cluster:
|
cluster:
|
||||||
|
selector: ${SW_CLUSTER:standalone}
|
||||||
standalone:
|
standalone:
|
||||||
# Please check your ZooKeeper is 3.5+, However, it is also compatible with ZooKeeper 3.4.x. Replace the ZooKeeper 3.5+
|
# Please check your ZooKeeper is 3.5+, However, it is also compatible with ZooKeeper 3.4.x. Replace the ZooKeeper 3.5+
|
||||||
# library the oap-libs folder with your ZooKeeper 3.4.x library.
|
# library the oap-libs folder with your ZooKeeper 3.4.x library.
|
||||||
# zookeeper:
|
zookeeper:
|
||||||
# nameSpace: ${SW_NAMESPACE:""}
|
nameSpace: ${SW_NAMESPACE:""}
|
||||||
# hostPort: ${SW_CLUSTER_ZK_HOST_PORT:localhost:2181}
|
hostPort: ${SW_CLUSTER_ZK_HOST_PORT:localhost:2181}
|
||||||
# #Retry Policy
|
# Retry Policy
|
||||||
# baseSleepTimeMs: ${SW_CLUSTER_ZK_SLEEP_TIME:1000} # initial amount of time to wait between retries
|
baseSleepTimeMs: ${SW_CLUSTER_ZK_SLEEP_TIME:1000} # initial amount of time to wait between retries
|
||||||
# maxRetries: ${SW_CLUSTER_ZK_MAX_RETRIES:3} # max number of times to retry
|
maxRetries: ${SW_CLUSTER_ZK_MAX_RETRIES:3} # max number of times to retry
|
||||||
# # Enable ACL
|
# Enable ACL
|
||||||
# enableACL: ${SW_ZK_ENABLE_ACL:false} # disable ACL in default
|
enableACL: ${SW_ZK_ENABLE_ACL:false} # disable ACL in default
|
||||||
# schema: ${SW_ZK_SCHEMA:digest} # only support digest schema
|
schema: ${SW_ZK_SCHEMA:digest} # only support digest schema
|
||||||
# expression: ${SW_ZK_EXPRESSION:skywalking:skywalking}
|
expression: ${SW_ZK_EXPRESSION:skywalking:skywalking}
|
||||||
# kubernetes:
|
kubernetes:
|
||||||
# watchTimeoutSeconds: ${SW_CLUSTER_K8S_WATCH_TIMEOUT:60}
|
watchTimeoutSeconds: ${SW_CLUSTER_K8S_WATCH_TIMEOUT:60}
|
||||||
# namespace: ${SW_CLUSTER_K8S_NAMESPACE:default}
|
namespace: ${SW_CLUSTER_K8S_NAMESPACE:default}
|
||||||
# labelSelector: ${SW_CLUSTER_K8S_LABEL:app=collector,release=skywalking}
|
labelSelector: ${SW_CLUSTER_K8S_LABEL:app=collector,release=skywalking}
|
||||||
# uidEnvName: ${SW_CLUSTER_K8S_UID:SKYWALKING_COLLECTOR_UID}
|
uidEnvName: ${SW_CLUSTER_K8S_UID:SKYWALKING_COLLECTOR_UID}
|
||||||
# consul:
|
consul:
|
||||||
# serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
||||||
# Consul cluster nodes, example: 10.0.0.1:8500,10.0.0.2:8500,10.0.0.3:8500
|
# Consul cluster nodes, example: 10.0.0.1:8500,10.0.0.2:8500,10.0.0.3:8500
|
||||||
# hostPort: ${SW_CLUSTER_CONSUL_HOST_PORT:localhost:8500}
|
hostPort: ${SW_CLUSTER_CONSUL_HOST_PORT:localhost:8500}
|
||||||
# # Consul aclToken
|
aclToken: ${SW_CLUSTER_CONSUL_ACLTOKEN:""}
|
||||||
# #aclToken: ${SW_CLUSTER_CONSUL_ACLTOKEN}
|
nacos:
|
||||||
# nacos:
|
serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
||||||
# serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:localhost:8848}
|
||||||
# hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:localhost:8848}
|
# Nacos Configuration namespace
|
||||||
# # Nacos Configuration namespace
|
namespace: ${SW_CLUSTER_NACOS_NAMESPACE:"public"}
|
||||||
# namespace: 'public'
|
etcd:
|
||||||
# etcd:
|
serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
||||||
# serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
# etcd cluster nodes, example: 10.0.0.1:2379,10.0.0.2:2379,10.0.0.3:2379
|
||||||
# etcd cluster nodes, example: 10.0.0.1:2379,10.0.0.2:2379,10.0.0.3:2379
|
hostPort: ${SW_CLUSTER_ETCD_HOST_PORT:localhost:2379}
|
||||||
# hostPort: ${SW_CLUSTER_ETCD_HOST_PORT:localhost:2379}
|
|
||||||
core:
|
core:
|
||||||
|
selector: ${SW_CORE:default}
|
||||||
default:
|
default:
|
||||||
# Mixed: Receive agent data, Level 1 aggregate, Level 2 aggregate
|
# Mixed: Receive agent data, Level 1 aggregate, Level 2 aggregate
|
||||||
# Receiver: Receive agent data, Level 1 aggregate
|
# Receiver: Receive agent data, Level 1 aggregate
|
||||||
|
|
@ -83,102 +85,112 @@ core:
|
||||||
# and it will cause more load for memory, network of OAP and storage.
|
# and it will cause more load for memory, network of OAP and storage.
|
||||||
# But, being activated, user could see the name in the storage entities, which make users easier to use 3rd party tool, such as Kibana->ES, to query the data by themselves.
|
# But, being activated, user could see the name in the storage entities, which make users easier to use 3rd party tool, such as Kibana->ES, to query the data by themselves.
|
||||||
activeExtraModelColumns: ${SW_CORE_ACTIVE_EXTRA_MODEL_COLUMNS:false}
|
activeExtraModelColumns: ${SW_CORE_ACTIVE_EXTRA_MODEL_COLUMNS:false}
|
||||||
|
|
||||||
storage:
|
storage:
|
||||||
# elasticsearch:
|
selector: ${SW_STORAGE:h2}
|
||||||
# nameSpace: ${SW_NAMESPACE:""}
|
elasticsearch:
|
||||||
# clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
|
nameSpace: ${SW_NAMESPACE:""}
|
||||||
# protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
|
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
|
||||||
# trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
|
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
|
||||||
# trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
|
trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
|
||||||
# enablePackedDownsampling: ${SW_STORAGE_ENABLE_PACKED_DOWNSAMPLING:true} # Hour and Day metrics will be merged into minute index.
|
trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
|
||||||
# dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index.
|
user: ${SW_ES_USER:""}
|
||||||
# user: ${SW_ES_USER:""}
|
password: ${SW_ES_PASSWORD:""}
|
||||||
# password: ${SW_ES_PASSWORD:""}
|
secretsManagementFile: ${SW_ES_SECRETS_MANAGEMENT_FILE:""} # Secrets management file in the properties format includes the username, password, which are managed by 3rd party tool.
|
||||||
# secretsManagementFile: ${SW_ES_SECRETS_MANAGEMENT_FILE:""} # Secrets management file in the properties format includes the username, password, which are managed by 3rd party tool.
|
enablePackedDownsampling: ${SW_STORAGE_ENABLE_PACKED_DOWNSAMPLING:true} # Hour and Day metrics will be merged into minute index.
|
||||||
# indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
|
dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index.
|
||||||
# indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
|
indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
|
||||||
# # Those data TTL settings will override the same settings in core module.
|
indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
|
||||||
# recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
|
# Those data TTL settings will override the same settings in core module.
|
||||||
# otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
|
recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
|
||||||
# monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
|
otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
|
||||||
# # Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
|
monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
|
||||||
# bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000} # Execute the bulk every 1000 requests
|
# Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
|
||||||
# flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
|
bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000} # Execute the bulk every 1000 requests
|
||||||
# concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
|
flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
|
||||||
# resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
|
concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
|
||||||
# metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
|
resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
|
||||||
# segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
|
metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
|
||||||
# profileTaskQueryMaxSize: ${SW_STORAGE_ES_QUERY_PROFILE_TASK_SIZE:200}
|
segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
|
||||||
# elasticsearch7:
|
profileTaskQueryMaxSize: ${SW_STORAGE_ES_QUERY_PROFILE_TASK_SIZE:200}
|
||||||
# nameSpace: ${SW_NAMESPACE:""}
|
advanced: ${SW_STORAGE_ES_ADVANCED:""}
|
||||||
# clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
|
elasticsearch7:
|
||||||
# protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
|
nameSpace: ${SW_NAMESPACE:""}
|
||||||
# trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
|
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
|
||||||
# trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
|
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
|
||||||
# enablePackedDownsampling: ${SW_STORAGE_ENABLE_PACKED_DOWNSAMPLING:true} # Hour and Day metrics will be merged into minute index.
|
trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
|
||||||
# dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index.
|
trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
|
||||||
# user: ${SW_ES_USER:""}
|
enablePackedDownsampling: ${SW_STORAGE_ENABLE_PACKED_DOWNSAMPLING:true} # Hour and Day metrics will be merged into minute index.
|
||||||
# password: ${SW_ES_PASSWORD:""}
|
dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index.
|
||||||
# secretsManagementFile: ${SW_ES_SECRETS_MANAGEMENT_FILE:""} # Secrets management file in the properties format includes the username, password, which are managed by 3rd party tool.
|
user: ${SW_ES_USER:""}
|
||||||
# indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
|
password: ${SW_ES_PASSWORD:""}
|
||||||
# indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
|
secretsManagementFile: ${SW_ES_SECRETS_MANAGEMENT_FILE:""} # Secrets management file in the properties format includes the username, password, which are managed by 3rd party tool.
|
||||||
# # Those data TTL settings will override the same settings in core module.
|
indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
|
||||||
# recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
|
indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
|
||||||
# otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
|
# Those data TTL settings will override the same settings in core module.
|
||||||
# monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
|
recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
|
||||||
# # Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
|
otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
|
||||||
# bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000} # Execute the bulk every 1000 requests
|
monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
|
||||||
# flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
|
# Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
|
||||||
# concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
|
bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000} # Execute the bulk every 1000 requests
|
||||||
# resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
|
flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
|
||||||
# metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
|
concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
|
||||||
# segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
|
resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
|
||||||
# profileTaskQueryMaxSize: ${SW_STORAGE_ES_QUERY_PROFILE_TASK_SIZE:200}
|
metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
|
||||||
|
segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
|
||||||
|
profileTaskQueryMaxSize: ${SW_STORAGE_ES_QUERY_PROFILE_TASK_SIZE:200}
|
||||||
|
advanced: ${SW_STORAGE_ES_ADVANCED:""}
|
||||||
h2:
|
h2:
|
||||||
driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
|
driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
|
||||||
url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
|
url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
|
||||||
user: ${SW_STORAGE_H2_USER:sa}
|
user: ${SW_STORAGE_H2_USER:sa}
|
||||||
metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
|
metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
|
||||||
# mysql:
|
mysql:
|
||||||
# properties:
|
properties:
|
||||||
# jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
|
jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
|
||||||
# dataSource.user: ${SW_DATA_SOURCE_USER:root}
|
dataSource.user: ${SW_DATA_SOURCE_USER:root}
|
||||||
# dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root@1234}
|
dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root@1234}
|
||||||
# dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
|
dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
|
||||||
# dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
|
dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
|
||||||
# dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
||||||
# dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
|
dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
|
||||||
# metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
|
metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
|
||||||
# influx:
|
influxdb:
|
||||||
# # Metadata storage provider configuration
|
# Metadata storage provider configuration
|
||||||
# metabaseType: ${SW_STORAGE_METABASE_TYPE:H2} # There are 2 options as Metabase provider, H2 or MySQL.
|
metabaseType: ${SW_STORAGE_METABASE_TYPE:H2} # There are 2 options as Metabase provider, H2 or MySQL.
|
||||||
# h2Props:
|
h2Props:
|
||||||
# dataSourceClassName: ${SW_STORAGE_METABASE_DRIVER:org.h2.jdbcx.JdbcDataSource}
|
dataSourceClassName: ${SW_STORAGE_METABASE_DRIVER:org.h2.jdbcx.JdbcDataSource}
|
||||||
# dataSource.url: ${SW_STORAGE_METABASE_URL:jdbc:h2:mem:skywalking-oap-db}
|
dataSource.url: ${SW_STORAGE_METABASE_URL:jdbc:h2:mem:skywalking-oap-db}
|
||||||
# dataSource.user: ${SW_STORAGE_METABASE_USER:sa}
|
dataSource.user: ${SW_STORAGE_METABASE_USER:sa}
|
||||||
# dataSource.password: ${SW_STORAGE_METABASE_PASSWORD:}
|
dataSource.password: ${SW_STORAGE_METABASE_PASSWORD:}
|
||||||
# mysqlProps:
|
mysqlProps:
|
||||||
# jdbcUrl: ${SW_STORAGE_METABASE_URL:"jdbc:mysql://localhost:3306/swtest"}
|
jdbcUrl: ${SW_STORAGE_METABASE_URL:"jdbc:mysql://localhost:3306/swtest"}
|
||||||
# dataSource.user: ${SW_STORAGE_METABASE_USER:root}
|
dataSource.user: ${SW_STORAGE_METABASE_USER:root}
|
||||||
# dataSource.password: ${SW_STORAGE_METABASE_PASSWORD:root@1234}
|
dataSource.password: ${SW_STORAGE_METABASE_PASSWORD:root@1234}
|
||||||
# dataSource.cachePrepStmts: ${SW_STORAGE_METABASE_CACHE_PREP_STMTS:true}
|
dataSource.cachePrepStmts: ${SW_STORAGE_METABASE_CACHE_PREP_STMTS:true}
|
||||||
# dataSource.prepStmtCacheSize: ${SW_STORAGE_METABASE_PREP_STMT_CACHE_SQL_SIZE:250}
|
dataSource.prepStmtCacheSize: ${SW_STORAGE_METABASE_PREP_STMT_CACHE_SQL_SIZE:250}
|
||||||
# dataSource.prepStmtCacheSqlLimit: ${SW_STORAGE_METABASE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
dataSource.prepStmtCacheSqlLimit: ${SW_STORAGE_METABASE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
||||||
# dataSource.useServerPrepStmts: ${SW_STORAGE_METABASE_USE_SERVER_PREP_STMTS:true}
|
dataSource.useServerPrepStmts: ${SW_STORAGE_METABASE_USE_SERVER_PREP_STMTS:true}
|
||||||
# metadataQueryMaxSize: ${SW_STORAGE_METABASE_QUERY_MAX_SIZE:5000}
|
metadataQueryMaxSize: ${SW_STORAGE_METABASE_QUERY_MAX_SIZE:5000}
|
||||||
# # InfluxDB configuration
|
# InfluxDB configuration
|
||||||
# url: ${SW_STORAGE_INFLUXDB_URL:http://localhost:8086}
|
url: ${SW_STORAGE_INFLUXDB_URL:http://localhost:8086}
|
||||||
# user: ${SW_STORAGE_INFLUXDB_USER:root}
|
user: ${SW_STORAGE_INFLUXDB_USER:root}
|
||||||
# password: ${SW_STORAGE_INFLUXDB_PASSWORD:}
|
password: ${SW_STORAGE_INFLUXDB_PASSWORD:}
|
||||||
# database: ${SW_STORAGE_INFLUXDB_DATABASE:skywalking}
|
database: ${SW_STORAGE_INFLUXDB_DATABASE:skywalking}
|
||||||
# actions: ${SW_STORAGE_INFLUXDB_ACTIONS:1000} # the number of actions to collect
|
actions: ${SW_STORAGE_INFLUXDB_ACTIONS:1000} # the number of actions to collect
|
||||||
# duration: ${SW_STORAGE_INFLUXDB_DURATION:1000} # the time to wait at most (milliseconds)
|
duration: ${SW_STORAGE_INFLUXDB_DURATION:1000} # the time to wait at most (milliseconds)
|
||||||
# fetchTaskLogMaxSize: ${SW_STORAGE_INFLUXDB_FETCH_TASK_LOG_MAX_SIZE:5000} # the max number of fetch task log in a request
|
fetchTaskLogMaxSize: ${SW_STORAGE_INFLUXDB_FETCH_TASK_LOG_MAX_SIZE:5000} # the max number of fetch task log in a request
|
||||||
|
|
||||||
receiver-sharing-server:
|
receiver-sharing-server:
|
||||||
|
selector: ${SW_RECEIVER_SHARING_SERVER:default}
|
||||||
default:
|
default:
|
||||||
|
authentication: ${SW_AUTHENTICATION:""}
|
||||||
receiver-register:
|
receiver-register:
|
||||||
|
selector: ${SW_RECEIVER_REGISTER:default}
|
||||||
default:
|
default:
|
||||||
|
|
||||||
receiver-trace:
|
receiver-trace:
|
||||||
|
selector: ${SW_RECEIVER_TRACE:default}
|
||||||
default:
|
default:
|
||||||
bufferPath: ${SW_RECEIVER_BUFFER_PATH:../trace-buffer/} # Path to trace buffer files, suggest to use absolute path
|
bufferPath: ${SW_RECEIVER_BUFFER_PATH:../trace-buffer/} # Path to trace buffer files, suggest to use absolute path
|
||||||
bufferOffsetMaxFileSize: ${SW_RECEIVER_BUFFER_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
|
bufferOffsetMaxFileSize: ${SW_RECEIVER_BUFFER_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
|
||||||
|
|
@ -186,77 +198,117 @@ receiver-trace:
|
||||||
bufferFileCleanWhenRestart: ${SW_RECEIVER_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
|
bufferFileCleanWhenRestart: ${SW_RECEIVER_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
|
||||||
sampleRate: ${SW_TRACE_SAMPLE_RATE:10000} # The sample rate precision is 1/10000. 10000 means 100% sample in default.
|
sampleRate: ${SW_TRACE_SAMPLE_RATE:10000} # The sample rate precision is 1/10000. 10000 means 100% sample in default.
|
||||||
slowDBAccessThreshold: ${SW_SLOW_DB_THRESHOLD:default:200,mongodb:100} # The slow database access thresholds. Unit ms.
|
slowDBAccessThreshold: ${SW_SLOW_DB_THRESHOLD:default:200,mongodb:100} # The slow database access thresholds. Unit ms.
|
||||||
|
|
||||||
receiver-jvm:
|
receiver-jvm:
|
||||||
|
selector: ${SW_RECEIVER_JVM:default}
|
||||||
default:
|
default:
|
||||||
|
|
||||||
receiver-clr:
|
receiver-clr:
|
||||||
|
selector: ${SW_RECEIVER_CLR:default}
|
||||||
default:
|
default:
|
||||||
|
|
||||||
receiver-profile:
|
receiver-profile:
|
||||||
|
selector: ${SW_RECEIVER_PROFILE:default}
|
||||||
default:
|
default:
|
||||||
|
|
||||||
service-mesh:
|
service-mesh:
|
||||||
|
selector: ${SW_SERVICE_MESH:default}
|
||||||
default:
|
default:
|
||||||
bufferPath: ${SW_SERVICE_MESH_BUFFER_PATH:../mesh-buffer/} # Path to trace buffer files, suggest to use absolute path
|
bufferPath: ${SW_SERVICE_MESH_BUFFER_PATH:../mesh-buffer/} # Path to trace buffer files, suggest to use absolute path
|
||||||
bufferOffsetMaxFileSize: ${SW_SERVICE_MESH_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
|
bufferOffsetMaxFileSize: ${SW_SERVICE_MESH_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
|
||||||
bufferDataMaxFileSize: ${SW_SERVICE_MESH_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
|
bufferDataMaxFileSize: ${SW_SERVICE_MESH_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
|
||||||
bufferFileCleanWhenRestart: ${SW_SERVICE_MESH_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
|
bufferFileCleanWhenRestart: ${SW_SERVICE_MESH_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
|
||||||
|
|
||||||
istio-telemetry:
|
istio-telemetry:
|
||||||
|
selector: ${SW_ISTIO_TELEMETRY:default}
|
||||||
default:
|
default:
|
||||||
|
|
||||||
envoy-metric:
|
envoy-metric:
|
||||||
|
selector: ${SW_ENVOY_METRIC:default}
|
||||||
default:
|
default:
|
||||||
# alsHTTPAnalysis: ${SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS:k8s-mesh}
|
alsHTTPAnalysis: ${SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS:""}
|
||||||
#receiver_zipkin:
|
|
||||||
# default:
|
receiver_zipkin:
|
||||||
# host: ${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0}
|
selector: ${SW_RECEIVER_ZIPKIN:-}
|
||||||
# port: ${SW_RECEIVER_ZIPKIN_PORT:9411}
|
default:
|
||||||
# contextPath: ${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/}
|
host: ${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0}
|
||||||
|
port: ${SW_RECEIVER_ZIPKIN_PORT:9411}
|
||||||
|
contextPath: ${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/}
|
||||||
|
|
||||||
|
receiver_jaeger:
|
||||||
|
selector: ${SW_RECEIVER_JAEGER:-}
|
||||||
|
default:
|
||||||
|
gRPCHost: ${SW_RECEIVER_JAEGER_HOST:0.0.0.0}
|
||||||
|
gRPCPort: ${SW_RECEIVER_JAEGER_PORT:14250}
|
||||||
|
|
||||||
query:
|
query:
|
||||||
|
selector: ${SW_QUERY:graphql}
|
||||||
graphql:
|
graphql:
|
||||||
path: ${SW_QUERY_GRAPHQL_PATH:/graphql}
|
path: ${SW_QUERY_GRAPHQL_PATH:/graphql}
|
||||||
alarm:
|
|
||||||
default:
|
|
||||||
telemetry:
|
|
||||||
none:
|
|
||||||
configuration:
|
|
||||||
none:
|
|
||||||
# apollo:
|
|
||||||
# apolloMeta: http://106.12.25.204:8080
|
|
||||||
# apolloCluster: default
|
|
||||||
# # apolloEnv: # defaults to null
|
|
||||||
# appId: skywalking
|
|
||||||
# period: 5
|
|
||||||
# nacos:
|
|
||||||
# # Nacos Server Host
|
|
||||||
# serverAddr: 127.0.0.1
|
|
||||||
# # Nacos Server Port
|
|
||||||
# port: 8848
|
|
||||||
# # Nacos Configuration Group
|
|
||||||
# group: 'skywalking'
|
|
||||||
# # Nacos Configuration namespace
|
|
||||||
# namespace: ''
|
|
||||||
# # Unit seconds, sync period. Default fetch every 60 seconds.
|
|
||||||
# period : 60
|
|
||||||
# # the name of current cluster, set the name if you want to upstream system known.
|
|
||||||
# clusterName: "default"
|
|
||||||
# zookeeper:
|
|
||||||
# period : 60 # Unit seconds, sync period. Default fetch every 60 seconds.
|
|
||||||
# nameSpace: /default
|
|
||||||
# hostPort: localhost:2181
|
|
||||||
# #Retry Policy
|
|
||||||
# baseSleepTimeMs: 1000 # initial amount of time to wait between retries
|
|
||||||
# maxRetries: 3 # max number of times to retry
|
|
||||||
# etcd:
|
|
||||||
# period : 60 # Unit seconds, sync period. Default fetch every 60 seconds.
|
|
||||||
# group : 'skywalking'
|
|
||||||
# serverAddr: localhost:2379
|
|
||||||
# clusterName: "default"
|
|
||||||
# consul:
|
|
||||||
# # Consul host and ports, separated by comma, e.g. 1.2.3.4:8500,2.3.4.5:8500
|
|
||||||
# hostAndPorts: ${consul.address}
|
|
||||||
# # Sync period in seconds. Defaults to 60 seconds.
|
|
||||||
# period: 1
|
|
||||||
# # Consul aclToken
|
|
||||||
# #aclToken: ${consul.aclToken}
|
|
||||||
|
|
||||||
#exporter:
|
alarm:
|
||||||
# grpc:
|
selector: ${SW_ALARM:default}
|
||||||
# targetHost: ${SW_EXPORTER_GRPC_HOST:127.0.0.1}
|
default:
|
||||||
# targetPort: ${SW_EXPORTER_GRPC_PORT:9870}
|
|
||||||
|
telemetry:
|
||||||
|
selector: ${SW_TELEMETRY:none}
|
||||||
|
none:
|
||||||
|
prometheus:
|
||||||
|
host: ${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}
|
||||||
|
port: ${SW_TELEMETRY_PROMETHEUS_PORT:1234}
|
||||||
|
so11y:
|
||||||
|
prometheusExporterEnabled: ${SW_TELEMETRY_SO11Y_PROMETHEUS_ENABLED:true}
|
||||||
|
prometheusExporterHost: ${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}
|
||||||
|
prometheusExporterPort: ${SW_TELEMETRY_PROMETHEUS_PORT:1234}
|
||||||
|
|
||||||
|
receiver-so11y:
|
||||||
|
selector: ${SW_RECEIVER_SO11Y:-}
|
||||||
|
default:
|
||||||
|
|
||||||
|
configuration:
|
||||||
|
selector: ${SW_CONFIGURATION:none}
|
||||||
|
none:
|
||||||
|
apollo:
|
||||||
|
apolloMeta: http://106.12.25.204:8080
|
||||||
|
apolloCluster: default
|
||||||
|
apolloEnv: ""
|
||||||
|
appId: skywalking
|
||||||
|
period: 5
|
||||||
|
nacos:
|
||||||
|
# Nacos Server Host
|
||||||
|
serverAddr: 127.0.0.1
|
||||||
|
# Nacos Server Port
|
||||||
|
port: 8848
|
||||||
|
# Nacos Configuration Group
|
||||||
|
group: 'skywalking'
|
||||||
|
# Nacos Configuration namespace
|
||||||
|
namespace: ''
|
||||||
|
# Unit seconds, sync period. Default fetch every 60 seconds.
|
||||||
|
period : 60
|
||||||
|
# the name of current cluster, set the name if you want to upstream system known.
|
||||||
|
clusterName: "default"
|
||||||
|
zookeeper:
|
||||||
|
period : 60 # Unit seconds, sync period. Default fetch every 60 seconds.
|
||||||
|
nameSpace: /default
|
||||||
|
hostPort: localhost:2181
|
||||||
|
# Retry Policy
|
||||||
|
baseSleepTimeMs: 1000 # initial amount of time to wait between retries
|
||||||
|
maxRetries: 3 # max number of times to retry
|
||||||
|
etcd:
|
||||||
|
period : 60 # Unit seconds, sync period. Default fetch every 60 seconds.
|
||||||
|
group : 'skywalking'
|
||||||
|
serverAddr: localhost:2379
|
||||||
|
clusterName: "default"
|
||||||
|
consul:
|
||||||
|
# Consul host and ports, separated by comma, e.g. 1.2.3.4:8500,2.3.4.5:8500
|
||||||
|
hostAndPorts: ${consul.address}
|
||||||
|
# Sync period in seconds. Defaults to 60 seconds.
|
||||||
|
period: 1
|
||||||
|
# Consul aclToken
|
||||||
|
#aclToken: ${consul.aclToken}
|
||||||
|
|
||||||
|
exporter:
|
||||||
|
selector: ${SW_EXPORTER:-}
|
||||||
|
grpc:
|
||||||
|
targetHost: ${SW_EXPORTER_GRPC_HOST:127.0.0.1}
|
||||||
|
targetPort: ${SW_EXPORTER_GRPC_PORT:9870}
|
||||||
|
|
|
||||||
|
|
@ -18,478 +18,18 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
var_application_file="config/application.yml"
|
|
||||||
|
|
||||||
generateClusterStandalone() {
|
|
||||||
echo "cluster:" >> ${var_application_file}
|
|
||||||
echo " standalone:" >> ${var_application_file}
|
|
||||||
}
|
|
||||||
|
|
||||||
generateClusterZookeeper() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
cluster:
|
|
||||||
zookeeper:
|
|
||||||
nameSpace: \${SW_NAMESPACE:""}
|
|
||||||
hostPort: \${SW_CLUSTER_ZK_HOST_PORT:zookeeper:2181}
|
|
||||||
#Retry Policy
|
|
||||||
baseSleepTimeMs: \${SW_CLUSTER_ZK_SLEEP_TIME:1000} # initial amount of time to wait between retries
|
|
||||||
maxRetries: \${SW_CLUSTER_ZK_MAX_RETRIES:3} # max number of times to retry
|
|
||||||
# Enable ACL
|
|
||||||
enableACL: \${SW_ZK_ENABLE_ACL:false} # disable ACL in default
|
|
||||||
schema: \${SW_ZK_SCHEMA:digest} # only support digest schema
|
|
||||||
expression: \${SW_ZK_EXPRESSION:skywalking:skywalking}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateClusterK8s() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
cluster:
|
|
||||||
kubernetes:
|
|
||||||
watchTimeoutSeconds: \${SW_CLUSTER_K8S_WATCH_TIMEOUT:60}
|
|
||||||
namespace: \${SW_CLUSTER_K8S_NAMESPACE:default}
|
|
||||||
labelSelector: \${SW_CLUSTER_K8S_LABEL:app=collector,release=skywalking}
|
|
||||||
uidEnvName: \${SW_CLUSTER_K8S_UID:SKYWALKING_COLLECTOR_UID}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateClusterConsul() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
cluster:
|
|
||||||
consul:
|
|
||||||
serviceName: \${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
|
||||||
# Consul cluster nodes, example: 10.0.0.1:8500,10.0.0.2:8500,10.0.0.3:8500
|
|
||||||
hostPort: \${SW_CLUSTER_CONSUL_HOST_PORT:consul:8500}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateClusterEtcd() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
cluster:
|
|
||||||
etcd:
|
|
||||||
serviceName: \${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
|
||||||
# Etcd cluster nodes, example: 10.0.0.1:2379,10.0.0.2:2379,10.0.0.3:2379
|
|
||||||
hostPort: \${SW_CLUSTER_ETCD_HOST_PORT:etcd:2379}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateClusterNacos() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
cluster:
|
|
||||||
nacos:
|
|
||||||
serviceName: \${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
|
||||||
namespace: \${SW_CLUSTER_NACOS_NAMESPACE:""}
|
|
||||||
hostPort: \${SW_CLUSTER_NACOS_HOST_PORT:nacos:8848}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateStorageElastisearch() {
|
|
||||||
if [[ "$SW_RECEIVER_ZIPKIN_ENABLED" = "true" ]]; then
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
storage:
|
|
||||||
zipkin-elasticsearch:
|
|
||||||
EOT
|
|
||||||
elif [[ "$SW_RECEIVER_JAEGER_ENABLED" = "true" ]]; then
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
storage:
|
|
||||||
jaeger-elasticsearch:
|
|
||||||
EOT
|
|
||||||
else
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
storage:
|
|
||||||
elasticsearch7:
|
|
||||||
EOT
|
|
||||||
fi
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
nameSpace: \${SW_NAMESPACE:""}
|
|
||||||
clusterNodes: \${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
|
|
||||||
protocol: \${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
|
|
||||||
user: \${SW_ES_USER:""}
|
|
||||||
password: \${SW_ES_PASSWORD:""}
|
|
||||||
indexShardsNumber: \${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
|
|
||||||
indexReplicasNumber: \${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
|
|
||||||
# Those data TTL settings will override the same settings in core module.
|
|
||||||
recordDataTTL: \${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
|
|
||||||
otherMetricsDataTTL: \${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
|
|
||||||
monthMetricsDataTTL: \${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
|
|
||||||
# Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
|
|
||||||
bulkActions: \${SW_STORAGE_ES_BULK_ACTIONS:2000} # Execute the bulk every 2000 requests
|
|
||||||
bulkSize: \${SW_STORAGE_ES_BULK_SIZE:20} # flush the bulk every 20mb
|
|
||||||
flushInterval: \${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
|
|
||||||
concurrentRequests: \${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
|
|
||||||
resultWindowMaxSize: \${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
|
|
||||||
metadataQueryMaxSize: \${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
|
|
||||||
segmentQueryMaxSize: \${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateStorageH2() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
storage:
|
|
||||||
h2:
|
|
||||||
driver: \${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
|
|
||||||
url: \${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
|
|
||||||
user: \${SW_STORAGE_H2_USER:sa}
|
|
||||||
metadataQueryMaxSize: \${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateStorageMySQL() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
storage:
|
|
||||||
mysql:
|
|
||||||
properties:
|
|
||||||
jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
|
|
||||||
dataSource.user: ${SW_DATA_SOURCE_USER:root}
|
|
||||||
dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root@1234}
|
|
||||||
dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
|
|
||||||
dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
|
|
||||||
dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
|
||||||
dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
|
|
||||||
metadataQueryMaxSize: \${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateStorageInfluxDB() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
storage:
|
|
||||||
influx:
|
|
||||||
# Metadata storage provider configuration
|
|
||||||
metabaseType: \${SW_STORAGE_METABASE_TYPE:H2} # There are 2 options as Metabase provider, H2 or MySQL.
|
|
||||||
h2Props:
|
|
||||||
dataSourceClassName: \${SW_STORAGE_METABASE_DRIVER:org.h2.jdbcx.JdbcDataSource}
|
|
||||||
dataSource.url: \${SW_STORAGE_METABASE_URL:jdbc:h2:mem:skywalking-oap-db}
|
|
||||||
dataSource.user: \${SW_STORAGE_METABASE_USER:sa}
|
|
||||||
dataSource.password: \${SW_STORAGE_METABASE_PASSWORD:}
|
|
||||||
mysqlProps:
|
|
||||||
jdbcUrl: \${SW_STORAGE_METABASE_URL:"jdbc:mysql://localhost:3306/swtest"}
|
|
||||||
dataSource.user: \${SW_STORAGE_METABASE_USER:root}
|
|
||||||
dataSource.password: \${SW_STORAGE_METABASE_PASSWORD:root@1234}
|
|
||||||
dataSource.cachePrepStmts: \${SW_STORAGE_METABASE_CACHE_PREP_STMTS:true}
|
|
||||||
dataSource.prepStmtCacheSize: \${SW_STORAGE_METABASE_PREP_STMT_CACHE_SQL_SIZE:250}
|
|
||||||
dataSource.prepStmtCacheSqlLimit: \${SW_STORAGE_METABASE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
|
||||||
dataSource.useServerPrepStmts: \${SW_STORAGE_METABASE_USE_SERVER_PREP_STMTS:true}
|
|
||||||
metadataQueryMaxSize: \${SW_STORAGE_METABASE_QUERY_MAX_SIZE:5000}
|
|
||||||
# InfluxDB configuration
|
|
||||||
url: \${SW_STORAGE_INFLUXDB_URL:http://localhost:8086}
|
|
||||||
user: \${SW_STORAGE_INFLUXDB_USER:root}
|
|
||||||
password: \${SW_STORAGE_INFLUXDB_PASSWORD:}
|
|
||||||
database: \${SW_STORAGE_INFLUXDB_DATABASE:skywalking}
|
|
||||||
actions: \${SW_STORAGE_INFLUXDB_ACTIONS:1000} # the number of actions to collect
|
|
||||||
duration: \${SW_STORAGE_INFLUXDB_DURATION:1000} # the time to wait at most (milliseconds)
|
|
||||||
fetchTaskLogMaxSize: \${SW_STORAGE_INFLUXDB_FETCH_TASK_LOG_MAX_SIZE:5000} # the max number of fetch task log in a request
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateConfigurationNone() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
configuration:
|
|
||||||
none:
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateConfigurationApollo() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
configuration:
|
|
||||||
apollo:
|
|
||||||
apolloMeta: \${SW_CONFIGURATION_APOLLO_META:http://apollo:8080}
|
|
||||||
apolloCluster: \${SW_CONFIGURATION_APOLLO_CLUSTER:default}
|
|
||||||
apolloEnv: \${SW_CONFIGURATION_APOLLO_ENV:""}
|
|
||||||
appId: \${SW_CONFIGURATION_APOLLO_APP_ID:skywalking}
|
|
||||||
period: \${SW_CONFIGURATION_APOLLO_PERIOD:5}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateConfigurationNacos() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
configuration:
|
|
||||||
nacos:
|
|
||||||
# Nacos Server Host
|
|
||||||
serverAddr: \${SW_CONFIGURATION_NACOS_SERVER_ADDR:nacos}
|
|
||||||
# Nacos Server Port
|
|
||||||
port: \${SW_CONFIGURATION_NACOS_PORT:8848}
|
|
||||||
# Nacos Configuration Group
|
|
||||||
group: \${SW_CONFIGURATION_NACOS_GROUP:skywalking}
|
|
||||||
# Nacos Configuration namespace
|
|
||||||
namespace: \${SW_CONFIGURATION_NACOS_NAMESPACE:""}
|
|
||||||
# Unit seconds, sync period. Default fetch every 60 seconds.
|
|
||||||
period : \${SW_CONFIGURATION_NACOS_PERIOD:5}
|
|
||||||
# the name of current cluster, set the name if you want to upstream system known.
|
|
||||||
clusterName: \${SW_CONFIGURATION_NACOS_CLUSTER_NAME:default}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateConfigurationZookeeper() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
configuration:
|
|
||||||
zookeeper:
|
|
||||||
period: \${SW_CONFIGURATION_ZOOKEEPER_PERIOD:60} # Unit seconds, sync period. Default fetch every 60 seconds.
|
|
||||||
nameSpace: \${SW_CONFIGURATION_ZOOKEEPER_NAMESPACE:/default}
|
|
||||||
hostPort: \${SW_CONFIGURATION_ZOOKEEPER_HOST_PATH:localhost:2181}
|
|
||||||
#Retry Policy
|
|
||||||
baseSleepTimeMs: \${SW_CONFIGURATION_ZOOKEEPER_BASE_SLEEP_TIME_MS:1000} # initial amount of time to wait between retries
|
|
||||||
maxRetries: \${SW_CONFIGURATION_ZOOKEEPER_MAX_RETRIES:3}3 # max number of times to retry
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateConfigurationGRPC() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
configuration:
|
|
||||||
grpc:
|
|
||||||
host: \${SW_CONFIGURATION_GRPC_HOST:127.0.0.1}
|
|
||||||
port: \${SW_CONFIGURATION_GRPC_PORT:9555}
|
|
||||||
period: \${SW_CONFIGURATION_GRPC_PERIOD:60}
|
|
||||||
clusterName: \${SW_CONFIGURATION_GRPC_CLUSTER_NAME:"default"}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateConfigurationConsul() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
configuration:
|
|
||||||
consul:
|
|
||||||
# Consul host and ports, separated by comma, e.g. 1.2.3.4:8500,2.3.4.5:8500
|
|
||||||
hostAndPorts: \${SW_CONFIGURATION_CONSUL_ADDRESS:127.0.0.1:8500}
|
|
||||||
# Sync period in seconds. Defaults to 60 seconds.
|
|
||||||
period: \${SW_CONFIGURATION_CONSUL_PERIOD:60}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateTelemetryNone() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
telemetry:
|
|
||||||
none:
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateTelemetryPrometheus() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
telemetry:
|
|
||||||
prometheus:
|
|
||||||
host: \${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}
|
|
||||||
port: \${SW_TELEMETRY_PROMETHEUS_PORT:1234}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateTelemetrySo11y() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
telemetry:
|
|
||||||
so11y:
|
|
||||||
prometheusExporterEnabled: \${SW_TELEMETRY_SO11Y_PROMETHEUS_ENABLED:true}
|
|
||||||
prometheusExporterHost: \${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}
|
|
||||||
prometheusExporterPort: \${SW_TELEMETRY_PROMETHEUS_PORT:1234}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
validateVariables() {
|
|
||||||
name=$1; value=$2; list=$3
|
|
||||||
valid=false
|
|
||||||
for c in ${list} ; do
|
|
||||||
if [[ "$c" = "$value" ]]; then
|
|
||||||
valid=true
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if ! ${valid}; then
|
|
||||||
echo "Error: $name=$value please specify $name = $list"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
generateApplicationYaml() {
|
|
||||||
# validate
|
|
||||||
[[ -z "$SW_CLUSTER" ]] && [[ -z "$SW_STORAGE" ]] && [[ -z "$SW_CONFIGURATION" ]] \
|
|
||||||
&& [[ -z "$SW_TELEMETRY" ]] \
|
|
||||||
&& { echo "Error: please specify \"SW_CLUSTER\" \"SW_STORAGE\" \"SW_CONFIGURATION\" \"SW_TELEMETRY\""; exit 1; }
|
|
||||||
|
|
||||||
validateVariables "SW_CLUSTER" "$SW_CLUSTER" "standalone zookeeper kubernetes consul etcd nacos"
|
|
||||||
|
|
||||||
validateVariables "SW_STORAGE" "$SW_STORAGE" "elasticsearch h2 mysql influxdb"
|
|
||||||
|
|
||||||
validateVariables "SW_CONFIGURATION" "$SW_CONFIGURATION" "none apollo nacos zookeeper"
|
|
||||||
|
|
||||||
validateVariables "SW_TELEMETRY" "$SW_TELEMETRY" "none prometheus so11y"
|
|
||||||
|
|
||||||
echo "# Generated by 'docker-entrypoint.sh'" > ${var_application_file}
|
|
||||||
#generate cluster
|
|
||||||
case ${SW_CLUSTER} in
|
|
||||||
standalone) generateClusterStandalone;;
|
|
||||||
zookeeper) generateClusterZookeeper;;
|
|
||||||
kubernetes) generateClusterK8s;;
|
|
||||||
consul) generateClusterConsul;;
|
|
||||||
etcd) generateClusterEtcd;;
|
|
||||||
nacos) generateClusterNacos;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
#generate core
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
core:
|
|
||||||
default:
|
|
||||||
# Mixed: Receive agent data, Level 1 aggregate, Level 2 aggregate
|
|
||||||
# Receiver: Receive agent data, Level 1 aggregate
|
|
||||||
# Aggregator: Level 2 aggregate
|
|
||||||
role: \${SW_CORE_ROLE:Mixed} # Mixed/Receiver/Aggregator
|
|
||||||
restHost: \${SW_CORE_REST_HOST:0.0.0.0}
|
|
||||||
restPort: \${SW_CORE_REST_PORT:12800}
|
|
||||||
restContextPath: \${SW_CORE_REST_CONTEXT_PATH:/}
|
|
||||||
gRPCHost: \${SW_CORE_GRPC_HOST:0.0.0.0}
|
|
||||||
gRPCPort: \${SW_CORE_GRPC_PORT:11800}
|
|
||||||
gRPCSslEnabled: \${SW_CORE_GRPC_SSL_ENABLED:false}
|
|
||||||
gRPCSslKeyPath: \${SW_CORE_GRPC_SSL_KEY_PATH:""}
|
|
||||||
gRPCSslCertChainPath: \${SW_CORE_GRPC_SSL_CERT_CHAIN_PATH:""}
|
|
||||||
gRPCSslTrustedCAPath: \${SW_CORE_GRPC_SSL_TRUSTED_CA_PATH:""}
|
|
||||||
downsampling:
|
|
||||||
- Hour
|
|
||||||
- Day
|
|
||||||
- Month
|
|
||||||
# Set a timeout on metrics data. After the timeout has expired, the metrics data will automatically be deleted.
|
|
||||||
enableDataKeeperExecutor: \${SW_CORE_ENABLE_DATA_KEEPER_EXECUTOR:true} # Turn it off then automatically metrics data delete will be close.
|
|
||||||
dataKeeperExecutePeriod: \${SW_CORE_DATA_KEEPER_EXECUTE_PERIOD:5} # How often the data keeper executor runs periodically, unit is minute
|
|
||||||
recordDataTTL: \${SW_CORE_RECORD_DATA_TTL:90} # Unit is minute
|
|
||||||
minuteMetricsDataTTL: \${SW_CORE_MINUTE_METRIC_DATA_TTL:90} # Unit is minute
|
|
||||||
hourMetricsDataTTL: \${SW_CORE_HOUR_METRIC_DATA_TTL:36} # Unit is hour
|
|
||||||
dayMetricsDataTTL: \${SW_CORE_DAY_METRIC_DATA_TTL:45} # Unit is day
|
|
||||||
monthMetricsDataTTL: \${SW_CORE_MONTH_METRIC_DATA_TTL:18} # Unit is month
|
|
||||||
# Cache metric data for 1 minute to reduce database queries, and if the OAP cluster changes within that minute,
|
|
||||||
# the metrics may not be accurate within that minute.
|
|
||||||
enableDatabaseSession: \${SW_CORE_ENABLE_DATABASE_SESSION:true}
|
|
||||||
topNReportPeriod: \${SW_CORE_TOPN_REPORT_PERIOD:10}
|
|
||||||
EOT
|
|
||||||
|
|
||||||
# generate storage
|
|
||||||
case ${SW_STORAGE} in
|
|
||||||
elasticsearch) generateStorageElastisearch;;
|
|
||||||
h2) generateStorageH2;;
|
|
||||||
mysql) generateStorageMySQL;;
|
|
||||||
influxdb) generateStorageInfluxDB;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
receiver-sharing-server:
|
|
||||||
default:
|
|
||||||
restHost: \${SW_RECEIVER_SHARING_REST_HOST:0.0.0.0}
|
|
||||||
restPort: \${SW_RECEIVER_SHARING_REST_PORT:0}
|
|
||||||
restContextPath: \${SW_RECEIVER_SHARING_REST_CONTEXT_PATH:/}
|
|
||||||
gRPCHost: \${SW_RECEIVER_SHARING_GRPC_HOST:0.0.0.0}
|
|
||||||
gRPCPort: \${SW_RECEIVER_SHARING_GRPC_PORT:0}
|
|
||||||
maxConcurrentCallsPerConnection: \${SW_RECEIVER_SHARING_MAX_CONCURRENT_CALL:0}
|
|
||||||
maxMessageSize: \${SW_RECEIVER_SHARING_MAX_MESSAGE_SIZE:0}
|
|
||||||
gRPCThreadPoolSize: \${SW_RECEIVER_SHARING_GRPC_THREAD_POOL_SIZE:0}
|
|
||||||
gRPCThreadPoolQueueSize: \${SW_RECEIVER_SHARING_GRPC_THREAD_POOL_QUEUE_SIZE:0}
|
|
||||||
authentication: \${SW_AUTHENTICATION:""}
|
|
||||||
gRPCSslEnabled: \${SW_RECEIVER_SHARING_GRPC_SSL_ENABLED:false}
|
|
||||||
gRPCSslKeyPath: \${SW_RECEIVER_SHARING_GRPC_SSL_KEY_PATH:""}
|
|
||||||
gRPCSslCertChainPath: \${SW_RECEIVER_SHARING_GRPC_SSL_CERT_CHAIN_PATH:""}
|
|
||||||
receiver-register:
|
|
||||||
default:
|
|
||||||
receiver-trace:
|
|
||||||
default:
|
|
||||||
bufferPath: \${SW_RECEIVER_BUFFER_PATH:../trace-buffer/} # Path to trace buffer files, suggest to use absolute path
|
|
||||||
bufferOffsetMaxFileSize: \${SW_RECEIVER_BUFFER_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
|
|
||||||
bufferDataMaxFileSize: \${SW_RECEIVER_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
|
|
||||||
bufferFileCleanWhenRestart: \${SW_RECEIVER_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
|
|
||||||
sampleRate: \${SW_TRACE_SAMPLE_RATE:10000} # The sample rate precision is 1/10000. 10000 means 100% sample in default.
|
|
||||||
slowDBAccessThreshold: \${SW_SLOW_DB_THRESHOLD:default:200,mongodb:100} # The slow database access thresholds. Unit ms.
|
|
||||||
receiver-jvm:
|
|
||||||
default:
|
|
||||||
receiver-clr:
|
|
||||||
default:
|
|
||||||
service-mesh:
|
|
||||||
default:
|
|
||||||
bufferPath: \${SW_SERVICE_MESH_BUFFER_PATH:../mesh-buffer/} # Path to trace buffer files, suggest to use absolute path
|
|
||||||
bufferOffsetMaxFileSize: \${SW_SERVICE_MESH_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
|
|
||||||
bufferDataMaxFileSize: \${SW_SERVICE_MESH_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
|
|
||||||
bufferFileCleanWhenRestart: \${SW_SERVICE_MESH_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
|
|
||||||
istio-telemetry:
|
|
||||||
default:
|
|
||||||
query:
|
|
||||||
graphql:
|
|
||||||
path: \${SW_QUERY_GRAPHQL_PATH:/graphql}
|
|
||||||
alarm:
|
|
||||||
default:
|
|
||||||
EOT
|
|
||||||
# generate telemetry
|
|
||||||
case ${SW_TELEMETRY} in
|
|
||||||
none) generateTelemetryNone;;
|
|
||||||
prometheus) generateTelemetryPrometheus;;
|
|
||||||
so11y) generateTelemetrySo11y;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# generate configuration
|
|
||||||
case ${SW_CONFIGURATION} in
|
|
||||||
none) generateConfigurationNone;;
|
|
||||||
apollo) generateConfigurationApollo;;
|
|
||||||
nacos) generateConfigurationNacos;;
|
|
||||||
zookeeper) generateConfigurationZookeeper;;
|
|
||||||
consul) generateConfigurationConsul;;
|
|
||||||
grpc) generateConfigurationGRPC;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
envoy-metric:
|
|
||||||
default:
|
|
||||||
EOT
|
|
||||||
if [[ "$SW_ENVOY_ALS_ENABLED" = "true" ]]; then
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
alsHTTPAnalysis: \${SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS:k8s-mesh}
|
|
||||||
EOT
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$SW_RECEIVER_ZIPKIN_ENABLED" = "true" ]]; then
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
receiver_zipkin:
|
|
||||||
default:
|
|
||||||
host: \${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0}
|
|
||||||
port: \${SW_RECEIVER_ZIPKIN_PORT:9411}
|
|
||||||
contextPath: \${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/}
|
|
||||||
EOT
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$SW_RECEIVER_JAEGER_ENABLED" = "true" ]]; then
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
receiver_jaeger:
|
|
||||||
default:
|
|
||||||
gRPCHost: \${SW_RECEIVER_JAEGER_HOST:0.0.0.0}
|
|
||||||
gRPCPort: \${SW_RECEIVER_JAEGER_PORT:14250}
|
|
||||||
EOT
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$SW_TELEMETRY" = "so11y" ]]; then
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
receiver-so11y:
|
|
||||||
default:
|
|
||||||
EOT
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$SW_EXPORTER_ENABLED" = "true" ]]; then
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
exporter:
|
|
||||||
grpc:
|
|
||||||
targetHost: \${SW_EXPORTER_GRPC_HOST:127.0.0.1}
|
|
||||||
targetPort: \${SW_EXPORTER_GRPC_PORT:9870}
|
|
||||||
EOT
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "[Entrypoint] Apache SkyWalking Docker Image"
|
echo "[Entrypoint] Apache SkyWalking Docker Image"
|
||||||
|
|
||||||
SW_CLUSTER=${SW_CLUSTER:-standalone}
|
if [[ "$SW_TELEMETRY" = "so11y" ]]; then
|
||||||
SW_STORAGE=${SW_STORAGE:-h2}
|
export SW_RECEIVER_SO11Y=default
|
||||||
SW_CONFIGURATION=${SW_CONFIGURATION:-none}
|
echo "Set SW_RECEIVER_SO11Y to ${SW_RECEIVER_SO11Y}"
|
||||||
SW_TELEMETRY=${SW_TELEMETRY:-none}
|
fi
|
||||||
|
|
||||||
EXT_LIB_DIR=/skywalking/ext-libs
|
EXT_LIB_DIR=/skywalking/ext-libs
|
||||||
EXT_CONFIG_DIR=/skywalking/ext-config
|
EXT_CONFIG_DIR=/skywalking/ext-config
|
||||||
|
|
||||||
# If user wants to override application.yml, the one generated by docker-entrypoint.sh should be ignored.
|
|
||||||
[[ -f ${EXT_CONFIG_DIR}/application.yml ]] && SW_L0AD_CONFIG_FILE_FROM_VOLUME=true
|
|
||||||
|
|
||||||
# Override configuration files
|
# Override configuration files
|
||||||
cp -vfR ${EXT_CONFIG_DIR}/ config/
|
cp -vfR ${EXT_CONFIG_DIR}/ config/
|
||||||
if [[ -z "$SW_L0AD_CONFIG_FILE_FROM_VOLUME" ]] || [[ "$SW_L0AD_CONFIG_FILE_FROM_VOLUME" != "true" ]]; then
|
|
||||||
generateApplicationYaml
|
|
||||||
echo "Generated application.yml"
|
|
||||||
echo "-------------------------"
|
|
||||||
cat ${var_application_file}
|
|
||||||
echo "-------------------------"
|
|
||||||
fi
|
|
||||||
|
|
||||||
CLASSPATH="config:$CLASSPATH"
|
CLASSPATH="config:$CLASSPATH"
|
||||||
for i in oap-libs/*.jar
|
for i in oap-libs/*.jar
|
||||||
|
|
|
||||||
|
|
@ -18,481 +18,18 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
var_application_file="config/application.yml"
|
|
||||||
|
|
||||||
generateClusterStandalone() {
|
|
||||||
echo "cluster:" >> ${var_application_file}
|
|
||||||
echo " standalone:" >> ${var_application_file}
|
|
||||||
}
|
|
||||||
|
|
||||||
generateClusterZookeeper() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
cluster:
|
|
||||||
zookeeper:
|
|
||||||
nameSpace: \${SW_NAMESPACE:""}
|
|
||||||
hostPort: \${SW_CLUSTER_ZK_HOST_PORT:zookeeper:2181}
|
|
||||||
#Retry Policy
|
|
||||||
baseSleepTimeMs: \${SW_CLUSTER_ZK_SLEEP_TIME:1000} # initial amount of time to wait between retries
|
|
||||||
maxRetries: \${SW_CLUSTER_ZK_MAX_RETRIES:3} # max number of times to retry
|
|
||||||
# Enable ACL
|
|
||||||
enableACL: \${SW_ZK_ENABLE_ACL:false} # disable ACL in default
|
|
||||||
schema: \${SW_ZK_SCHEMA:digest} # only support digest schema
|
|
||||||
expression: \${SW_ZK_EXPRESSION:skywalking:skywalking}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateClusterK8s() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
cluster:
|
|
||||||
kubernetes:
|
|
||||||
watchTimeoutSeconds: \${SW_CLUSTER_K8S_WATCH_TIMEOUT:60}
|
|
||||||
namespace: \${SW_CLUSTER_K8S_NAMESPACE:default}
|
|
||||||
labelSelector: \${SW_CLUSTER_K8S_LABEL:app=collector,release=skywalking}
|
|
||||||
uidEnvName: \${SW_CLUSTER_K8S_UID:SKYWALKING_COLLECTOR_UID}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateClusterConsul() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
cluster:
|
|
||||||
consul:
|
|
||||||
serviceName: \${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
|
||||||
# Consul cluster nodes, example: 10.0.0.1:8500,10.0.0.2:8500,10.0.0.3:8500
|
|
||||||
hostPort: \${SW_CLUSTER_CONSUL_HOST_PORT:consul:8500}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateClusterEtcd() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
cluster:
|
|
||||||
etcd:
|
|
||||||
serviceName: \${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
|
||||||
# Etcd cluster nodes, example: 10.0.0.1:2379,10.0.0.2:2379,10.0.0.3:2379
|
|
||||||
hostPort: \${SW_CLUSTER_ETCD_HOST_PORT:etcd:2379}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateClusterNacos() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
cluster:
|
|
||||||
nacos:
|
|
||||||
serviceName: \${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
|
||||||
namespace: \${SW_CLUSTER_NACOS_NAMESPACE:""}
|
|
||||||
hostPort: \${SW_CLUSTER_NACOS_HOST_PORT:nacos:8848}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateStorageElastisearch() {
|
|
||||||
if [[ "$SW_RECEIVER_ZIPKIN_ENABLED" = "true" ]]; then
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
storage:
|
|
||||||
zipkin-elasticsearch:
|
|
||||||
EOT
|
|
||||||
elif [[ "$SW_RECEIVER_JAEGER_ENABLED" = "true" ]]; then
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
storage:
|
|
||||||
jaeger-elasticsearch:
|
|
||||||
EOT
|
|
||||||
else
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
storage:
|
|
||||||
elasticsearch:
|
|
||||||
EOT
|
|
||||||
fi
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
nameSpace: \${SW_NAMESPACE:""}
|
|
||||||
clusterNodes: \${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
|
|
||||||
protocol: \${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
|
|
||||||
user: \${SW_ES_USER:""}
|
|
||||||
password: \${SW_ES_PASSWORD:""}
|
|
||||||
indexShardsNumber: \${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
|
|
||||||
indexReplicasNumber: \${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
|
|
||||||
# Those data TTL settings will override the same settings in core module.
|
|
||||||
recordDataTTL: \${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
|
|
||||||
otherMetricsDataTTL: \${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
|
|
||||||
monthMetricsDataTTL: \${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
|
|
||||||
# Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
|
|
||||||
bulkActions: \${SW_STORAGE_ES_BULK_ACTIONS:2000} # Execute the bulk every 2000 requests
|
|
||||||
bulkSize: \${SW_STORAGE_ES_BULK_SIZE:20} # flush the bulk every 20mb
|
|
||||||
flushInterval: \${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
|
|
||||||
concurrentRequests: \${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
|
|
||||||
resultWindowMaxSize: \${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
|
|
||||||
metadataQueryMaxSize: \${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
|
|
||||||
segmentQueryMaxSize: \${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
|
|
||||||
profileTaskQueryMaxSize: \${SW_STORAGE_ES_QUERY_PROFILE_TASK_SIZE:200}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateStorageH2() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
storage:
|
|
||||||
h2:
|
|
||||||
driver: \${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
|
|
||||||
url: \${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
|
|
||||||
user: \${SW_STORAGE_H2_USER:sa}
|
|
||||||
metadataQueryMaxSize: \${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateStorageMySQL() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
storage:
|
|
||||||
mysql:
|
|
||||||
properties:
|
|
||||||
jdbcUrl: \${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
|
|
||||||
dataSource.user: \${SW_DATA_SOURCE_USER:root}
|
|
||||||
dataSource.password: \${SW_DATA_SOURCE_PASSWORD:root@1234}
|
|
||||||
dataSource.cachePrepStmts: \${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
|
|
||||||
dataSource.prepStmtCacheSize: \${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
|
|
||||||
dataSource.prepStmtCacheSqlLimit: \${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
|
||||||
dataSource.useServerPrepStmts: \${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
|
|
||||||
metadataQueryMaxSize: \${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateStorageInfluxDB() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
storage:
|
|
||||||
influx:
|
|
||||||
# Metadata storage provider configuration
|
|
||||||
metabaseType: \${SW_STORAGE_METABASE_TYPE:H2} # There are 2 options as Metabase provider, H2 or MySQL.
|
|
||||||
h2Props:
|
|
||||||
dataSourceClassName: \${SW_STORAGE_METABASE_DRIVER:org.h2.jdbcx.JdbcDataSource}
|
|
||||||
dataSource.url: \${SW_STORAGE_METABASE_URL:jdbc:h2:mem:skywalking-oap-db}
|
|
||||||
dataSource.user: \${SW_STORAGE_METABASE_USER:sa}
|
|
||||||
dataSource.password: \${SW_STORAGE_METABASE_PASSWORD:}
|
|
||||||
mysqlProps:
|
|
||||||
jdbcUrl: \${SW_STORAGE_METABASE_URL:"jdbc:mysql://localhost:3306/swtest"}
|
|
||||||
dataSource.user: \${SW_STORAGE_METABASE_USER:root}
|
|
||||||
dataSource.password: \${SW_STORAGE_METABASE_PASSWORD:root@1234}
|
|
||||||
dataSource.cachePrepStmts: \${SW_STORAGE_METABASE_CACHE_PREP_STMTS:true}
|
|
||||||
dataSource.prepStmtCacheSize: \${SW_STORAGE_METABASE_PREP_STMT_CACHE_SQL_SIZE:250}
|
|
||||||
dataSource.prepStmtCacheSqlLimit: \${SW_STORAGE_METABASE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
|
||||||
dataSource.useServerPrepStmts: \${SW_STORAGE_METABASE_USE_SERVER_PREP_STMTS:true}
|
|
||||||
metadataQueryMaxSize: \${SW_STORAGE_METABASE_QUERY_MAX_SIZE:5000}
|
|
||||||
# InfluxDB configuration
|
|
||||||
url: \${SW_STORAGE_INFLUXDB_URL:http://localhost:8086}
|
|
||||||
user: \${SW_STORAGE_INFLUXDB_USER:root}
|
|
||||||
password: \${SW_STORAGE_INFLUXDB_PASSWORD:}
|
|
||||||
database: \${SW_STORAGE_INFLUXDB_DATABASE:skywalking}
|
|
||||||
actions: \${SW_STORAGE_INFLUXDB_ACTIONS:1000} # the number of actions to collect
|
|
||||||
duration: \${SW_STORAGE_INFLUXDB_DURATION:1000} # the time to wait at most (milliseconds)
|
|
||||||
fetchTaskLogMaxSize: \${SW_STORAGE_INFLUXDB_FETCH_TASK_LOG_MAX_SIZE:5000} # the max number of fetch task log in a request
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateConfigurationNone() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
configuration:
|
|
||||||
none:
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateConfigurationApollo() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
configuration:
|
|
||||||
apollo:
|
|
||||||
apolloMeta: \${SW_CONFIGURATION_APOLLO_META:http://apollo:8080}
|
|
||||||
apolloCluster: \${SW_CONFIGURATION_APOLLO_CLUSTER:default}
|
|
||||||
apolloEnv: \${SW_CONFIGURATION_APOLLO_ENV:""}
|
|
||||||
appId: \${SW_CONFIGURATION_APOLLO_APP_ID:skywalking}
|
|
||||||
period: \${SW_CONFIGURATION_APOLLO_PERIOD:5}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateConfigurationNacos() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
configuration:
|
|
||||||
nacos:
|
|
||||||
# Nacos Server Host
|
|
||||||
serverAddr: \${SW_CONFIGURATION_NACOS_SERVER_ADDR:nacos}
|
|
||||||
# Nacos Server Port
|
|
||||||
port: \${SW_CONFIGURATION_NACOS_PORT:8848}
|
|
||||||
# Nacos Configuration Group
|
|
||||||
group: \${SW_CONFIGURATION_NACOS_GROUP:skywalking}
|
|
||||||
# Nacos Configuration namespace
|
|
||||||
namespace: \${SW_CONFIGURATION_NACOS_NAMESPACE:""}
|
|
||||||
# Unit seconds, sync period. Default fetch every 60 seconds.
|
|
||||||
period : \${SW_CONFIGURATION_NACOS_PERIOD:5}
|
|
||||||
# the name of current cluster, set the name if you want to upstream system known.
|
|
||||||
clusterName: \${SW_CONFIGURATION_NACOS_CLUSTER_NAME:default}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateConfigurationZookeeper() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
configuration:
|
|
||||||
zookeeper:
|
|
||||||
period: \${SW_CONFIGURATION_ZOOKEEPER_PERIOD:60} # Unit seconds, sync period. Default fetch every 60 seconds.
|
|
||||||
nameSpace: \${SW_CONFIGURATION_ZOOKEEPER_NAMESPACE:/default}
|
|
||||||
hostPort: \${SW_CONFIGURATION_ZOOKEEPER_HOST_PATH:localhost:2181}
|
|
||||||
#Retry Policy
|
|
||||||
baseSleepTimeMs: \${SW_CONFIGURATION_ZOOKEEPER_BASE_SLEEP_TIME_MS:1000} # initial amount of time to wait between retries
|
|
||||||
maxRetries: \${SW_CONFIGURATION_ZOOKEEPER_MAX_RETRIES:3}3 # max number of times to retry
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateConfigurationGRPC() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
configuration:
|
|
||||||
grpc:
|
|
||||||
host: \${SW_CONFIGURATION_GRPC_HOST:127.0.0.1}
|
|
||||||
port: \${SW_CONFIGURATION_GRPC_PORT:9555}
|
|
||||||
period: \${SW_CONFIGURATION_GRPC_PERIOD:60}
|
|
||||||
clusterName: \${SW_CONFIGURATION_GRPC_CLUSTER_NAME:"default"}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateConfigurationConsul() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
configuration:
|
|
||||||
consul:
|
|
||||||
# Consul host and ports, separated by comma, e.g. 1.2.3.4:8500,2.3.4.5:8500
|
|
||||||
hostAndPorts: \${SW_CONFIGURATION_CONSUL_ADDRESS:127.0.0.1:8500}
|
|
||||||
# Sync period in seconds. Defaults to 60 seconds.
|
|
||||||
period: \${SW_CONFIGURATION_CONSUL_PERIOD:60}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateTelemetryNone() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
telemetry:
|
|
||||||
none:
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateTelemetryPrometheus() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
telemetry:
|
|
||||||
prometheus:
|
|
||||||
host: \${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}
|
|
||||||
port: \${SW_TELEMETRY_PROMETHEUS_PORT:1234}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
generateTelemetrySo11y() {
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
telemetry:
|
|
||||||
so11y:
|
|
||||||
prometheusExporterEnabled: \${SW_TELEMETRY_SO11Y_PROMETHEUS_ENABLED:true}
|
|
||||||
prometheusExporterHost: \${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}
|
|
||||||
prometheusExporterPort: \${SW_TELEMETRY_PROMETHEUS_PORT:1234}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
validateVariables() {
|
|
||||||
name=$1; value=$2; list=$3
|
|
||||||
valid=false
|
|
||||||
for c in ${list} ; do
|
|
||||||
if [[ "$c" = "$value" ]]; then
|
|
||||||
valid=true
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if ! ${valid}; then
|
|
||||||
echo "Error: $name=$value please specify $name = $list"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
generateApplicationYaml() {
|
|
||||||
# validate
|
|
||||||
[[ -z "$SW_CLUSTER" ]] && [[ -z "$SW_STORAGE" ]] && [[ -z "$SW_CONFIGURATION" ]] \
|
|
||||||
&& [[ -z "$SW_TELEMETRY" ]] \
|
|
||||||
&& { echo "Error: please specify \"SW_CLUSTER\" \"SW_STORAGE\" \"SW_CONFIGURATION\" \"SW_TELEMETRY\""; exit 1; }
|
|
||||||
|
|
||||||
validateVariables "SW_CLUSTER" "$SW_CLUSTER" "standalone zookeeper kubernetes consul etcd nacos"
|
|
||||||
|
|
||||||
validateVariables "SW_STORAGE" "$SW_STORAGE" "elasticsearch h2 mysql influxdb"
|
|
||||||
|
|
||||||
validateVariables "SW_CONFIGURATION" "$SW_CONFIGURATION" "none apollo nacos zookeeper"
|
|
||||||
|
|
||||||
validateVariables "SW_TELEMETRY" "$SW_TELEMETRY" "none prometheus so11y"
|
|
||||||
|
|
||||||
echo "# Generated by 'docker-entrypoint.sh'" > ${var_application_file}
|
|
||||||
#generate cluster
|
|
||||||
case ${SW_CLUSTER} in
|
|
||||||
standalone) generateClusterStandalone;;
|
|
||||||
zookeeper) generateClusterZookeeper;;
|
|
||||||
kubernetes) generateClusterK8s;;
|
|
||||||
consul) generateClusterConsul;;
|
|
||||||
etcd) generateClusterEtcd;;
|
|
||||||
nacos) generateClusterNacos;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
#generate core
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
core:
|
|
||||||
default:
|
|
||||||
# Mixed: Receive agent data, Level 1 aggregate, Level 2 aggregate
|
|
||||||
# Receiver: Receive agent data, Level 1 aggregate
|
|
||||||
# Aggregator: Level 2 aggregate
|
|
||||||
role: \${SW_CORE_ROLE:Mixed} # Mixed/Receiver/Aggregator
|
|
||||||
restHost: \${SW_CORE_REST_HOST:0.0.0.0}
|
|
||||||
restPort: \${SW_CORE_REST_PORT:12800}
|
|
||||||
restContextPath: \${SW_CORE_REST_CONTEXT_PATH:/}
|
|
||||||
gRPCHost: \${SW_CORE_GRPC_HOST:0.0.0.0}
|
|
||||||
gRPCPort: \${SW_CORE_GRPC_PORT:11800}
|
|
||||||
gRPCSslEnabled: \${SW_CORE_GRPC_SSL_ENABLED:false}
|
|
||||||
gRPCSslKeyPath: \${SW_CORE_GRPC_SSL_KEY_PATH:""}
|
|
||||||
gRPCSslCertChainPath: \${SW_CORE_GRPC_SSL_CERT_CHAIN_PATH:""}
|
|
||||||
gRPCSslTrustedCAPath: \${SW_CORE_GRPC_SSL_TRUSTED_CA_PATH:""}
|
|
||||||
downsampling:
|
|
||||||
- Hour
|
|
||||||
- Day
|
|
||||||
- Month
|
|
||||||
# Set a timeout on metrics data. After the timeout has expired, the metrics data will automatically be deleted.
|
|
||||||
enableDataKeeperExecutor: \${SW_CORE_ENABLE_DATA_KEEPER_EXECUTOR:true} # Turn it off then automatically metrics data delete will be close.
|
|
||||||
dataKeeperExecutePeriod: \${SW_CORE_DATA_KEEPER_EXECUTE_PERIOD:5} # How often the data keeper executor runs periodically, unit is minute
|
|
||||||
recordDataTTL: \${SW_CORE_RECORD_DATA_TTL:90} # Unit is minute
|
|
||||||
minuteMetricsDataTTL: \${SW_CORE_MINUTE_METRIC_DATA_TTL:90} # Unit is minute
|
|
||||||
hourMetricsDataTTL: \${SW_CORE_HOUR_METRIC_DATA_TTL:36} # Unit is hour
|
|
||||||
dayMetricsDataTTL: \${SW_CORE_DAY_METRIC_DATA_TTL:45} # Unit is day
|
|
||||||
monthMetricsDataTTL: \${SW_CORE_MONTH_METRIC_DATA_TTL:18} # Unit is month
|
|
||||||
# Cache metric data for 1 minute to reduce database queries, and if the OAP cluster changes within that minute,
|
|
||||||
# the metrics may not be accurate within that minute.
|
|
||||||
enableDatabaseSession: \${SW_CORE_ENABLE_DATABASE_SESSION:true}
|
|
||||||
topNReportPeriod: \${SW_CORE_TOPN_REPORT_PERIOD:10}
|
|
||||||
EOT
|
|
||||||
|
|
||||||
# generate storage
|
|
||||||
case ${SW_STORAGE} in
|
|
||||||
elasticsearch) generateStorageElastisearch;;
|
|
||||||
h2) generateStorageH2;;
|
|
||||||
mysql) generateStorageMySQL;;
|
|
||||||
influxdb) generateStorageInfluxDB;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
receiver-sharing-server:
|
|
||||||
default:
|
|
||||||
restHost: \${SW_RECEIVER_SHARING_REST_HOST:0.0.0.0}
|
|
||||||
restPort: \${SW_RECEIVER_SHARING_REST_PORT:0}
|
|
||||||
restContextPath: \${SW_RECEIVER_SHARING_REST_CONTEXT_PATH:/}
|
|
||||||
gRPCHost: \${SW_RECEIVER_SHARING_GRPC_HOST:0.0.0.0}
|
|
||||||
gRPCPort: \${SW_RECEIVER_SHARING_GRPC_PORT:0}
|
|
||||||
maxConcurrentCallsPerConnection: \${SW_RECEIVER_SHARING_MAX_CONCURRENT_CALL:0}
|
|
||||||
maxMessageSize: \${SW_RECEIVER_SHARING_MAX_MESSAGE_SIZE:0}
|
|
||||||
gRPCThreadPoolSize: \${SW_RECEIVER_SHARING_GRPC_THREAD_POOL_SIZE:0}
|
|
||||||
gRPCThreadPoolQueueSize: \${SW_RECEIVER_SHARING_GRPC_THREAD_POOL_QUEUE_SIZE:0}
|
|
||||||
authentication: \${SW_AUTHENTICATION:""}
|
|
||||||
gRPCSslEnabled: \${SW_RECEIVER_SHARING_GRPC_SSL_ENABLED:false}
|
|
||||||
gRPCSslKeyPath: \${SW_RECEIVER_SHARING_GRPC_SSL_KEY_PATH:""}
|
|
||||||
gRPCSslCertChainPath: \${SW_RECEIVER_SHARING_GRPC_SSL_CERT_CHAIN_PATH:""}
|
|
||||||
receiver-register:
|
|
||||||
default:
|
|
||||||
receiver-trace:
|
|
||||||
default:
|
|
||||||
bufferPath: \${SW_RECEIVER_BUFFER_PATH:../trace-buffer/} # Path to trace buffer files, suggest to use absolute path
|
|
||||||
bufferOffsetMaxFileSize: \${SW_RECEIVER_BUFFER_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
|
|
||||||
bufferDataMaxFileSize: \${SW_RECEIVER_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
|
|
||||||
bufferFileCleanWhenRestart: \${SW_RECEIVER_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
|
|
||||||
sampleRate: \${SW_TRACE_SAMPLE_RATE:10000} # The sample rate precision is 1/10000. 10000 means 100% sample in default.
|
|
||||||
slowDBAccessThreshold: \${SW_SLOW_DB_THRESHOLD:default:200,mongodb:100} # The slow database access thresholds. Unit ms.
|
|
||||||
receiver-jvm:
|
|
||||||
default:
|
|
||||||
receiver-clr:
|
|
||||||
default:
|
|
||||||
receiver-profile:
|
|
||||||
default:
|
|
||||||
service-mesh:
|
|
||||||
default:
|
|
||||||
bufferPath: \${SW_SERVICE_MESH_BUFFER_PATH:../mesh-buffer/} # Path to trace buffer files, suggest to use absolute path
|
|
||||||
bufferOffsetMaxFileSize: \${SW_SERVICE_MESH_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
|
|
||||||
bufferDataMaxFileSize: \${SW_SERVICE_MESH_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
|
|
||||||
bufferFileCleanWhenRestart: \${SW_SERVICE_MESH_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
|
|
||||||
istio-telemetry:
|
|
||||||
default:
|
|
||||||
query:
|
|
||||||
graphql:
|
|
||||||
path: \${SW_QUERY_GRAPHQL_PATH:/graphql}
|
|
||||||
alarm:
|
|
||||||
default:
|
|
||||||
EOT
|
|
||||||
# generate telemetry
|
|
||||||
case ${SW_TELEMETRY} in
|
|
||||||
none) generateTelemetryNone;;
|
|
||||||
prometheus) generateTelemetryPrometheus;;
|
|
||||||
so11y) generateTelemetrySo11y;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# generate configuration
|
|
||||||
case ${SW_CONFIGURATION} in
|
|
||||||
none) generateConfigurationNone;;
|
|
||||||
apollo) generateConfigurationApollo;;
|
|
||||||
nacos) generateConfigurationNacos;;
|
|
||||||
zookeeper) generateConfigurationZookeeper;;
|
|
||||||
consul) generateConfigurationConsul;;
|
|
||||||
grpc) generateConfigurationGRPC;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
envoy-metric:
|
|
||||||
default:
|
|
||||||
EOT
|
|
||||||
if [[ "$SW_ENVOY_ALS_ENABLED" = "true" ]]; then
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
alsHTTPAnalysis: \${SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS:k8s-mesh}
|
|
||||||
EOT
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$SW_RECEIVER_ZIPKIN_ENABLED" = "true" ]]; then
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
receiver_zipkin:
|
|
||||||
default:
|
|
||||||
host: \${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0}
|
|
||||||
port: \${SW_RECEIVER_ZIPKIN_PORT:9411}
|
|
||||||
contextPath: \${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/}
|
|
||||||
EOT
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$SW_RECEIVER_JAEGER_ENABLED" = "true" ]]; then
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
receiver_jaeger:
|
|
||||||
default:
|
|
||||||
gRPCHost: \${SW_RECEIVER_JAEGER_HOST:0.0.0.0}
|
|
||||||
gRPCPort: \${SW_RECEIVER_JAEGER_PORT:14250}
|
|
||||||
EOT
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$SW_TELEMETRY" = "so11y" ]]; then
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
receiver-so11y:
|
|
||||||
default:
|
|
||||||
EOT
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$SW_EXPORTER_ENABLED" = "true" ]]; then
|
|
||||||
cat <<EOT >> ${var_application_file}
|
|
||||||
exporter:
|
|
||||||
grpc:
|
|
||||||
targetHost: \${SW_EXPORTER_GRPC_HOST:127.0.0.1}
|
|
||||||
targetPort: \${SW_EXPORTER_GRPC_PORT:9870}
|
|
||||||
EOT
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "[Entrypoint] Apache SkyWalking Docker Image"
|
echo "[Entrypoint] Apache SkyWalking Docker Image"
|
||||||
|
|
||||||
SW_CLUSTER=${SW_CLUSTER:-standalone}
|
if [[ "$SW_TELEMETRY" = "so11y" ]]; then
|
||||||
SW_STORAGE=${SW_STORAGE:-h2}
|
export SW_RECEIVER_SO11Y=default
|
||||||
SW_CONFIGURATION=${SW_CONFIGURATION:-none}
|
echo "Set SW_RECEIVER_SO11Y to ${SW_RECEIVER_SO11Y}"
|
||||||
SW_TELEMETRY=${SW_TELEMETRY:-none}
|
fi
|
||||||
|
|
||||||
EXT_LIB_DIR=/skywalking/ext-libs
|
EXT_LIB_DIR=/skywalking/ext-libs
|
||||||
EXT_CONFIG_DIR=/skywalking/ext-config
|
EXT_CONFIG_DIR=/skywalking/ext-config
|
||||||
|
|
||||||
# If user wants to override application.yml, the one generated by docker-entrypoint.sh should be ignored.
|
|
||||||
[[ -f ${EXT_CONFIG_DIR}/application.yml ]] && SW_L0AD_CONFIG_FILE_FROM_VOLUME=true
|
|
||||||
|
|
||||||
# Override configuration files
|
# Override configuration files
|
||||||
cp -vfR ${EXT_CONFIG_DIR}/ config/
|
cp -vfR ${EXT_CONFIG_DIR}/ config/
|
||||||
if [[ -z "$SW_L0AD_CONFIG_FILE_FROM_VOLUME" ]] || [[ "$SW_L0AD_CONFIG_FILE_FROM_VOLUME" != "true" ]]; then
|
|
||||||
generateApplicationYaml
|
|
||||||
echo "Generated application.yml"
|
|
||||||
echo "-------------------------"
|
|
||||||
cat ${var_application_file}
|
|
||||||
echo "-------------------------"
|
|
||||||
fi
|
|
||||||
|
|
||||||
CLASSPATH="config:$CLASSPATH"
|
CLASSPATH="config:$CLASSPATH"
|
||||||
for i in oap-libs/*.jar
|
for i in oap-libs/*.jar
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
# Cluster Management
|
# Cluster Management
|
||||||
In many product environments, backend need to support high throughputs and provide HA to keep robustness,
|
In many product environments, backend needs to support high throughput and provides HA to keep robustness,
|
||||||
so you should need cluster management always in product env.
|
so you should need cluster management always in product env.
|
||||||
|
|
||||||
Backend provides several ways to do cluster management. Choose the one you need/want.
|
Backend provides several ways to do cluster management. Choose the one you need/want.
|
||||||
|
|
@ -12,24 +12,18 @@ by using k8s native APIs to manage cluster.
|
||||||
- [Nacos](#nacos). Use Nacos to coordinate backend instances.
|
- [Nacos](#nacos). Use Nacos to coordinate backend instances.
|
||||||
- [Etcd](#etcd). Use Etcd to coordinate backend instances.
|
- [Etcd](#etcd). Use Etcd to coordinate backend instances.
|
||||||
|
|
||||||
|
In the `application.yml`, there're default configurations for the aforementioned coordinators under the section `cluster`,
|
||||||
|
you can specify one of them in the `selector` property to enable it.
|
||||||
|
|
||||||
## Zookeeper coordinator
|
## Zookeeper coordinator
|
||||||
Zookeeper is a very common and wide used cluster coordinator. Set the **cluster** module's implementor
|
Zookeeper is a very common and wide used cluster coordinator. Set the **cluster/selector** to **zookeeper** in the yml to enable.
|
||||||
to **zookeeper** in the yml to active.
|
|
||||||
|
|
||||||
Required Zookeeper version, 3.4+
|
Required Zookeeper version, 3.4+
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
cluster:
|
cluster:
|
||||||
zookeeper:
|
selector: ${SW_CLUSTER:zookeeper}
|
||||||
nameSpace: ${SW_NAMESPACE:""}
|
# other configurations
|
||||||
hostPort: ${SW_CLUSTER_ZK_HOST_PORT:localhost:2181}
|
|
||||||
# Retry Policy
|
|
||||||
baseSleepTimeMs: 1000 # initial amount of time to wait between retries
|
|
||||||
maxRetries: 3 # max number of times to retry
|
|
||||||
# Enable ACL
|
|
||||||
enableACL: ${SW_ZK_ENABLE_ACL:false} # disable ACL in default
|
|
||||||
schema: ${SW_ZK_SCHEMA:digest} # only support digest schema
|
|
||||||
expression: ${SW_ZK_EXPRESSION:skywalking:skywalking}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
- `hostPort` is the list of zookeeper servers. Format is `IP1:PORT1,IP2:PORT2,...,IPn:PORTn`
|
- `hostPort` is the list of zookeeper servers. Format is `IP1:PORT1,IP2:PORT2,...,IPn:PORTn`
|
||||||
|
|
@ -65,30 +59,22 @@ zookeeper:
|
||||||
|
|
||||||
## Kubernetes
|
## Kubernetes
|
||||||
Require backend cluster are deployed inside kubernetes, guides are in [Deploy in kubernetes](backend-k8s.md).
|
Require backend cluster are deployed inside kubernetes, guides are in [Deploy in kubernetes](backend-k8s.md).
|
||||||
Set implementor to `kubernetes`.
|
Set the selector to `kubernetes`.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
cluster:
|
cluster:
|
||||||
kubernetes:
|
selector: ${SW_CLUSTER:kubernetes}
|
||||||
watchTimeoutSeconds: 60
|
# other configurations
|
||||||
namespace: default
|
|
||||||
labelSelector: app=collector,release=skywalking
|
|
||||||
uidEnvName: SKYWALKING_COLLECTOR_UID
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Consul
|
## Consul
|
||||||
Now, consul is becoming a famous system, many of companies and developers using consul to be
|
Now, consul is becoming a famous system, many of companies and developers using consul to be
|
||||||
their service discovery solution. Set the **cluster** module's implementor to **consul** in
|
their service discovery solution. Set the **cluster/selector** to **nacos** in the yml to enable.
|
||||||
the yml to active.
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
cluster:
|
cluster:
|
||||||
consul:
|
selector: ${SW_CLUSTER:consul}
|
||||||
serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
# other configurations
|
||||||
# Consul cluster agents, example, 1. client agent, 127.0.0.1:8500 2. server agent, 10.0.0.1:8500,10.0.0.2:8500,10.0.0.3:8500
|
|
||||||
hostPort: ${SW_CLUSTER_CONSUL_HOST_PORT:localhost:8500}
|
|
||||||
# aclToken of connection consul (optional)
|
|
||||||
aclToken: ${SW_CLUSTER_CONSUL_ACLTOKEN}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Same as Zookeeper coordinator,
|
Same as Zookeeper coordinator,
|
||||||
|
|
@ -99,27 +85,19 @@ The following setting are provided to set the host and port manually, based on y
|
||||||
|
|
||||||
|
|
||||||
## Nacos
|
## Nacos
|
||||||
Set the **cluster** module's implementor to **nacos** in
|
Set the **cluster/selector** to **nacos** in the yml to enable.
|
||||||
the yml to active.
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
cluster:
|
cluster:
|
||||||
nacos:
|
selector: ${SW_CLUSTER:nacos}
|
||||||
serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
# other configurations
|
||||||
# Nacos cluster nodes, example: 10.0.0.1:8848,10.0.0.2:8848,10.0.0.3:8848
|
|
||||||
hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:localhost:8848}
|
|
||||||
# Nacos Configuration namespace
|
|
||||||
namespace: ${SW_CLUSTER_NACOS_NAMESPACE:"public"}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Etcd
|
## Etcd
|
||||||
Set the **cluster** module's implementor to **etcd** in
|
Set the **cluster/selector** to **etcd** in the yml to enable.
|
||||||
the yml to active.
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
cluster:
|
cluster:
|
||||||
etcd:
|
selector: ${SW_CLUSTER:etcd}
|
||||||
serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
# other configurations
|
||||||
#etcd cluster nodes, example: 10.0.0.1:2379,10.0.0.2:2379,10.0.0.3:2379
|
|
||||||
hostPort: ${SW_CLUSTER_ETCD_HOST_PORT:localhost:2379}
|
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -14,26 +14,43 @@ End user can switch or assemble the collector features by their own requirements
|
||||||
|
|
||||||
So, in `application.yml`, there are three levels.
|
So, in `application.yml`, there are three levels.
|
||||||
1. **Level 1**, module name. Meaning this module is active in running mode.
|
1. **Level 1**, module name. Meaning this module is active in running mode.
|
||||||
1. **Level 2**, provider name. Set the provider of the module.
|
1. **Level 2**, provider option list and provider selector. Available providers are listed here with a selector to indicate which one will actually take effect,
|
||||||
|
if there is only one provider listed, the `selector` is optional and can be omitted.
|
||||||
1. **Level 3**. settings of the provider.
|
1. **Level 3**. settings of the provider.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
core:
|
storage:
|
||||||
default:
|
selector: mysql # the mysql storage will actually be activated, while the h2 storage takes no effect
|
||||||
restHost: 0.0.0.0
|
h2:
|
||||||
restPort: 12800
|
driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
|
||||||
restContextPath: /
|
url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
|
||||||
gRPCHost: 0.0.0.0
|
user: ${SW_STORAGE_H2_USER:sa}
|
||||||
gRPCPort: 11800
|
metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
|
||||||
|
mysql:
|
||||||
|
properties:
|
||||||
|
jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
|
||||||
|
dataSource.user: ${SW_DATA_SOURCE_USER:root}
|
||||||
|
dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root@1234}
|
||||||
|
dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
|
||||||
|
dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
|
||||||
|
dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
||||||
|
dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
|
||||||
|
metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
|
||||||
|
# other configurations
|
||||||
```
|
```
|
||||||
1. **core** is the module.
|
|
||||||
1. **default** is the default implementor of core module.
|
1. **`core`** is the module.
|
||||||
1. `restHost`, `restPort`, ... `gRPCHost` are all setting items of the implementor.
|
1. **`selector`** selects one out of the all providers listed below, the unselected ones take no effect as if they were deleted.
|
||||||
|
1. **`default`** is the default implementor of core module.
|
||||||
|
1. `driver`, `url`, ... `metadataQueryMaxSize` are all setting items of the implementor.
|
||||||
|
|
||||||
At the same time, modules includes required and optional, the required modules provide the skeleton of backend,
|
At the same time, modules includes required and optional, the required modules provide the skeleton of backend,
|
||||||
even modularization supported pluggable, remove those modules are meaningless. We highly recommend you don't try to
|
even modularization supported pluggable, removing those modules are meaningless, for optional modules, some of them have
|
||||||
change APIs of those modules, unless you understand SkyWalking project and its codes very well.
|
a provider implementation called `none`, meaning it only provides a shell with no actual logic, typically such as telemetry.
|
||||||
|
Setting `-` to the `selector` means this whole module will be excluded at runtime.
|
||||||
|
We highly recommend you don't try to change APIs of those modules, unless you understand SkyWalking project and its codes very well.
|
||||||
|
|
||||||
List the required modules here
|
List the required modules here
|
||||||
1. **Core**. Do basic and major skeleton of all data analysis and stream dispatch.
|
1. **Core**. Do basic and major skeleton of all data analysis and stream dispatch.
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
# Backend storage
|
# Backend storage
|
||||||
SkyWalking storage is pluggable, we have provided the following storage solutions, you could easily
|
SkyWalking storage is pluggable, we have provided the following storage solutions, you could easily
|
||||||
use is by changing the `application.yml`
|
use one of them by specifying it as the `selector` in the `application.yml`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
storage:
|
||||||
|
selector: ${SW_STORAGE:elasticsearch7}
|
||||||
|
```
|
||||||
|
|
||||||
Native supported storage
|
Native supported storage
|
||||||
- H2
|
- H2
|
||||||
|
|
@ -21,6 +26,7 @@ you could set the target to H2 in **Embedded**, **Server** and **Mixed** modes.
|
||||||
Setting fragment example
|
Setting fragment example
|
||||||
```yaml
|
```yaml
|
||||||
storage:
|
storage:
|
||||||
|
selector: ${SW_STORAGE:h2}
|
||||||
h2:
|
h2:
|
||||||
driver: org.h2.jdbcx.JdbcDataSource
|
driver: org.h2.jdbcx.JdbcDataSource
|
||||||
url: jdbc:h2:mem:skywalking-oap-db
|
url: jdbc:h2:mem:skywalking-oap-db
|
||||||
|
|
@ -40,6 +46,7 @@ For now, ElasticSearch 6 and ElasticSearch 7 share the same configurations, as f
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
storage:
|
storage:
|
||||||
|
selector: ${SW_STORAGE:elasticsearch}
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
# nameSpace: ${SW_NAMESPACE:""}
|
# nameSpace: ${SW_NAMESPACE:""}
|
||||||
# user: ${SW_ES_USER:""} # User needs to be set when Http Basic authentication is enabled
|
# user: ${SW_ES_USER:""} # User needs to be set when Http Basic authentication is enabled
|
||||||
|
|
@ -86,6 +93,7 @@ example:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
storage:
|
storage:
|
||||||
|
selector: ${SW_STORAGE:elasticsearch}
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
# nameSpace: ${SW_NAMESPACE:""}
|
# nameSpace: ${SW_NAMESPACE:""}
|
||||||
user: ${SW_ES_USER:""} # User needs to be set when Http Basic authentication is enabled
|
user: ${SW_ES_USER:""} # User needs to be set when Http Basic authentication is enabled
|
||||||
|
|
@ -173,6 +181,7 @@ This implementation shares most of `elasticsearch`, just extend to support zipki
|
||||||
It has all same configs.
|
It has all same configs.
|
||||||
```yaml
|
```yaml
|
||||||
storage:
|
storage:
|
||||||
|
selector: ${SW_STORAGE:zipkin-elasticsearch}
|
||||||
zipkin-elasticsearch:
|
zipkin-elasticsearch:
|
||||||
nameSpace: ${SW_NAMESPACE:""}
|
nameSpace: ${SW_NAMESPACE:""}
|
||||||
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
|
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
|
||||||
|
|
@ -197,6 +206,7 @@ This implementation shares most of `elasticsearch`, just extend to support zipki
|
||||||
It has all same configs.
|
It has all same configs.
|
||||||
```yaml
|
```yaml
|
||||||
storage:
|
storage:
|
||||||
|
selector: ${SW_STORAGE:jaeger-elasticsearch}
|
||||||
jaeger-elasticsearch:
|
jaeger-elasticsearch:
|
||||||
nameSpace: ${SW_NAMESPACE:""}
|
nameSpace: ${SW_NAMESPACE:""}
|
||||||
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
|
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
|
||||||
|
|
@ -233,6 +243,7 @@ Please download MySQL driver by yourself. Copy the connection driver jar to `oap
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
storage:
|
storage:
|
||||||
|
selector: ${SW_STORAGE:mysql}
|
||||||
mysql:
|
mysql:
|
||||||
properties:
|
properties:
|
||||||
jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
|
jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
|
||||||
|
|
@ -253,6 +264,7 @@ Active TiDB as storage, set storage provider to **mysql**.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
storage:
|
storage:
|
||||||
|
selector: ${SW_STORAGE:mysql}
|
||||||
mysql:
|
mysql:
|
||||||
properties:
|
properties:
|
||||||
jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
|
jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
|
||||||
|
|
@ -272,7 +284,8 @@ InfluxDB as storage since SkyWalking 7.0. It depends on `H2/MySQL` storage-plugi
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
storage:
|
storage:
|
||||||
influx:
|
selector: ${SW_STORAGE:influxdb}
|
||||||
|
influxdb:
|
||||||
# Metadata storage provider configuration
|
# Metadata storage provider configuration
|
||||||
metabaseType: ${SW_STORAGE_METABASE_TYPE:H2} # There are 2 options as Metabase provider, H2 or MySQL.
|
metabaseType: ${SW_STORAGE_METABASE_TYPE:H2} # There are 2 options as Metabase provider, H2 or MySQL.
|
||||||
h2Props:
|
h2Props:
|
||||||
|
|
|
||||||
|
|
@ -1,23 +1,36 @@
|
||||||
# Telemetry for backend
|
# Telemetry for backend
|
||||||
In default, the telemetry is off, like this
|
By default, the telemetry is disabled by setting `selector` to `none`, like this
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
telemetry:
|
telemetry:
|
||||||
|
selector: ${SW_TELEMETRY:none}
|
||||||
none:
|
none:
|
||||||
|
prometheus:
|
||||||
|
host: ${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}
|
||||||
|
port: ${SW_TELEMETRY_PROMETHEUS_PORT:1234}
|
||||||
|
so11y:
|
||||||
|
prometheusExporterEnabled: ${SW_TELEMETRY_SO11Y_PROMETHEUS_ENABLED:true}
|
||||||
|
prometheusExporterHost: ${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}
|
||||||
|
prometheusExporterPort: ${SW_TELEMETRY_PROMETHEUS_PORT:1234}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
but you can set one of `prometheus` or `so11y` to enable them, for more information, refer to the details below.
|
||||||
|
|
||||||
## Prometheus
|
## Prometheus
|
||||||
Prometheus is supported as telemetry implementor.
|
Prometheus is supported as telemetry implementor.
|
||||||
By using this, prometheus collects metrics from skywalking backend.
|
By using this, prometheus collects metrics from SkyWalking backend.
|
||||||
|
|
||||||
Set `prometheus` to provider. The endpoint open at `http://0.0.0.0:1234/` and `http://0.0.0.0:1234/metrics`.
|
Set `prometheus` to provider. The endpoint open at `http://0.0.0.0:1234/` and `http://0.0.0.0:1234/metrics`.
|
||||||
```yaml
|
```yaml
|
||||||
telemetry:
|
telemetry:
|
||||||
|
selector: ${SW_TELEMETRY:prometheus}
|
||||||
prometheus:
|
prometheus:
|
||||||
```
|
```
|
||||||
|
|
||||||
Set host and port if needed.
|
Set host and port if needed.
|
||||||
```yaml
|
```yaml
|
||||||
telemetry:
|
telemetry:
|
||||||
|
selector: ${SW_TELEMETRY:prometheus}
|
||||||
prometheus:
|
prometheus:
|
||||||
host: 127.0.0.1
|
host: 127.0.0.1
|
||||||
port: 1543
|
port: 1543
|
||||||
|
|
@ -38,15 +51,18 @@ Adding following configuration to enable `so11y`(self-observability) related mod
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
receiver-so11y:
|
receiver-so11y:
|
||||||
|
selector: ${SW_RECEIVER_SO11Y:default}
|
||||||
default:
|
default:
|
||||||
telemetry:
|
telemetry:
|
||||||
so11y:
|
selector: ${SW_TELEMETRY:so11y}
|
||||||
|
# ... other configurations
|
||||||
```
|
```
|
||||||
|
|
||||||
Another example represents how to combine `promethues` and `so11y`. Adding some items in `so11y` to make it happen.
|
Another example represents how to combine `promethues` and `so11y`. Adding some items in `so11y` to make it happen.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
telemetry:
|
telemetry:
|
||||||
|
selector: ${SW_TELEMETRY:so11y}
|
||||||
so11y:
|
so11y:
|
||||||
prometheusExporterEnabled: true
|
prometheusExporterEnabled: true
|
||||||
prometheusExporterHost: 0.0.0.0
|
prometheusExporterHost: 0.0.0.0
|
||||||
|
|
|
||||||
|
|
@ -12,10 +12,18 @@ Right now, SkyWalking supports following dynamic configurations.
|
||||||
|core.default.apdexThreshold| The apdex threshold settings, will override `service-apdex-threshold.yml`. | same as [`service-apdex-threshold.yml`](apdex-threshold.md) |
|
|core.default.apdexThreshold| The apdex threshold settings, will override `service-apdex-threshold.yml`. | same as [`service-apdex-threshold.yml`](apdex-threshold.md) |
|
||||||
|
|
||||||
|
|
||||||
This feature depends on upstream service, so it is **OFF** as default.
|
This feature depends on upstream service, so it is **DISABLED** by default.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
configuration:
|
configuration:
|
||||||
|
selector: ${SW_CONFIGURATION:none}
|
||||||
none:
|
none:
|
||||||
|
apollo:
|
||||||
|
apolloMeta: http://106.12.25.204:8080
|
||||||
|
apolloCluster: default
|
||||||
|
appId: skywalking
|
||||||
|
period: 5
|
||||||
|
# ... other implementations
|
||||||
```
|
```
|
||||||
|
|
||||||
## Dynamic Configuration Service, DCS
|
## Dynamic Configuration Service, DCS
|
||||||
|
|
@ -25,13 +33,10 @@ The SkyWalking OAP fetches the configuration from the implementation(any system)
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
configuration:
|
configuration:
|
||||||
|
selector: ${SW_CONFIGURATION:grpc}
|
||||||
grpc:
|
grpc:
|
||||||
# Upstream system hostname
|
|
||||||
host: 127.0.0.1
|
host: 127.0.0.1
|
||||||
# Upstream system port
|
|
||||||
port: 9555
|
port: 9555
|
||||||
#period : 60 # Unit seconds, sync period. Default fetch every 60 seconds.
|
|
||||||
#clusterName: "default" # the name of current cluster, set the name if you want to upstream system known.
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Dynamic Configuration Apollo Implementation
|
## Dynamic Configuration Apollo Implementation
|
||||||
|
|
@ -40,10 +45,10 @@ configuration:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
configuration:
|
configuration:
|
||||||
|
selector: ${SW_CONFIGURATION:apollo}
|
||||||
apollo:
|
apollo:
|
||||||
apolloMeta: <your apollo meta address>
|
apolloMeta: <your apollo meta address>
|
||||||
apolloCluster: default
|
apolloCluster: default
|
||||||
# apolloEnv: # defaults to null
|
|
||||||
appId: skywalking
|
appId: skywalking
|
||||||
period: 5
|
period: 5
|
||||||
```
|
```
|
||||||
|
|
@ -54,19 +59,15 @@ configuration:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
configuration:
|
configuration:
|
||||||
|
selector: ${SW_CONFIGURATION:nacos}
|
||||||
nacos:
|
nacos:
|
||||||
# Nacos Server Host
|
|
||||||
serverAddr: 127.0.0.1
|
serverAddr: 127.0.0.1
|
||||||
# Nacos Server Port
|
|
||||||
port: 8848
|
port: 8848
|
||||||
# Nacos Configuration Group
|
|
||||||
group: 'skywalking'
|
group: 'skywalking'
|
||||||
# Nacos Configuration namespace
|
|
||||||
namespace: ''
|
namespace: ''
|
||||||
# Unit seconds, sync period. Default fetch every 60 seconds.
|
|
||||||
period : 60
|
period : 60
|
||||||
# the name of current cluster, set the name if you want to upstream system known.
|
|
||||||
clusterName: "default"
|
clusterName: "default"
|
||||||
|
# ... other configurations
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -76,13 +77,14 @@ configuration:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
configuration:
|
configuration:
|
||||||
|
selector: ${SW_CONFIGURATION:zookeeper}
|
||||||
zookeeper:
|
zookeeper:
|
||||||
period : 60 # Unit seconds, sync period. Default fetch every 60 seconds.
|
period : 60 # Unit seconds, sync period. Default fetch every 60 seconds.
|
||||||
nameSpace: /default
|
nameSpace: /default
|
||||||
hostPort: localhost:2181
|
hostPort: localhost:2181
|
||||||
#Retry Policy
|
|
||||||
baseSleepTimeMs: 1000 # initial amount of time to wait between retries
|
baseSleepTimeMs: 1000 # initial amount of time to wait between retries
|
||||||
maxRetries: 3 # max number of times to retry
|
maxRetries: 3 # max number of times to retry
|
||||||
|
# ... other configurations
|
||||||
```
|
```
|
||||||
|
|
||||||
## Dynamic Configuration Etcd Implementation
|
## Dynamic Configuration Etcd Implementation
|
||||||
|
|
@ -91,11 +93,13 @@ configuration:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
configuration:
|
configuration:
|
||||||
|
selector: ${SW_CONFIGURATION:etcd}
|
||||||
etcd:
|
etcd:
|
||||||
period : 60 # Unit seconds, sync period. Default fetch every 60 seconds.
|
period : 60 # Unit seconds, sync period. Default fetch every 60 seconds.
|
||||||
group : 'skywalking'
|
group : 'skywalking'
|
||||||
serverAddr: localhost:2379
|
serverAddr: localhost:2379
|
||||||
clusterName: "default"
|
clusterName: "default"
|
||||||
|
# ... other configurations
|
||||||
```
|
```
|
||||||
|
|
||||||
## Dynamic Configuration Consul Implementation
|
## Dynamic Configuration Consul Implementation
|
||||||
|
|
@ -104,6 +108,7 @@ configuration:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
configuration:
|
configuration:
|
||||||
|
selector: ${SW_CONFIGURATION:consul}
|
||||||
consul:
|
consul:
|
||||||
# Consul host and ports, separated by comma, e.g. 1.2.3.4:8500,2.3.4.5:8500
|
# Consul host and ports, separated by comma, e.g. 1.2.3.4:8500,2.3.4.5:8500
|
||||||
hostAndPorts: 127.0.0.1:8500
|
hostAndPorts: 127.0.0.1:8500
|
||||||
|
|
@ -111,6 +116,7 @@ configuration:
|
||||||
period: 60
|
period: 60
|
||||||
# aclToken of connection consul (optional)
|
# aclToken of connection consul (optional)
|
||||||
aclToken: ${consul.aclToken}
|
aclToken: ${consul.aclToken}
|
||||||
|
# ... other configurations
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,10 +20,13 @@ package org.apache.skywalking.oap.server.starter.config;
|
||||||
|
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
import java.util.Set;
|
||||||
import org.apache.skywalking.apm.util.PropertyPlaceholderHelper;
|
import org.apache.skywalking.apm.util.PropertyPlaceholderHelper;
|
||||||
import org.apache.skywalking.oap.server.library.module.ApplicationConfiguration;
|
import org.apache.skywalking.oap.server.library.module.ApplicationConfiguration;
|
||||||
|
import org.apache.skywalking.oap.server.library.module.ProviderNotFoundException;
|
||||||
import org.apache.skywalking.oap.server.library.util.CollectionUtils;
|
import org.apache.skywalking.oap.server.library.util.CollectionUtils;
|
||||||
import org.apache.skywalking.oap.server.library.util.ResourceUtils;
|
import org.apache.skywalking.oap.server.library.util.ResourceUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
@ -40,6 +43,9 @@ public class ApplicationConfigLoader implements ConfigLoader<ApplicationConfigur
|
||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(ApplicationConfigLoader.class);
|
private static final Logger logger = LoggerFactory.getLogger(ApplicationConfigLoader.class);
|
||||||
|
|
||||||
|
private static final String DISABLE_SELECTOR = "-";
|
||||||
|
private static final String SELECTOR = "selector";
|
||||||
|
|
||||||
private final Yaml yaml = new Yaml();
|
private final Yaml yaml = new Yaml();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -54,15 +60,17 @@ public class ApplicationConfigLoader implements ConfigLoader<ApplicationConfigur
|
||||||
private void loadConfig(ApplicationConfiguration configuration) throws ConfigFileNotFoundException {
|
private void loadConfig(ApplicationConfiguration configuration) throws ConfigFileNotFoundException {
|
||||||
try {
|
try {
|
||||||
Reader applicationReader = ResourceUtils.read("application.yml");
|
Reader applicationReader = ResourceUtils.read("application.yml");
|
||||||
Map<String, Map<String, Map<String, ?>>> moduleConfig = yaml.loadAs(applicationReader, Map.class);
|
Map<String, Map<String, Object>> moduleConfig = yaml.loadAs(applicationReader, Map.class);
|
||||||
if (CollectionUtils.isNotEmpty(moduleConfig)) {
|
if (CollectionUtils.isNotEmpty(moduleConfig)) {
|
||||||
|
selectConfig(moduleConfig);
|
||||||
moduleConfig.forEach((moduleName, providerConfig) -> {
|
moduleConfig.forEach((moduleName, providerConfig) -> {
|
||||||
if (providerConfig.size() > 0) {
|
if (providerConfig.size() > 0) {
|
||||||
logger.info("Get a module define from application.yml, module name: {}", moduleName);
|
logger.info("Get a module define from application.yml, module name: {}", moduleName);
|
||||||
ApplicationConfiguration.ModuleConfiguration moduleConfiguration = configuration.addModule(moduleName);
|
ApplicationConfiguration.ModuleConfiguration moduleConfiguration = configuration.addModule(moduleName);
|
||||||
providerConfig.forEach((providerName, propertiesConfig) -> {
|
providerConfig.forEach((providerName, config) -> {
|
||||||
logger.info("Get a provider define belong to {} module, provider name: {}", moduleName, providerName);
|
logger.info("Get a provider define belong to {} module, provider name: {}", moduleName, providerName);
|
||||||
Properties properties = new Properties();
|
final Map<String, ?> propertiesConfig = (Map<String, ?>) config;
|
||||||
|
final Properties properties = new Properties();
|
||||||
if (propertiesConfig != null) {
|
if (propertiesConfig != null) {
|
||||||
propertiesConfig.forEach((propertyName, propertyValue) -> {
|
propertiesConfig.forEach((propertyName, propertyValue) -> {
|
||||||
if (propertyValue instanceof Map) {
|
if (propertyValue instanceof Map) {
|
||||||
|
|
@ -105,6 +113,48 @@ public class ApplicationConfigLoader implements ConfigLoader<ApplicationConfigur
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void selectConfig(final Map<String, Map<String, Object>> moduleConfiguration) {
|
||||||
|
final Set<String> modulesWithoutProvider = new HashSet<>();
|
||||||
|
for (final Map.Entry<String, Map<String, Object>> entry : moduleConfiguration.entrySet()) {
|
||||||
|
final String moduleName = entry.getKey();
|
||||||
|
final Map<String, Object> providerConfig = entry.getValue();
|
||||||
|
if (!providerConfig.containsKey(SELECTOR)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
final String selector = (String) providerConfig.get(SELECTOR);
|
||||||
|
final String resolvedSelector = PropertyPlaceholderHelper.INSTANCE.replacePlaceholders(
|
||||||
|
selector, System.getProperties()
|
||||||
|
);
|
||||||
|
providerConfig.entrySet().removeIf(e -> !resolvedSelector.equals(e.getKey()));
|
||||||
|
|
||||||
|
if (!providerConfig.isEmpty()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!DISABLE_SELECTOR.equals(resolvedSelector)) {
|
||||||
|
throw new ProviderNotFoundException(
|
||||||
|
"no provider found for module " + moduleName + ", " +
|
||||||
|
"if you're sure it's not required module and want to remove it, " +
|
||||||
|
"set the selector to -"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// now the module can be safely removed
|
||||||
|
modulesWithoutProvider.add(moduleName);
|
||||||
|
}
|
||||||
|
|
||||||
|
moduleConfiguration.entrySet().removeIf(e -> {
|
||||||
|
final String module = e.getKey();
|
||||||
|
final boolean shouldBeRemoved = modulesWithoutProvider.contains(module);
|
||||||
|
|
||||||
|
if (shouldBeRemoved) {
|
||||||
|
logger.info("Remove module {} without any provider", module);
|
||||||
|
}
|
||||||
|
|
||||||
|
return shouldBeRemoved;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private void overrideModuleSettings(ApplicationConfiguration configuration, String key, String value) {
|
private void overrideModuleSettings(ApplicationConfiguration configuration, String key, String value) {
|
||||||
int moduleAndConfigSeparator = key.indexOf('.');
|
int moduleAndConfigSeparator = key.indexOf('.');
|
||||||
if (moduleAndConfigSeparator <= 0) {
|
if (moduleAndConfigSeparator <= 0) {
|
||||||
|
|
|
||||||
|
|
@ -14,40 +14,42 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
cluster:
|
cluster:
|
||||||
|
selector: ${SW_CLUSTER:standalone}
|
||||||
standalone:
|
standalone:
|
||||||
# Please check your ZooKeeper is 3.5+, However, it is also compatible with ZooKeeper 3.4.x. Replace the ZooKeeper 3.5+
|
# Please check your ZooKeeper is 3.5+, However, it is also compatible with ZooKeeper 3.4.x. Replace the ZooKeeper 3.5+
|
||||||
# library the oap-libs folder with your ZooKeeper 3.4.x library.
|
# library the oap-libs folder with your ZooKeeper 3.4.x library.
|
||||||
# zookeeper:
|
zookeeper:
|
||||||
# nameSpace: ${SW_NAMESPACE:""}
|
nameSpace: ${SW_NAMESPACE:""}
|
||||||
# hostPort: ${SW_CLUSTER_ZK_HOST_PORT:localhost:2181}
|
hostPort: ${SW_CLUSTER_ZK_HOST_PORT:localhost:2181}
|
||||||
# #Retry Policy
|
# Retry Policy
|
||||||
# baseSleepTimeMs: ${SW_CLUSTER_ZK_SLEEP_TIME:1000} # initial amount of time to wait between retries
|
baseSleepTimeMs: ${SW_CLUSTER_ZK_SLEEP_TIME:1000} # initial amount of time to wait between retries
|
||||||
# maxRetries: ${SW_CLUSTER_ZK_MAX_RETRIES:3} # max number of times to retry
|
maxRetries: ${SW_CLUSTER_ZK_MAX_RETRIES:3} # max number of times to retry
|
||||||
# # Enable ACL
|
# Enable ACL
|
||||||
# enableACL: ${SW_ZK_ENABLE_ACL:false} # disable ACL in default
|
enableACL: ${SW_ZK_ENABLE_ACL:false} # disable ACL in default
|
||||||
# schema: ${SW_ZK_SCHEMA:digest} # only support digest schema
|
schema: ${SW_ZK_SCHEMA:digest} # only support digest schema
|
||||||
# expression: ${SW_ZK_EXPRESSION:skywalking:skywalking}
|
expression: ${SW_ZK_EXPRESSION:skywalking:skywalking}
|
||||||
# kubernetes:
|
kubernetes:
|
||||||
# watchTimeoutSeconds: ${SW_CLUSTER_K8S_WATCH_TIMEOUT:60}
|
watchTimeoutSeconds: ${SW_CLUSTER_K8S_WATCH_TIMEOUT:60}
|
||||||
# namespace: ${SW_CLUSTER_K8S_NAMESPACE:default}
|
namespace: ${SW_CLUSTER_K8S_NAMESPACE:default}
|
||||||
# labelSelector: ${SW_CLUSTER_K8S_LABEL:app=collector,release=skywalking}
|
labelSelector: ${SW_CLUSTER_K8S_LABEL:app=collector,release=skywalking}
|
||||||
# uidEnvName: ${SW_CLUSTER_K8S_UID:SKYWALKING_COLLECTOR_UID}
|
uidEnvName: ${SW_CLUSTER_K8S_UID:SKYWALKING_COLLECTOR_UID}
|
||||||
# consul:
|
consul:
|
||||||
# serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
||||||
# Consul cluster nodes, example: 10.0.0.1:8500,10.0.0.2:8500,10.0.0.3:8500
|
# Consul cluster nodes, example: 10.0.0.1:8500,10.0.0.2:8500,10.0.0.3:8500
|
||||||
# hostPort: ${SW_CLUSTER_CONSUL_HOST_PORT:localhost:8500}
|
hostPort: ${SW_CLUSTER_CONSUL_HOST_PORT:localhost:8500}
|
||||||
# # Consul aclToken
|
aclToken: ${SW_CLUSTER_CONSUL_ACLTOKEN:""}
|
||||||
# #aclToken: ${SW_CLUSTER_CONSUL_ACLTOKEN}
|
nacos:
|
||||||
# nacos:
|
serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
||||||
# serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:localhost:8848}
|
||||||
# # Nacos Configuration namespace
|
# Nacos Configuration namespace
|
||||||
# namespace: ${SW_CLUSTER_NACOS_NAMESPACE:"public"}
|
namespace: ${SW_CLUSTER_NACOS_NAMESPACE:"public"}
|
||||||
# hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:localhost:8848}
|
etcd:
|
||||||
# etcd:
|
serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
||||||
# serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
# etcd cluster nodes, example: 10.0.0.1:2379,10.0.0.2:2379,10.0.0.3:2379
|
||||||
# etcd cluster nodes, example: 10.0.0.1:2379,10.0.0.2:2379,10.0.0.3:2379
|
hostPort: ${SW_CLUSTER_ETCD_HOST_PORT:localhost:2379}
|
||||||
# hostPort: ${SW_CLUSTER_ETCD_HOST_PORT:localhost:2379}
|
|
||||||
core:
|
core:
|
||||||
|
selector: ${SW_CORE:default}
|
||||||
default:
|
default:
|
||||||
# Mixed: Receive agent data, Level 1 aggregate, Level 2 aggregate
|
# Mixed: Receive agent data, Level 1 aggregate, Level 2 aggregate
|
||||||
# Receiver: Receive agent data, Level 1 aggregate
|
# Receiver: Receive agent data, Level 1 aggregate
|
||||||
|
|
@ -82,39 +84,41 @@ core:
|
||||||
# and it will cause more load for memory, network of OAP and storage.
|
# and it will cause more load for memory, network of OAP and storage.
|
||||||
# But, being activated, user could see the name in the storage entities, which make users easier to use 3rd party tool, such as Kibana->ES, to query the data by themselves.
|
# But, being activated, user could see the name in the storage entities, which make users easier to use 3rd party tool, such as Kibana->ES, to query the data by themselves.
|
||||||
activeExtraModelColumns: ${SW_CORE_ACTIVE_EXTRA_MODEL_COLUMNS:false}
|
activeExtraModelColumns: ${SW_CORE_ACTIVE_EXTRA_MODEL_COLUMNS:false}
|
||||||
|
|
||||||
storage:
|
storage:
|
||||||
# elasticsearch:
|
selector: ${SW_STORAGE:h2}
|
||||||
# nameSpace: ${SW_NAMESPACE:""}
|
elasticsearch:
|
||||||
# clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
|
nameSpace: ${SW_NAMESPACE:""}
|
||||||
# protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
|
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
|
||||||
# #trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
|
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
|
||||||
# #trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
|
trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
|
||||||
# user: ${SW_ES_USER:""}
|
trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
|
||||||
# password: ${SW_ES_PASSWORD:""}
|
user: ${SW_ES_USER:""}
|
||||||
# secretsManagementFile: ${SW_ES_SECRETS_MANAGEMENT_FILE:""} # Secrets management file in the properties format includes the username, password, which are managed by 3rd party tool.
|
password: ${SW_ES_PASSWORD:""}
|
||||||
# enablePackedDownsampling: ${SW_STORAGE_ENABLE_PACKED_DOWNSAMPLING:true} # Hour and Day metrics will be merged into minute index.
|
secretsManagementFile: ${SW_ES_SECRETS_MANAGEMENT_FILE:""} # Secrets management file in the properties format includes the username, password, which are managed by 3rd party tool.
|
||||||
# dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index.
|
enablePackedDownsampling: ${SW_STORAGE_ENABLE_PACKED_DOWNSAMPLING:true} # Hour and Day metrics will be merged into minute index.
|
||||||
# indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
|
dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index.
|
||||||
# indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
|
indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
|
||||||
# # Those data TTL settings will override the same settings in core module.
|
indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
|
||||||
# recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
|
# Those data TTL settings will override the same settings in core module.
|
||||||
# otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
|
recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
|
||||||
# monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
|
otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
|
||||||
# # Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
|
monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
|
||||||
# bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000} # Execute the bulk every 1000 requests
|
# Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
|
||||||
# flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
|
bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000} # Execute the bulk every 1000 requests
|
||||||
# concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
|
flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
|
||||||
# resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
|
concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
|
||||||
# metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
|
resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
|
||||||
# segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
|
metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
|
||||||
# profileTaskQueryMaxSize: ${SW_STORAGE_ES_QUERY_PROFILE_TASK_SIZE:200}
|
segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
|
||||||
# advanced: ${SW_STORAGE_ES_ADVANCED:""}
|
profileTaskQueryMaxSize: ${SW_STORAGE_ES_QUERY_PROFILE_TASK_SIZE:200}
|
||||||
|
advanced: ${SW_STORAGE_ES_ADVANCED:""}
|
||||||
elasticsearch7:
|
elasticsearch7:
|
||||||
nameSpace: ${SW_NAMESPACE:""}
|
nameSpace: ${SW_NAMESPACE:""}
|
||||||
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
|
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
|
||||||
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
|
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
|
||||||
#trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
|
trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
|
||||||
#trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
|
trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
|
||||||
enablePackedDownsampling: ${SW_STORAGE_ENABLE_PACKED_DOWNSAMPLING:true} # Hour and Day metrics will be merged into minute index.
|
enablePackedDownsampling: ${SW_STORAGE_ENABLE_PACKED_DOWNSAMPLING:true} # Hour and Day metrics will be merged into minute index.
|
||||||
dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index.
|
dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index.
|
||||||
user: ${SW_ES_USER:""}
|
user: ${SW_ES_USER:""}
|
||||||
|
|
@ -133,56 +137,62 @@ storage:
|
||||||
resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
|
resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
|
||||||
metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
|
metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
|
||||||
segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
|
segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
|
||||||
|
profileTaskQueryMaxSize: ${SW_STORAGE_ES_QUERY_PROFILE_TASK_SIZE:200}
|
||||||
advanced: ${SW_STORAGE_ES_ADVANCED:""}
|
advanced: ${SW_STORAGE_ES_ADVANCED:""}
|
||||||
# h2:
|
h2:
|
||||||
# driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
|
driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
|
||||||
# url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
|
url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
|
||||||
# user: ${SW_STORAGE_H2_USER:sa}
|
user: ${SW_STORAGE_H2_USER:sa}
|
||||||
# metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
|
metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
|
||||||
# mysql:
|
mysql:
|
||||||
# properties:
|
properties:
|
||||||
# jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
|
jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
|
||||||
# dataSource.user: ${SW_DATA_SOURCE_USER:root}
|
dataSource.user: ${SW_DATA_SOURCE_USER:root}
|
||||||
# dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root@1234}
|
dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root@1234}
|
||||||
# dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
|
dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
|
||||||
# dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
|
dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
|
||||||
# dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
||||||
# dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
|
dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
|
||||||
# metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
|
metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
|
||||||
# influx:
|
influxdb:
|
||||||
# # Metadata storage provider configuration
|
# Metadata storage provider configuration
|
||||||
# metabaseType: ${SW_STORAGE_METABASE_TYPE:H2} # There are 2 options as Metabase provider, H2 or MySQL.
|
metabaseType: ${SW_STORAGE_METABASE_TYPE:H2} # There are 2 options as Metabase provider, H2 or MySQL.
|
||||||
# h2Props:
|
h2Props:
|
||||||
# dataSourceClassName: ${SW_STORAGE_METABASE_DRIVER:org.h2.jdbcx.JdbcDataSource}
|
dataSourceClassName: ${SW_STORAGE_METABASE_DRIVER:org.h2.jdbcx.JdbcDataSource}
|
||||||
# dataSource.url: ${SW_STORAGE_METABASE_URL:jdbc:h2:mem:skywalking-oap-db}
|
dataSource.url: ${SW_STORAGE_METABASE_URL:jdbc:h2:mem:skywalking-oap-db}
|
||||||
# dataSource.user: ${SW_STORAGE_METABASE_USER:sa}
|
dataSource.user: ${SW_STORAGE_METABASE_USER:sa}
|
||||||
# dataSource.password: ${SW_STORAGE_METABASE_PASSWORD:}
|
dataSource.password: ${SW_STORAGE_METABASE_PASSWORD:}
|
||||||
# mysqlProps:
|
mysqlProps:
|
||||||
# jdbcUrl: ${SW_STORAGE_METABASE_URL:"jdbc:mysql://localhost:3306/swtest"}
|
jdbcUrl: ${SW_STORAGE_METABASE_URL:"jdbc:mysql://localhost:3306/swtest"}
|
||||||
# dataSource.user: ${SW_STORAGE_METABASE_USER:root}
|
dataSource.user: ${SW_STORAGE_METABASE_USER:root}
|
||||||
# dataSource.password: ${SW_STORAGE_METABASE_PASSWORD:root@1234}
|
dataSource.password: ${SW_STORAGE_METABASE_PASSWORD:root@1234}
|
||||||
# dataSource.cachePrepStmts: ${SW_STORAGE_METABASE_CACHE_PREP_STMTS:true}
|
dataSource.cachePrepStmts: ${SW_STORAGE_METABASE_CACHE_PREP_STMTS:true}
|
||||||
# dataSource.prepStmtCacheSize: ${SW_STORAGE_METABASE_PREP_STMT_CACHE_SQL_SIZE:250}
|
dataSource.prepStmtCacheSize: ${SW_STORAGE_METABASE_PREP_STMT_CACHE_SQL_SIZE:250}
|
||||||
# dataSource.prepStmtCacheSqlLimit: ${SW_STORAGE_METABASE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
dataSource.prepStmtCacheSqlLimit: ${SW_STORAGE_METABASE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
||||||
# dataSource.useServerPrepStmts: ${SW_STORAGE_METABASE_USE_SERVER_PREP_STMTS:true}
|
dataSource.useServerPrepStmts: ${SW_STORAGE_METABASE_USE_SERVER_PREP_STMTS:true}
|
||||||
# metadataQueryMaxSize: ${SW_STORAGE_METABASE_QUERY_MAX_SIZE:5000}
|
metadataQueryMaxSize: ${SW_STORAGE_METABASE_QUERY_MAX_SIZE:5000}
|
||||||
# # InfluxDB configuration
|
# InfluxDB configuration
|
||||||
# url: ${SW_STORAGE_INFLUXDB_URL:http://localhost:8086}
|
url: ${SW_STORAGE_INFLUXDB_URL:http://localhost:8086}
|
||||||
# user: ${SW_STORAGE_INFLUXDB_USER:root}
|
user: ${SW_STORAGE_INFLUXDB_USER:root}
|
||||||
# password: ${SW_STORAGE_INFLUXDB_PASSWORD:}
|
password: ${SW_STORAGE_INFLUXDB_PASSWORD:}
|
||||||
# database: ${SW_STORAGE_INFLUXDB_DATABASE:skywalking}
|
database: ${SW_STORAGE_INFLUXDB_DATABASE:skywalking}
|
||||||
# actions: ${SW_STORAGE_INFLUXDB_ACTIONS:1000} # the number of actions to collect
|
actions: ${SW_STORAGE_INFLUXDB_ACTIONS:1000} # the number of actions to collect
|
||||||
# duration: ${SW_STORAGE_INFLUXDB_DURATION:1000} # the time to wait at most (milliseconds)
|
duration: ${SW_STORAGE_INFLUXDB_DURATION:1000} # the time to wait at most (milliseconds)
|
||||||
# fetchTaskLogMaxSize: ${SW_STORAGE_INFLUXDB_FETCH_TASK_LOG_MAX_SIZE:5000} # the max number of fetch task log in a request
|
fetchTaskLogMaxSize: ${SW_STORAGE_INFLUXDB_FETCH_TASK_LOG_MAX_SIZE:5000} # the max number of fetch task log in a request
|
||||||
|
|
||||||
receiver-sharing-server:
|
receiver-sharing-server:
|
||||||
|
selector: ${SW_RECEIVER_SHARING_SERVER:default}
|
||||||
default:
|
default:
|
||||||
authentication: ${SW_AUTHENTICATION:""}
|
authentication: ${SW_AUTHENTICATION:""}
|
||||||
gRPCSslEnabled: ${SW_RECEIVER_SHARING_GRPC_SSL_ENABLED:false}
|
gRPCSslEnabled: ${SW_RECEIVER_SHARING_GRPC_SSL_ENABLED:false}
|
||||||
gRPCSslKeyPath: ${SW_RECEIVER_SHARING_GRPC_SSL_KEY_PATH:""}
|
gRPCSslKeyPath: ${SW_RECEIVER_SHARING_GRPC_SSL_KEY_PATH:""}
|
||||||
gRPCSslCertChainPath: ${SW_RECEIVER_SHARING_GRPC_SSL_CERT_CHAIN_PATH:""}
|
gRPCSslCertChainPath: ${SW_RECEIVER_SHARING_GRPC_SSL_CERT_CHAIN_PATH:""}
|
||||||
receiver-register:
|
receiver-register:
|
||||||
|
selector: ${SW_RECEIVER_REGISTER:default}
|
||||||
default:
|
default:
|
||||||
|
|
||||||
receiver-trace:
|
receiver-trace:
|
||||||
|
selector: ${SW_RECEIVER_TRACE:default}
|
||||||
default:
|
default:
|
||||||
bufferPath: ${SW_RECEIVER_BUFFER_PATH:../trace-buffer/} # Path to trace buffer files, suggest to use absolute path
|
bufferPath: ${SW_RECEIVER_BUFFER_PATH:../trace-buffer/} # Path to trace buffer files, suggest to use absolute path
|
||||||
bufferOffsetMaxFileSize: ${SW_RECEIVER_BUFFER_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
|
bufferOffsetMaxFileSize: ${SW_RECEIVER_BUFFER_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
|
||||||
|
|
@ -190,91 +200,117 @@ receiver-trace:
|
||||||
bufferFileCleanWhenRestart: ${SW_RECEIVER_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
|
bufferFileCleanWhenRestart: ${SW_RECEIVER_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
|
||||||
sampleRate: ${SW_TRACE_SAMPLE_RATE:10000} # The sample rate precision is 1/10000. 10000 means 100% sample in default.
|
sampleRate: ${SW_TRACE_SAMPLE_RATE:10000} # The sample rate precision is 1/10000. 10000 means 100% sample in default.
|
||||||
slowDBAccessThreshold: ${SW_SLOW_DB_THRESHOLD:default:200,mongodb:100} # The slow database access thresholds. Unit ms.
|
slowDBAccessThreshold: ${SW_SLOW_DB_THRESHOLD:default:200,mongodb:100} # The slow database access thresholds. Unit ms.
|
||||||
|
|
||||||
receiver-jvm:
|
receiver-jvm:
|
||||||
|
selector: ${SW_RECEIVER_JVM:default}
|
||||||
default:
|
default:
|
||||||
|
|
||||||
receiver-clr:
|
receiver-clr:
|
||||||
|
selector: ${SW_RECEIVER_CLR:default}
|
||||||
default:
|
default:
|
||||||
#receiver-so11y:
|
|
||||||
# default:
|
receiver-profile:
|
||||||
|
selector: ${SW_RECEIVER_PROFILE:default}
|
||||||
|
default:
|
||||||
|
|
||||||
service-mesh:
|
service-mesh:
|
||||||
|
selector: ${SW_SERVICE_MESH:default}
|
||||||
default:
|
default:
|
||||||
bufferPath: ${SW_SERVICE_MESH_BUFFER_PATH:../mesh-buffer/} # Path to trace buffer files, suggest to use absolute path
|
bufferPath: ${SW_SERVICE_MESH_BUFFER_PATH:../mesh-buffer/} # Path to trace buffer files, suggest to use absolute path
|
||||||
bufferOffsetMaxFileSize: ${SW_SERVICE_MESH_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
|
bufferOffsetMaxFileSize: ${SW_SERVICE_MESH_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
|
||||||
bufferDataMaxFileSize: ${SW_SERVICE_MESH_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
|
bufferDataMaxFileSize: ${SW_SERVICE_MESH_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
|
||||||
bufferFileCleanWhenRestart: ${SW_SERVICE_MESH_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
|
bufferFileCleanWhenRestart: ${SW_SERVICE_MESH_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
|
||||||
|
|
||||||
istio-telemetry:
|
istio-telemetry:
|
||||||
|
selector: ${SW_ISTIO_TELEMETRY:default}
|
||||||
default:
|
default:
|
||||||
|
|
||||||
envoy-metric:
|
envoy-metric:
|
||||||
|
selector: ${SW_ENVOY_METRIC:default}
|
||||||
default:
|
default:
|
||||||
receiver-profile:
|
alsHTTPAnalysis: ${SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS:""}
|
||||||
|
|
||||||
|
receiver_zipkin:
|
||||||
|
selector: ${SW_RECEIVER_ZIPKIN:-}
|
||||||
default:
|
default:
|
||||||
# alsHTTPAnalysis: ${SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS:k8s-mesh}
|
host: ${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0}
|
||||||
#receiver_zipkin:
|
port: ${SW_RECEIVER_ZIPKIN_PORT:9411}
|
||||||
# default:
|
contextPath: ${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/}
|
||||||
# host: ${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0}
|
|
||||||
# port: ${SW_RECEIVER_ZIPKIN_PORT:9411}
|
receiver_jaeger:
|
||||||
# contextPath: ${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/}
|
selector: ${SW_RECEIVER_JAEGER:-}
|
||||||
#receiver_jaeger:
|
default:
|
||||||
# default:
|
gRPCHost: ${SW_RECEIVER_JAEGER_HOST:0.0.0.0}
|
||||||
# gRPCHost: ${SW_RECEIVER_JAEGER_HOST:0.0.0.0}
|
gRPCPort: ${SW_RECEIVER_JAEGER_PORT:14250}
|
||||||
# gRPCPort: ${SW_RECEIVER_JAEGER_PORT:14250}
|
|
||||||
query:
|
query:
|
||||||
|
selector: ${SW_QUERY:graphql}
|
||||||
graphql:
|
graphql:
|
||||||
path: ${SW_QUERY_GRAPHQL_PATH:/graphql}
|
path: ${SW_QUERY_GRAPHQL_PATH:/graphql}
|
||||||
|
|
||||||
alarm:
|
alarm:
|
||||||
|
selector: ${SW_ALARM:default}
|
||||||
default:
|
default:
|
||||||
|
|
||||||
telemetry:
|
telemetry:
|
||||||
|
selector: ${SW_TELEMETRY:none}
|
||||||
none:
|
none:
|
||||||
# prometheus:
|
prometheus:
|
||||||
# host: ${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}
|
host: ${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}
|
||||||
# port: ${SW_TELEMETRY_PROMETHEUS_PORT:1234}
|
port: ${SW_TELEMETRY_PROMETHEUS_PORT:1234}
|
||||||
# so11y:
|
so11y:
|
||||||
# prometheusExporterEnabled: ${SW_TELEMETRY_SO11Y_PROMETHEUS_ENABLED:true}
|
prometheusExporterEnabled: ${SW_TELEMETRY_SO11Y_PROMETHEUS_ENABLED:true}
|
||||||
# prometheusExporterHost: ${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}
|
prometheusExporterHost: ${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}
|
||||||
# prometheusExporterPort: ${SW_TELEMETRY_PROMETHEUS_PORT:1234}
|
prometheusExporterPort: ${SW_TELEMETRY_PROMETHEUS_PORT:1234}
|
||||||
|
|
||||||
|
receiver-so11y:
|
||||||
|
selector: ${SW_RECEIVER_SO11Y:-}
|
||||||
|
default:
|
||||||
|
|
||||||
configuration:
|
configuration:
|
||||||
|
selector: ${SW_CONFIGURATION:none}
|
||||||
none:
|
none:
|
||||||
# apollo:
|
apollo:
|
||||||
# apolloMeta: http://106.12.25.204:8080
|
apolloMeta: http://106.12.25.204:8080
|
||||||
# apolloCluster: default
|
apolloCluster: default
|
||||||
# # apolloEnv: # defaults to null
|
apolloEnv: ""
|
||||||
# appId: skywalking
|
appId: skywalking
|
||||||
# period: 5
|
period: 5
|
||||||
# nacos:
|
nacos:
|
||||||
# # Nacos Server Host
|
# Nacos Server Host
|
||||||
# serverAddr: 127.0.0.1
|
serverAddr: 127.0.0.1
|
||||||
# # Nacos Server Port
|
# Nacos Server Port
|
||||||
# port: 8848
|
port: 8848
|
||||||
# # Nacos Configuration Group
|
# Nacos Configuration Group
|
||||||
# group: 'skywalking'
|
group: 'skywalking'
|
||||||
# # Nacos Configuration namespace
|
# Nacos Configuration namespace
|
||||||
# namespace: ''
|
namespace: ''
|
||||||
# # Unit seconds, sync period. Default fetch every 60 seconds.
|
# Unit seconds, sync period. Default fetch every 60 seconds.
|
||||||
# period : 5
|
period : 60
|
||||||
# # the name of current cluster, set the name if you want to upstream system known.
|
# the name of current cluster, set the name if you want to upstream system known.
|
||||||
# clusterName: "default"
|
clusterName: "default"
|
||||||
# zookeeper:
|
zookeeper:
|
||||||
# period : 60 # Unit seconds, sync period. Default fetch every 60 seconds.
|
period : 60 # Unit seconds, sync period. Default fetch every 60 seconds.
|
||||||
# nameSpace: /default
|
nameSpace: /default
|
||||||
# hostPort: localhost:2181
|
hostPort: localhost:2181
|
||||||
# #Retry Policy
|
# Retry Policy
|
||||||
# baseSleepTimeMs: 1000 # initial amount of time to wait between retries
|
baseSleepTimeMs: 1000 # initial amount of time to wait between retries
|
||||||
# maxRetries: 3 # max number of times to retry
|
maxRetries: 3 # max number of times to retry
|
||||||
# etcd:
|
etcd:
|
||||||
# period : 60 # Unit seconds, sync period. Default fetch every 60 seconds.
|
period : 60 # Unit seconds, sync period. Default fetch every 60 seconds.
|
||||||
# group : 'skywalking'
|
group : 'skywalking'
|
||||||
# serverAddr: localhost:2379
|
serverAddr: localhost:2379
|
||||||
# clusterName: "default"
|
clusterName: "default"
|
||||||
# consul:
|
consul:
|
||||||
# # Consul host and ports, separated by comma, e.g. 1.2.3.4:8500,2.3.4.5:8500
|
# Consul host and ports, separated by comma, e.g. 1.2.3.4:8500,2.3.4.5:8500
|
||||||
# hostAndPorts: ${consul.address}
|
hostAndPorts: ${consul.address}
|
||||||
# # Sync period in seconds. Defaults to 60 seconds.
|
# Sync period in seconds. Defaults to 60 seconds.
|
||||||
# period: 1
|
period: 1
|
||||||
# # Consul aclToken
|
# Consul aclToken
|
||||||
# #aclToken: ${consul.aclToken}
|
#aclToken: ${consul.aclToken}
|
||||||
|
|
||||||
#exporter:
|
|
||||||
# grpc:
|
|
||||||
# targetHost: ${SW_EXPORTER_GRPC_HOST:127.0.0.1}
|
|
||||||
# targetPort: ${SW_EXPORTER_GRPC_PORT:9870}
|
|
||||||
|
|
||||||
|
exporter:
|
||||||
|
selector: ${SW_EXPORTER:-}
|
||||||
|
grpc:
|
||||||
|
targetHost: ${SW_EXPORTER_GRPC_HOST:127.0.0.1}
|
||||||
|
targetPort: ${SW_EXPORTER_GRPC_PORT:9870}
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ public class ApplicationConfigLoaderTestCase {
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws ConfigFileNotFoundException {
|
public void setUp() throws ConfigFileNotFoundException {
|
||||||
|
System.setProperty("SW_STORAGE", "mysql");
|
||||||
ApplicationConfigLoader configLoader = new ApplicationConfigLoader();
|
ApplicationConfigLoader configLoader = new ApplicationConfigLoader();
|
||||||
applicationConfiguration = configLoader.load();
|
applicationConfiguration = configLoader.load();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,181 +0,0 @@
|
||||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
# contributor license agreements. See the NOTICE file distributed with
|
|
||||||
# this work for additional information regarding copyright ownership.
|
|
||||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
# (the "License"); you may not use this file except in compliance with
|
|
||||||
# the License. You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
cluster:
|
|
||||||
standalone:
|
|
||||||
# Please check your ZooKeeper is 3.5+, However, it is also compatible with ZooKeeper 3.4.x. Replace the ZooKeeper 3.5+
|
|
||||||
# library the oap-libs folder with your ZooKeeper 3.4.x library.
|
|
||||||
# zookeeper:
|
|
||||||
# nameSpace: ${SW_NAMESPACE:""}
|
|
||||||
# hostPort: ${SW_CLUSTER_ZK_HOST_PORT:localhost:2181}
|
|
||||||
# #Retry Policy
|
|
||||||
# baseSleepTimeMs: ${SW_CLUSTER_ZK_SLEEP_TIME:1000} # initial amount of time to wait between retries
|
|
||||||
# maxRetries: ${SW_CLUSTER_ZK_MAX_RETRIES:3} # max number of times to retry
|
|
||||||
# # Enable ACL
|
|
||||||
# enableACL: ${SW_ZK_ENABLE_ACL:false} # disable ACL in default
|
|
||||||
# schema: ${SW_ZK_SCHEMA:digest} # only support digest schema
|
|
||||||
# expression: ${SW_ZK_EXPRESSION:skywalking:skywalking}
|
|
||||||
# kubernetes:
|
|
||||||
# watchTimeoutSeconds: ${SW_CLUSTER_K8S_WATCH_TIMEOUT:60}
|
|
||||||
# namespace: ${SW_CLUSTER_K8S_NAMESPACE:default}
|
|
||||||
# labelSelector: ${SW_CLUSTER_K8S_LABEL:app=collector,release=skywalking}
|
|
||||||
# uidEnvName: ${SW_CLUSTER_K8S_UID:SKYWALKING_COLLECTOR_UID}
|
|
||||||
# consul:
|
|
||||||
# serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
|
||||||
# Consul cluster nodes, example: 10.0.0.1:8500,10.0.0.2:8500,10.0.0.3:8500
|
|
||||||
# hostPort: ${SW_CLUSTER_CONSUL_HOST_PORT:localhost:8500}
|
|
||||||
# nacos:
|
|
||||||
# serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
|
||||||
# # Nacos Configuration namespace
|
|
||||||
# namespace: ${SW_CLUSTER_NACOS_NAMESPACE:"public"}
|
|
||||||
# hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:localhost:8848}
|
|
||||||
# etcd:
|
|
||||||
# serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
|
|
||||||
# etcd cluster nodes, example: 10.0.0.1:2379,10.0.0.2:2379,10.0.0.3:2379
|
|
||||||
# hostPort: ${SW_CLUSTER_ETCD_HOST_PORT:localhost:2379}
|
|
||||||
core:
|
|
||||||
default:
|
|
||||||
# Mixed: Receive agent data, Level 1 aggregate, Level 2 aggregate
|
|
||||||
# Receiver: Receive agent data, Level 1 aggregate
|
|
||||||
# Aggregator: Level 2 aggregate
|
|
||||||
role: ${SW_CORE_ROLE:Mixed} # Mixed/Receiver/Aggregator
|
|
||||||
restHost: ${SW_CORE_REST_HOST:0.0.0.0}
|
|
||||||
restPort: ${SW_CORE_REST_PORT:12800}
|
|
||||||
restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/}
|
|
||||||
gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0}
|
|
||||||
gRPCPort: ${SW_CORE_GRPC_PORT:11800}
|
|
||||||
downsampling:
|
|
||||||
- Hour
|
|
||||||
- Day
|
|
||||||
- Month
|
|
||||||
# Set a timeout on metrics data. After the timeout has expired, the metrics data will automatically be deleted.
|
|
||||||
enableDataKeeperExecutor: ${SW_CORE_ENABLE_DATA_KEEPER_EXECUTOR:true} # Turn it off then automatically metrics data delete will be close.
|
|
||||||
dataKeeperExecutePeriod: ${SW_CORE_DATA_KEEPER_EXECUTE_PERIOD:5} # How often the data keeper executor runs periodically, unit is minute
|
|
||||||
recordDataTTL: ${SW_CORE_RECORD_DATA_TTL:90} # Unit is minute
|
|
||||||
minuteMetricsDataTTL: ${SW_CORE_MINUTE_METRIC_DATA_TTL:90} # Unit is minute
|
|
||||||
hourMetricsDataTTL: ${SW_CORE_HOUR_METRIC_DATA_TTL:36} # Unit is hour
|
|
||||||
dayMetricsDataTTL: ${SW_CORE_DAY_METRIC_DATA_TTL:45} # Unit is day
|
|
||||||
monthMetricsDataTTL: ${SW_CORE_MONTH_METRIC_DATA_TTL:18} # Unit is month
|
|
||||||
# Cache metric data for 1 minute to reduce database queries, and if the OAP cluster changes within that minute,
|
|
||||||
# the metrics may not be accurate within that minute.
|
|
||||||
enableDatabaseSession: ${SW_CORE_ENABLE_DATABASE_SESSION:true}
|
|
||||||
storage:
|
|
||||||
mysql:
|
|
||||||
properties:
|
|
||||||
jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
|
|
||||||
dataSource.user: ${SW_DATA_SOURCE_USER:root}
|
|
||||||
dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root@1234}
|
|
||||||
dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
|
|
||||||
dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
|
|
||||||
dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
|
||||||
dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
|
|
||||||
metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
|
|
||||||
receiver-sharing-server:
|
|
||||||
default:
|
|
||||||
receiver-register:
|
|
||||||
default:
|
|
||||||
receiver-trace:
|
|
||||||
default:
|
|
||||||
bufferPath: ${SW_RECEIVER_BUFFER_PATH:../trace-buffer/} # Path to trace buffer files, suggest to use absolute path
|
|
||||||
bufferOffsetMaxFileSize: ${SW_RECEIVER_BUFFER_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
|
|
||||||
bufferDataMaxFileSize: ${SW_RECEIVER_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
|
|
||||||
bufferFileCleanWhenRestart: ${SW_RECEIVER_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
|
|
||||||
sampleRate: ${SW_TRACE_SAMPLE_RATE:10000} # The sample rate precision is 1/10000. 10000 means 100% sample in default.
|
|
||||||
slowDBAccessThreshold: ${SW_SLOW_DB_THRESHOLD:default:200,mongodb:100} # The slow database access thresholds. Unit ms.
|
|
||||||
receiver-jvm:
|
|
||||||
default:
|
|
||||||
receiver-clr:
|
|
||||||
default:
|
|
||||||
#receiver-so11y:
|
|
||||||
# default:
|
|
||||||
receiver-profile:
|
|
||||||
default:
|
|
||||||
service-mesh:
|
|
||||||
default:
|
|
||||||
bufferPath: ${SW_SERVICE_MESH_BUFFER_PATH:../mesh-buffer/} # Path to trace buffer files, suggest to use absolute path
|
|
||||||
bufferOffsetMaxFileSize: ${SW_SERVICE_MESH_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
|
|
||||||
bufferDataMaxFileSize: ${SW_SERVICE_MESH_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
|
|
||||||
bufferFileCleanWhenRestart: ${SW_SERVICE_MESH_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
|
|
||||||
istio-telemetry:
|
|
||||||
default:
|
|
||||||
envoy-metric:
|
|
||||||
default:
|
|
||||||
# alsHTTPAnalysis: ${SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS:k8s-mesh}
|
|
||||||
#receiver_zipkin:
|
|
||||||
# default:
|
|
||||||
# host: ${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0}
|
|
||||||
# port: ${SW_RECEIVER_ZIPKIN_PORT:9411}
|
|
||||||
# contextPath: ${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/}
|
|
||||||
#receiver_jaeger:
|
|
||||||
# default:
|
|
||||||
# gRPCHost: ${SW_RECEIVER_JAEGER_HOST:0.0.0.0}
|
|
||||||
# gRPCPort: ${SW_RECEIVER_JAEGER_PORT:14250}
|
|
||||||
query:
|
|
||||||
graphql:
|
|
||||||
path: ${SW_QUERY_GRAPHQL_PATH:/graphql}
|
|
||||||
alarm:
|
|
||||||
default:
|
|
||||||
telemetry:
|
|
||||||
none:
|
|
||||||
# prometheus:
|
|
||||||
# host: ${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}
|
|
||||||
# port: ${SW_TELEMETRY_PROMETHEUS_PORT:1234}
|
|
||||||
# so11y:
|
|
||||||
# prometheusExporterEnabled: ${SW_TELEMETRY_SO11Y_PROMETHEUS_ENABLED:true}
|
|
||||||
# prometheusExporterHost: ${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}
|
|
||||||
# prometheusExporterPort: ${SW_TELEMETRY_PROMETHEUS_PORT:1234}
|
|
||||||
configuration:
|
|
||||||
none:
|
|
||||||
# apollo:
|
|
||||||
# apolloMeta: http://106.12.25.204:8080
|
|
||||||
# apolloCluster: default
|
|
||||||
# # apolloEnv: # defaults to null
|
|
||||||
# appId: skywalking
|
|
||||||
# period: 5
|
|
||||||
# nacos:
|
|
||||||
# # Nacos Server Host
|
|
||||||
# serverAddr: 127.0.0.1
|
|
||||||
# # Nacos Server Port
|
|
||||||
# port: 8848
|
|
||||||
# # Nacos Configuration Group
|
|
||||||
# group: 'skywalking'
|
|
||||||
# # Nacos Configuration namespace
|
|
||||||
# namespace: ''
|
|
||||||
# # Unit seconds, sync period. Default fetch every 60 seconds.
|
|
||||||
# period : 5
|
|
||||||
# # the name of current cluster, set the name if you want to upstream system known.
|
|
||||||
# clusterName: "default"
|
|
||||||
# zookeeper:
|
|
||||||
# period : 60 # Unit seconds, sync period. Default fetch every 60 seconds.
|
|
||||||
# nameSpace: /default
|
|
||||||
# hostPort: localhost:2181
|
|
||||||
# #Retry Policy
|
|
||||||
# baseSleepTimeMs: 1000 # initial amount of time to wait between retries
|
|
||||||
# maxRetries: 3 # max number of times to retry
|
|
||||||
# etcd:
|
|
||||||
# period : 60 # Unit seconds, sync period. Default fetch every 60 seconds.
|
|
||||||
# group : 'skywalking'
|
|
||||||
# serverAddr: localhost:2379
|
|
||||||
# clusterName: "default"
|
|
||||||
# consul:
|
|
||||||
# # Consul host and ports, separated by comma, e.g. 1.2.3.4:8500,2.3.4.5:8500
|
|
||||||
# hostAndPorts: ${consul.address}
|
|
||||||
# # Sync period in seconds. Defaults to 60 seconds.
|
|
||||||
# period: 1
|
|
||||||
|
|
||||||
#exporter:
|
|
||||||
# grpc:
|
|
||||||
# targetHost: ${SW_EXPORTER_GRPC_HOST:127.0.0.1}
|
|
||||||
# targetPort: ${SW_EXPORTER_GRPC_PORT:9870}
|
|
||||||
|
|
@ -48,7 +48,7 @@ public class ApplicationConfiguration {
|
||||||
/**
|
/**
|
||||||
* The configurations about a certain module.
|
* The configurations about a certain module.
|
||||||
*/
|
*/
|
||||||
public class ModuleConfiguration {
|
public static class ModuleConfiguration {
|
||||||
private HashMap<String, ProviderConfiguration> providers = new HashMap<>();
|
private HashMap<String, ProviderConfiguration> providers = new HashMap<>();
|
||||||
|
|
||||||
private ModuleConfiguration() {
|
private ModuleConfiguration() {
|
||||||
|
|
@ -72,7 +72,7 @@ public class ApplicationConfiguration {
|
||||||
/**
|
/**
|
||||||
* The configuration about a certain provider of a module.
|
* The configuration about a certain provider of a module.
|
||||||
*/
|
*/
|
||||||
public class ProviderConfiguration {
|
public static class ProviderConfiguration {
|
||||||
private Properties properties;
|
private Properties properties;
|
||||||
|
|
||||||
ProviderConfiguration(Properties properties) {
|
ProviderConfiguration(Properties properties) {
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,10 @@ package org.apache.skywalking.oap.server.library.module;
|
||||||
|
|
||||||
public class ModuleConfigException extends Exception {
|
public class ModuleConfigException extends Exception {
|
||||||
|
|
||||||
|
public ModuleConfigException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
|
||||||
public ModuleConfigException(String message, Throwable cause) {
|
public ModuleConfigException(String message, Throwable cause) {
|
||||||
super(message, cause);
|
super(message, cause);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -47,11 +47,13 @@ public class PropertyPlaceholderHelperTest {
|
||||||
@Before
|
@Before
|
||||||
public void init() throws FileNotFoundException {
|
public void init() throws FileNotFoundException {
|
||||||
Reader applicationReader = ResourceUtils.read("application.yml");
|
Reader applicationReader = ResourceUtils.read("application.yml");
|
||||||
Map<String, Map<String, Map<String, ?>>> moduleConfig = yaml.loadAs(applicationReader, Map.class);
|
Map<String, Map<String, Object>> moduleConfig = yaml.loadAs(applicationReader, Map.class);
|
||||||
if (CollectionUtils.isNotEmpty(moduleConfig)) {
|
if (CollectionUtils.isNotEmpty(moduleConfig)) {
|
||||||
moduleConfig.forEach((moduleName, providerConfig) -> {
|
moduleConfig.forEach((moduleName, providerConfig) -> {
|
||||||
|
selectConfig(providerConfig);
|
||||||
if (providerConfig.size() > 0) {
|
if (providerConfig.size() > 0) {
|
||||||
providerConfig.forEach((name, propertiesConfig) -> {
|
providerConfig.forEach((name, config) -> {
|
||||||
|
final Map<String, ?> propertiesConfig = (Map<String, ?>) config;
|
||||||
if (propertiesConfig != null) {
|
if (propertiesConfig != null) {
|
||||||
propertiesConfig.forEach((key, value) -> properties.put(key, value));
|
propertiesConfig.forEach((key, value) -> properties.put(key, value));
|
||||||
}
|
}
|
||||||
|
|
@ -92,4 +94,18 @@ public class PropertyPlaceholderHelperTest {
|
||||||
//revert environment variables changes after the test for safe.
|
//revert environment variables changes after the test for safe.
|
||||||
environmentVariables.clear("REST_HOST");
|
environmentVariables.clear("REST_HOST");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void selectConfig(final Map<String, Object> configuration) {
|
||||||
|
if (configuration.size() <= 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (configuration.containsKey("selector")) {
|
||||||
|
final String selector = (String) configuration.get("selector");
|
||||||
|
final String resolvedSelector = PropertyPlaceholderHelper.INSTANCE.replacePlaceholders(
|
||||||
|
selector, System.getProperties()
|
||||||
|
);
|
||||||
|
configuration.entrySet().removeIf(e -> !resolvedSelector.equals(e.getKey()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,17 +14,19 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
cluster:
|
cluster:
|
||||||
|
selector: ${SW_CLUSTER:standalone}
|
||||||
standalone:
|
standalone:
|
||||||
# zookeeper:
|
zookeeper:
|
||||||
# hostPort: localhost:2181
|
hostPort: localhost:2181
|
||||||
# # Retry Policy
|
# Retry Policy
|
||||||
# baseSleepTimeMs: 1000 # initial amount of time to wait between retries
|
baseSleepTimeMs: 1000 # initial amount of time to wait between retries
|
||||||
# maxRetries: 3 # max number of times to retry
|
maxRetries: 3 # max number of times to retry
|
||||||
# kubernetes:
|
kubernetes:
|
||||||
# watchTimeoutSeconds: 60
|
watchTimeoutSeconds: 60
|
||||||
# namespace: default
|
namespace: default
|
||||||
# labelSelector: app=collector,release=skywalking
|
labelSelector: app=collector,release=skywalking
|
||||||
# uidEnvName: SKYWALKING_COLLECTOR_UID
|
uidEnvName: SKYWALKING_COLLECTOR_UID
|
||||||
|
|
||||||
core:
|
core:
|
||||||
default:
|
default:
|
||||||
restHost: ${REST_HOST:0.0.0.0}
|
restHost: ${REST_HOST:0.0.0.0}
|
||||||
|
|
@ -42,7 +44,9 @@ core:
|
||||||
hourMetricsDataTTL: ${HOUR_METRIC_DATA_TTL:36} # Unit is hour
|
hourMetricsDataTTL: ${HOUR_METRIC_DATA_TTL:36} # Unit is hour
|
||||||
dayMetricsDataTTL: ${DAY_METRIC_DATA_TTL:45} # Unit is day
|
dayMetricsDataTTL: ${DAY_METRIC_DATA_TTL:45} # Unit is day
|
||||||
monthMetricsDataTTL: ${MONTH_METRIC_DATA_TTL:18} # Unit is month
|
monthMetricsDataTTL: ${MONTH_METRIC_DATA_TTL:18} # Unit is month
|
||||||
|
|
||||||
storage:
|
storage:
|
||||||
|
selector: ${SW_STORAGE:elasticsearch}
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
clusterNodes: ${ES_CLUSTER_ADDRESS:localhost:9200}
|
clusterNodes: ${ES_CLUSTER_ADDRESS:localhost:9200}
|
||||||
indexShardsNumber: ${ES_INDEX_SHARDS_NUMBER:2}
|
indexShardsNumber: ${ES_INDEX_SHARDS_NUMBER:2}
|
||||||
|
|
@ -52,32 +56,41 @@ storage:
|
||||||
bulkSize: ${ES_BULK_SIZE:20} # flush the bulk every 20mb
|
bulkSize: ${ES_BULK_SIZE:20} # flush the bulk every 20mb
|
||||||
flushInterval: ${ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
|
flushInterval: ${ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
|
||||||
concurrentRequests: ${ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
|
concurrentRequests: ${ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
|
||||||
# h2:
|
|
||||||
# driver: org.h2.jdbcx.JdbcDataSource
|
h2:
|
||||||
# url: jdbc:h2:mem:skywalking-oap-db
|
driver: org.h2.jdbcx.JdbcDataSource
|
||||||
# user: sa
|
url: jdbc:h2:mem:skywalking-oap-db
|
||||||
|
user: sa
|
||||||
|
|
||||||
receiver-register:
|
receiver-register:
|
||||||
default:
|
default:
|
||||||
|
|
||||||
receiver-trace:
|
receiver-trace:
|
||||||
default:
|
default:
|
||||||
bufferPath: ${RECEIVER_BUFFER_PATH:../trace-buffer/} # Path to trace buffer files, suggest to use absolute path
|
bufferPath: ${RECEIVER_BUFFER_PATH:../trace-buffer/} # Path to trace buffer files, suggest to use absolute path
|
||||||
bufferOffsetMaxFileSize: ${RECEIVER_BUFFER_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
|
bufferOffsetMaxFileSize: ${RECEIVER_BUFFER_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
|
||||||
bufferDataMaxFileSize: ${RECEIVER_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
|
bufferDataMaxFileSize: ${RECEIVER_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
|
||||||
bufferFileCleanWhenRestart: ${RECEIVER_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
|
bufferFileCleanWhenRestart: ${RECEIVER_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
|
||||||
|
|
||||||
receiver-jvm:
|
receiver-jvm:
|
||||||
default:
|
default:
|
||||||
|
|
||||||
receiver-profile:
|
receiver-profile:
|
||||||
default:
|
default:
|
||||||
|
|
||||||
service-mesh:
|
service-mesh:
|
||||||
default:
|
default:
|
||||||
bufferPath: ${SERVICE_MESH_BUFFER_PATH:../mesh-buffer/} # Path to trace buffer files, suggest to use absolute path
|
bufferPath: ${SERVICE_MESH_BUFFER_PATH:../mesh-buffer/} # Path to trace buffer files, suggest to use absolute path
|
||||||
bufferOffsetMaxFileSize: ${SERVICE_MESH_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
|
bufferOffsetMaxFileSize: ${SERVICE_MESH_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
|
||||||
bufferDataMaxFileSize: ${SERVICE_MESH_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
|
bufferDataMaxFileSize: ${SERVICE_MESH_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
|
||||||
bufferFileCleanWhenRestart: ${SERVICE_MESH_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
|
bufferFileCleanWhenRestart: ${SERVICE_MESH_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
|
||||||
|
|
||||||
istio-telemetry:
|
istio-telemetry:
|
||||||
default:
|
default:
|
||||||
|
|
||||||
query:
|
query:
|
||||||
graphql:
|
graphql:
|
||||||
path: ${QUERY_GRAPHQL_PATH:/graphql}
|
path: ${QUERY_GRAPHQL_PATH:/graphql}
|
||||||
|
|
||||||
alarm:
|
alarm:
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ public class InfluxStorageProvider extends ModuleProvider {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String name() {
|
public String name() {
|
||||||
return "influx";
|
return "influxdb";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -114,10 +114,12 @@
|
||||||
<run>
|
<run>
|
||||||
<env>
|
<env>
|
||||||
<MODE>cluster</MODE>
|
<MODE>cluster</MODE>
|
||||||
|
<SW_STORAGE>${SW_STORAGE}</SW_STORAGE>
|
||||||
<ES_VERSION>${elasticsearch.version}</ES_VERSION>
|
<ES_VERSION>${elasticsearch.version}</ES_VERSION>
|
||||||
<SW_STORAGE_ES_CLUSTER_NODES>
|
<SW_STORAGE_ES_CLUSTER_NODES>
|
||||||
${e2e.container.name.prefix}-elasticsearch:9200
|
${e2e.container.name.prefix}-elasticsearch:9200
|
||||||
</SW_STORAGE_ES_CLUSTER_NODES>
|
</SW_STORAGE_ES_CLUSTER_NODES>
|
||||||
|
<SW_CLUSTER>zookeeper</SW_CLUSTER>
|
||||||
<SW_CLUSTER_ZK_HOST_PORT>
|
<SW_CLUSTER_ZK_HOST_PORT>
|
||||||
${e2e.container.name.prefix}-zookeeper:2181
|
${e2e.container.name.prefix}-zookeeper:2181
|
||||||
</SW_CLUSTER_ZK_HOST_PORT>
|
</SW_CLUSTER_ZK_HOST_PORT>
|
||||||
|
|
|
||||||
|
|
@ -1,96 +0,0 @@
|
||||||
# Licensed to the Apache Software Foundation (ASF) under one
|
|
||||||
# or more contributor license agreements. See the NOTICE file
|
|
||||||
# distributed with this work for additional information
|
|
||||||
# regarding copyright ownership. The ASF licenses this file
|
|
||||||
# to you under the Apache License, Version 2.0 (the
|
|
||||||
# "License"); you may not use this file except in compliance
|
|
||||||
# with the License. You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
#!/usr/bin/awk -f
|
|
||||||
|
|
||||||
BEGIN {
|
|
||||||
in_cluster_section=0;
|
|
||||||
in_cluster_zk_section=0;
|
|
||||||
|
|
||||||
in_storage_section=0;
|
|
||||||
in_storage_es_section=0;
|
|
||||||
in_storage_h2_section=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
if (in_cluster_section == 0) {
|
|
||||||
in_cluster_section=$0 ~ /^cluster:$/
|
|
||||||
} else {
|
|
||||||
in_cluster_section=$0 ~ /^(#|\s{2})/
|
|
||||||
}
|
|
||||||
if (in_storage_section == 0) {
|
|
||||||
in_storage_section=$0 ~ /^storage:$/
|
|
||||||
} else {
|
|
||||||
in_storage_section=$0 ~ /^(#|\s{2})/
|
|
||||||
}
|
|
||||||
|
|
||||||
if (in_cluster_section == 1) {
|
|
||||||
# in the cluster: section now
|
|
||||||
# disable standalone module
|
|
||||||
if ($0 ~ /^ standalone:$/) {
|
|
||||||
print "#" $0
|
|
||||||
} else {
|
|
||||||
if (in_cluster_zk_section == 0) {
|
|
||||||
in_cluster_zk_section=$0 ~ /^#?\s+zookeeper:$/
|
|
||||||
} else {
|
|
||||||
in_cluster_zk_section=$0 ~ /^(#\s{4}|\s{2})/
|
|
||||||
}
|
|
||||||
if (in_cluster_zk_section == 1) {
|
|
||||||
# in the cluster.zookeeper section now
|
|
||||||
# uncomment zk config
|
|
||||||
gsub("^#", "", $0)
|
|
||||||
print
|
|
||||||
} else {
|
|
||||||
print
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (in_storage_section == 1) {
|
|
||||||
# in the storage: section now
|
|
||||||
# disable h2 module
|
|
||||||
if (in_storage_es_section == 0) {
|
|
||||||
if (ENVIRON["ES_VERSION"] ~ /^6.+/) {
|
|
||||||
in_storage_es_section=$0 ~ /^#?\s+elasticsearch:$/
|
|
||||||
} else if (ENVIRON["ES_VERSION"] ~ /^7.+/) {
|
|
||||||
in_storage_es_section=$0 ~ /^#?\s+elasticsearch7:$/
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
in_storage_es_section=$0 ~ /^#?\s{4}/
|
|
||||||
}
|
|
||||||
if (in_storage_h2_section == 0) {
|
|
||||||
in_storage_h2_section=$0 ~ /^#?\s+h2:$/
|
|
||||||
} else {
|
|
||||||
in_storage_h2_section=$0 ~ /^#?\s{4}/
|
|
||||||
}
|
|
||||||
if (in_storage_es_section == 1) {
|
|
||||||
# in the storage.elasticsearch section now
|
|
||||||
# uncomment es config
|
|
||||||
gsub("^#", "", $0)
|
|
||||||
print
|
|
||||||
} else if (in_storage_h2_section == 1) {
|
|
||||||
# comment out h2 config
|
|
||||||
if ($0 !~ /^#/) {
|
|
||||||
print "#" $0
|
|
||||||
} else {
|
|
||||||
print
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -20,8 +20,6 @@ if test "${MODE}" = "cluster"; then
|
||||||
|
|
||||||
# substitute application.yml to be capable of cluster mode
|
# substitute application.yml to be capable of cluster mode
|
||||||
cd ${SW_HOME}/config \
|
cd ${SW_HOME}/config \
|
||||||
&& gawk -f /clusterize.awk application.yml > clusterized_app.yml \
|
|
||||||
&& mv clusterized_app.yml application.yml \
|
|
||||||
&& echo '
|
&& echo '
|
||||||
gateways:
|
gateways:
|
||||||
- name: proxy0
|
- name: proxy0
|
||||||
|
|
|
||||||
|
|
@ -111,6 +111,7 @@
|
||||||
<env>
|
<env>
|
||||||
<MODE>cluster</MODE>
|
<MODE>cluster</MODE>
|
||||||
<STORAGE>elasticsearch</STORAGE>
|
<STORAGE>elasticsearch</STORAGE>
|
||||||
|
<SW_STORAGE>${SW_STORAGE}</SW_STORAGE>
|
||||||
<ES_VERSION>${elasticsearch.version}</ES_VERSION>
|
<ES_VERSION>${elasticsearch.version}</ES_VERSION>
|
||||||
<SW_STORAGE_ES_CLUSTER_NODES>
|
<SW_STORAGE_ES_CLUSTER_NODES>
|
||||||
${e2e.container.name.prefix}-elasticsearch:9200
|
${e2e.container.name.prefix}-elasticsearch:9200
|
||||||
|
|
@ -250,6 +251,7 @@
|
||||||
<run>
|
<run>
|
||||||
<env>
|
<env>
|
||||||
<MODE>cluster</MODE>
|
<MODE>cluster</MODE>
|
||||||
|
<SW_STORAGE>${SW_STORAGE}</SW_STORAGE>
|
||||||
<STORAGE>influxdb</STORAGE>
|
<STORAGE>influxdb</STORAGE>
|
||||||
<SW_STORAGE_METABASE_TYPE>mysql</SW_STORAGE_METABASE_TYPE>
|
<SW_STORAGE_METABASE_TYPE>mysql</SW_STORAGE_METABASE_TYPE>
|
||||||
<SW_STORAGE_METABASE_URL>
|
<SW_STORAGE_METABASE_URL>
|
||||||
|
|
|
||||||
|
|
@ -1,101 +0,0 @@
|
||||||
# Licensed to the Apache Software Foundation (ASF) under one
|
|
||||||
# or more contributor license agreements. See the NOTICE file
|
|
||||||
# distributed with this work for additional information
|
|
||||||
# regarding copyright ownership. The ASF licenses this file
|
|
||||||
# to you under the Apache License, Version 2.0 (the
|
|
||||||
# "License"); you may not use this file except in compliance
|
|
||||||
# with the License. You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
#!/usr/bin/awk -f
|
|
||||||
|
|
||||||
BEGIN {
|
|
||||||
in_cluster_section=0;
|
|
||||||
in_cluster_zk_section=0;
|
|
||||||
|
|
||||||
in_storage_section=0;
|
|
||||||
in_storage_h2_section=0;
|
|
||||||
in_storage_selected=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
if (in_cluster_section == 0) {
|
|
||||||
in_cluster_section=$0 ~ /^cluster:$/
|
|
||||||
} else {
|
|
||||||
in_cluster_section=$0 ~ /^(#|\s{2})/
|
|
||||||
}
|
|
||||||
if (in_storage_section == 0) {
|
|
||||||
in_storage_section=$0 ~ /^storage:$/
|
|
||||||
} else {
|
|
||||||
in_storage_section=$0 ~ /^(#|\s{2})/
|
|
||||||
}
|
|
||||||
|
|
||||||
if (in_cluster_section == 1) {
|
|
||||||
# in the cluster: section now
|
|
||||||
# disable standalone module
|
|
||||||
if ($0 ~ /^ standalone:$/) {
|
|
||||||
print "#" $0
|
|
||||||
} else {
|
|
||||||
if (in_cluster_zk_section == 0) {
|
|
||||||
in_cluster_zk_section=$0 ~ /^#?\s+zookeeper:$/
|
|
||||||
} else {
|
|
||||||
in_cluster_zk_section=$0 ~ /^(#\s{4}|\s{2})/
|
|
||||||
}
|
|
||||||
if (in_cluster_zk_section == 1) {
|
|
||||||
# in the cluster.zookeeper section now
|
|
||||||
# uncomment zk config
|
|
||||||
gsub("^#", "", $0)
|
|
||||||
print
|
|
||||||
} else {
|
|
||||||
print
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (in_storage_section == 1) {
|
|
||||||
# in the storage: section now
|
|
||||||
# disable h2 module
|
|
||||||
if (in_storage_selected == 0) {
|
|
||||||
if (ENVIRON["STORAGE"] == "elasticsearch") {
|
|
||||||
if (ENVIRON["ES_VERSION"] ~ /^6.+/) {
|
|
||||||
in_storage_selected=$0 ~ /^#?\s+elasticsearch:$/
|
|
||||||
} else if (ENVIRON["ES_VERSION"] ~ /^7.+/) {
|
|
||||||
in_storage_selected=$0 ~ /^#?\s+elasticsearch7:$/
|
|
||||||
}
|
|
||||||
} else if (ENVIRON["STORAGE"] == "influxdb") {
|
|
||||||
in_storage_selected=$0 ~ /^#?\s+influx:$/
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
in_storage_selected=$0 ~ /^#?\s{4}/
|
|
||||||
}
|
|
||||||
|
|
||||||
if (in_storage_h2_section == 0) {
|
|
||||||
in_storage_h2_section=$0 ~ /^#?\s+h2:$/
|
|
||||||
} else {
|
|
||||||
in_storage_h2_section=$0 ~ /^#?\s{4}/
|
|
||||||
}
|
|
||||||
|
|
||||||
if (in_storage_selected == 1) {
|
|
||||||
# enable selected storage
|
|
||||||
# uncomment es/influx config
|
|
||||||
gsub("^#", "", $0)
|
|
||||||
print
|
|
||||||
} else if (in_storage_h2_section == 1) {
|
|
||||||
# comment out h2 config
|
|
||||||
if ($0 !~ /^#/) {
|
|
||||||
print "#" $0
|
|
||||||
} else {
|
|
||||||
print
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -29,8 +29,6 @@ if test "${MODE}" = "cluster"; then
|
||||||
|
|
||||||
# substitute application.yml to be capable of cluster mode
|
# substitute application.yml to be capable of cluster mode
|
||||||
cd ${SW_HOME}/config \
|
cd ${SW_HOME}/config \
|
||||||
&& gawk -f /clusterize.awk application.yml > clusterized_app.yml \
|
|
||||||
&& mv clusterized_app.yml application.yml \
|
|
||||||
&& sed '/<Loggers>/a<logger name="org.apache.skywalking.oap.server.receiver.trace.provider.UninstrumentedGatewaysConfig" level="DEBUG"/>\
|
&& sed '/<Loggers>/a<logger name="org.apache.skywalking.oap.server.receiver.trace.provider.UninstrumentedGatewaysConfig" level="DEBUG"/>\
|
||||||
\n<logger name="org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener.service.ServiceMappingSpanListener" level="DEBUG"/>' log4j2.xml > log4j2debuggable.xml \
|
\n<logger name="org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener.service.ServiceMappingSpanListener" level="DEBUG"/>' log4j2.xml > log4j2debuggable.xml \
|
||||||
&& mv log4j2debuggable.xml log4j2.xml
|
&& mv log4j2debuggable.xml log4j2.xml
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,7 @@ storage:
|
||||||
# dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
# dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
||||||
# dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
|
# dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
|
||||||
# metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
|
# metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
|
||||||
influx:
|
influxdb:
|
||||||
# Metadata storage provider configuration
|
# Metadata storage provider configuration
|
||||||
metabaseType: ${SW_STORAGE_METABASE_TYPE:H2} # There are 2 options as Metabase provider, H2 or MySQL.
|
metabaseType: ${SW_STORAGE_METABASE_TYPE:H2} # There are 2 options as Metabase provider, H2 or MySQL.
|
||||||
h2Props:
|
h2Props:
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ BEGIN {
|
||||||
} else if (ENVIRON["STORAGE"] ~ /^h2.*$/) {
|
} else if (ENVIRON["STORAGE"] ~ /^h2.*$/) {
|
||||||
in_storage_type_section=$0 ~ /^#?\s+h2:$/
|
in_storage_type_section=$0 ~ /^#?\s+h2:$/
|
||||||
} else if (ENVIRON["STORAGE"] ~ /^influx.*$/) {
|
} else if (ENVIRON["STORAGE"] ~ /^influx.*$/) {
|
||||||
in_storage_type_section=$0 ~ /^#?\s+influx:$/
|
in_storage_type_section=$0 ~ /^#?\s+influxdb:$/
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
in_storage_type_section=$0 ~ /^#?\s{4}/
|
in_storage_type_section=$0 ~ /^#?\s{4}/
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,7 @@
|
||||||
<run>
|
<run>
|
||||||
<env>
|
<env>
|
||||||
<MODE>standalone</MODE>
|
<MODE>standalone</MODE>
|
||||||
|
<SW_STORAGE>${SW_STORAGE}</SW_STORAGE>
|
||||||
<ES_VERSION>${elasticsearch.version}</ES_VERSION>
|
<ES_VERSION>${elasticsearch.version}</ES_VERSION>
|
||||||
<SW_STORAGE_ES_CLUSTER_NODES>
|
<SW_STORAGE_ES_CLUSTER_NODES>
|
||||||
${e2e.container.name.prefix}-elasticsearch:9200
|
${e2e.container.name.prefix}-elasticsearch:9200
|
||||||
|
|
|
||||||
|
|
@ -1,68 +0,0 @@
|
||||||
# Licensed to the Apache Software Foundation (ASF) under one
|
|
||||||
# or more contributor license agreements. See the NOTICE file
|
|
||||||
# distributed with this work for additional information
|
|
||||||
# regarding copyright ownership. The ASF licenses this file
|
|
||||||
# to you under the Apache License, Version 2.0 (the
|
|
||||||
# "License"); you may not use this file except in compliance
|
|
||||||
# with the License. You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
#!/usr/bin/awk -f
|
|
||||||
|
|
||||||
BEGIN {
|
|
||||||
in_storage_section=0;
|
|
||||||
in_storage_es_section=0;
|
|
||||||
in_storage_h2_section=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
if (in_storage_section == 0) {
|
|
||||||
in_storage_section=$0 ~ /^storage:$/
|
|
||||||
} else {
|
|
||||||
in_storage_section=$0 ~ /^(#|\s{2})/
|
|
||||||
}
|
|
||||||
|
|
||||||
if (in_storage_section == 1) {
|
|
||||||
# in the storage: section now
|
|
||||||
# disable h2 module
|
|
||||||
if (in_storage_es_section == 0) {
|
|
||||||
if (ENVIRON["ES_VERSION"] ~ /^6.+/) {
|
|
||||||
in_storage_es_section=$0 ~ /^#?\s+elasticsearch:$/
|
|
||||||
} else if (ENVIRON["ES_VERSION"] ~ /^7.+/) {
|
|
||||||
in_storage_es_section=$0 ~ /^#?\s+elasticsearch7:$/
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
in_storage_es_section=$0 ~ /^#?\s{4}/
|
|
||||||
}
|
|
||||||
if (in_storage_h2_section == 0) {
|
|
||||||
in_storage_h2_section=$0 ~ /^#?\s+h2:$/
|
|
||||||
} else {
|
|
||||||
in_storage_h2_section=$0 ~ /^#?\s{4}/
|
|
||||||
}
|
|
||||||
if (in_storage_es_section == 1) {
|
|
||||||
# in the storage.elasticsearch section now
|
|
||||||
# uncomment es config
|
|
||||||
gsub("^#", "", $0)
|
|
||||||
print
|
|
||||||
} else if (in_storage_h2_section == 1) {
|
|
||||||
# comment out h2 config
|
|
||||||
if ($0 !~ /^#/) {
|
|
||||||
print "#" $0
|
|
||||||
} else {
|
|
||||||
print
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -19,8 +19,6 @@ original_wd=$(pwd)
|
||||||
|
|
||||||
# substitute application.yml to be capable of es mode
|
# substitute application.yml to be capable of es mode
|
||||||
cd ${SW_HOME}/config \
|
cd ${SW_HOME}/config \
|
||||||
&& gawk -f /es_storage.awk application.yml > es_storage_app.yml \
|
|
||||||
&& mv es_storage_app.yml application.yml \
|
|
||||||
&& cp /ttl_official_analysis.oal official_analysis.oal \
|
&& cp /ttl_official_analysis.oal official_analysis.oal \
|
||||||
&& sed '/<Loggers>/a<logger name="org.apache.skywalking.oap.server.storage" level="DEBUG"/>' log4j2.xml > log4j2debuggable.xml \
|
&& sed '/<Loggers>/a<logger name="org.apache.skywalking.oap.server.storage" level="DEBUG"/>' log4j2.xml > log4j2debuggable.xml \
|
||||||
&& mv log4j2debuggable.xml log4j2.xml
|
&& mv log4j2debuggable.xml log4j2.xml
|
||||||
|
|
|
||||||
|
|
@ -94,6 +94,7 @@
|
||||||
<run>
|
<run>
|
||||||
<env>
|
<env>
|
||||||
<MODE>standalone</MODE>
|
<MODE>standalone</MODE>
|
||||||
|
<SW_STORAGE>${SW_STORAGE}</SW_STORAGE>
|
||||||
<SW_STORAGE_INFLUXDB_URL>http://${e2e.container.name.prefix}-influxdb:8086</SW_STORAGE_INFLUXDB_URL>
|
<SW_STORAGE_INFLUXDB_URL>http://${e2e.container.name.prefix}-influxdb:8086</SW_STORAGE_INFLUXDB_URL>
|
||||||
</env>
|
</env>
|
||||||
<dependsOn>
|
<dependsOn>
|
||||||
|
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
||||||
# Licensed to the Apache Software Foundation (ASF) under one
|
|
||||||
# or more contributor license agreements. See the NOTICE file
|
|
||||||
# distributed with this work for additional information
|
|
||||||
# regarding copyright ownership. The ASF licenses this file
|
|
||||||
# to you under the Apache License, Version 2.0 (the
|
|
||||||
# "License"); you may not use this file except in compliance
|
|
||||||
# with the License. You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
#!/usr/bin/awk -f
|
|
||||||
|
|
||||||
BEGIN {
|
|
||||||
in_storage_section=0;
|
|
||||||
in_storage_influx_section=0;
|
|
||||||
in_storage_h2_section=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
if (in_storage_section == 0) {
|
|
||||||
in_storage_section=$0 ~ /^storage:$/
|
|
||||||
} else {
|
|
||||||
in_storage_section=$0 ~ /^(#|\s{2})/
|
|
||||||
}
|
|
||||||
|
|
||||||
if (in_storage_section == 1) {
|
|
||||||
# in the storage: section now
|
|
||||||
# disable h2 module
|
|
||||||
if (in_storage_influx_section == 0) {
|
|
||||||
in_storage_influx_section=$0 ~ /^#?\s+influx:$/
|
|
||||||
} else {
|
|
||||||
in_storage_influx_section=$0 ~ /^#?\s{4}/
|
|
||||||
}
|
|
||||||
if (in_storage_h2_section == 0) {
|
|
||||||
in_storage_h2_section=$0 ~ /^#?\s+h2:$/
|
|
||||||
} else {
|
|
||||||
in_storage_h2_section=$0 ~ /^#?\s{4}/
|
|
||||||
}
|
|
||||||
if (in_storage_influx_section == 1) {
|
|
||||||
# in the storage.influxdb section now
|
|
||||||
# uncomment influx config
|
|
||||||
gsub("^#", "", $0)
|
|
||||||
print
|
|
||||||
} else if (in_storage_h2_section == 1) {
|
|
||||||
# comment out h2 config
|
|
||||||
if ($0 !~ /^#/) {
|
|
||||||
print "#" $0
|
|
||||||
} else {
|
|
||||||
print
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -19,8 +19,6 @@ original_wd=$(pwd)
|
||||||
|
|
||||||
# substitute application.yml to be capable of es mode
|
# substitute application.yml to be capable of es mode
|
||||||
cd ${SW_HOME}/config \
|
cd ${SW_HOME}/config \
|
||||||
&& gawk -f /influx_storage.awk application.yml > influx_storage_app.yml \
|
|
||||||
&& mv influx_storage_app.yml application.yml \
|
|
||||||
&& cp /ttl_official_analysis.oal official_analysis.oal \
|
&& cp /ttl_official_analysis.oal official_analysis.oal \
|
||||||
&& sed '/<Loggers>/a<logger name="org.apache.skywalking.oap.server.storage" level="DEBUG"/>' log4j2.xml > log4j2debuggable.xml \
|
&& sed '/<Loggers>/a<logger name="org.apache.skywalking.oap.server.storage" level="DEBUG"/>' log4j2.xml > log4j2debuggable.xml \
|
||||||
&& mv log4j2debuggable.xml log4j2.xml
|
&& mv log4j2debuggable.xml log4j2.xml
|
||||||
|
|
|
||||||
|
|
@ -69,10 +69,16 @@ do
|
||||||
# so we give each test a separate distribution folder here
|
# so we give each test a separate distribution folder here
|
||||||
mkdir -p "$test_case" && tar -zxf dist/${DIST_PACKAGE} -C "$test_case"
|
mkdir -p "$test_case" && tar -zxf dist/${DIST_PACKAGE} -C "$test_case"
|
||||||
|
|
||||||
|
SW_STORAGE=${storage}
|
||||||
|
if [[ ${storage} = "elasticsearch" && ${ES_VERSION} =~ ^7 ]]; then
|
||||||
|
SW_STORAGE=elasticsearch7
|
||||||
|
fi
|
||||||
|
|
||||||
./mvnw --batch-mode -Dbuild.id="${BUILD_ID:-local}" \
|
./mvnw --batch-mode -Dbuild.id="${BUILD_ID:-local}" \
|
||||||
-De2e.container.version="${E2E_VERSION}" \
|
-De2e.container.version="${E2E_VERSION}" \
|
||||||
-Delasticsearch.version="${ES_VERSION}" \
|
-Delasticsearch.version="${ES_VERSION}" \
|
||||||
-Dsw.home="${base_dir}/$test_case/${DIST_PACKAGE//.tar.gz/}" \
|
-Dsw.home="${base_dir}/$test_case/${DIST_PACKAGE//.tar.gz/}" \
|
||||||
|
-DSW_STORAGE=${SW_STORAGE} \
|
||||||
`if [ ! -z "${storage}" ] ; then echo -P"${storage}"; fi` \
|
`if [ ! -z "${storage}" ] ; then echo -P"${storage}"; fi` \
|
||||||
-f test/e2e/pom.xml -pl "$test_case" -am verify
|
-f test/e2e/pom.xml -pl "$test_case" -am verify
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,31 +16,32 @@
|
||||||
core:
|
core:
|
||||||
tool-profile-mock-core:
|
tool-profile-mock-core:
|
||||||
storage:
|
storage:
|
||||||
# elasticsearch:
|
selector: ${SW_STORAGE:h2}
|
||||||
# nameSpace: ${SW_NAMESPACE:""}
|
elasticsearch:
|
||||||
# clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
|
nameSpace: ${SW_NAMESPACE:""}
|
||||||
# protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
|
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
|
||||||
# #trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
|
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
|
||||||
# #trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
|
#trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
|
||||||
# user: ${SW_ES_USER:""}
|
#trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
|
||||||
# password: ${SW_ES_PASSWORD:""}
|
user: ${SW_ES_USER:""}
|
||||||
# enablePackedDownsampling: ${SW_STORAGE_ENABLE_PACKED_DOWNSAMPLING:true} # Hour and Day metrics will be merged into minute index.
|
password: ${SW_ES_PASSWORD:""}
|
||||||
# dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index.
|
enablePackedDownsampling: ${SW_STORAGE_ENABLE_PACKED_DOWNSAMPLING:true} # Hour and Day metrics will be merged into minute index.
|
||||||
# indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
|
dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index.
|
||||||
# indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
|
indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
|
||||||
# # Those data TTL settings will override the same settings in core module.
|
indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
|
||||||
# recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
|
# Those data TTL settings will override the same settings in core module.
|
||||||
# otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
|
recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
|
||||||
# monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
|
otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
|
||||||
# # Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
|
monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
|
||||||
# bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000} # Execute the bulk every 1000 requests
|
# Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
|
||||||
# flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
|
bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000} # Execute the bulk every 1000 requests
|
||||||
# concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
|
flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
|
||||||
# resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
|
concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
|
||||||
# metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
|
resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
|
||||||
# segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
|
metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
|
||||||
# profileTaskQueryMaxSize: ${SW_STORAGE_ES_QUERY_PROFILE_TASK_SIZE:200}
|
segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
|
||||||
# advanced: ${SW_STORAGE_ES_ADVANCED:""}
|
profileTaskQueryMaxSize: ${SW_STORAGE_ES_QUERY_PROFILE_TASK_SIZE:200}
|
||||||
|
advanced: ${SW_STORAGE_ES_ADVANCED:""}
|
||||||
elasticsearch7:
|
elasticsearch7:
|
||||||
nameSpace: ${SW_NAMESPACE:""}
|
nameSpace: ${SW_NAMESPACE:""}
|
||||||
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
|
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
|
||||||
|
|
@ -65,45 +66,47 @@ storage:
|
||||||
metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
|
metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
|
||||||
segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
|
segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
|
||||||
advanced: ${SW_STORAGE_ES_ADVANCED:""}
|
advanced: ${SW_STORAGE_ES_ADVANCED:""}
|
||||||
# h2:
|
h2:
|
||||||
# driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
|
driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
|
||||||
# url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
|
url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
|
||||||
# user: ${SW_STORAGE_H2_USER:sa}
|
user: ${SW_STORAGE_H2_USER:sa}
|
||||||
# metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
|
metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
|
||||||
# mysql:
|
mysql:
|
||||||
# properties:
|
properties:
|
||||||
# jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
|
jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
|
||||||
# dataSource.user: ${SW_DATA_SOURCE_USER:root}
|
dataSource.user: ${SW_DATA_SOURCE_USER:root}
|
||||||
# dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root@1234}
|
dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root@1234}
|
||||||
# dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
|
dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
|
||||||
# dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
|
dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
|
||||||
# dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
||||||
# dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
|
dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
|
||||||
# metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
|
metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
|
||||||
# influx:
|
influxdb:
|
||||||
# # Metadata storage provider configuration
|
# Metadata storage provider configuration
|
||||||
# metabaseType: ${SW_STORAGE_METABASE_TYPE:H2} # There are 2 options as Metabase provider, H2 or MySQL.
|
metabaseType: ${SW_STORAGE_METABASE_TYPE:H2} # There are 2 options as Metabase provider, H2 or MySQL.
|
||||||
# h2Props:
|
h2Props:
|
||||||
# dataSourceClassName: ${SW_STORAGE_METABASE_DRIVER:org.h2.jdbcx.JdbcDataSource}
|
dataSourceClassName: ${SW_STORAGE_METABASE_DRIVER:org.h2.jdbcx.JdbcDataSource}
|
||||||
# dataSource.url: ${SW_STORAGE_METABASE_URL:jdbc:h2:mem:skywalking-oap-db}
|
dataSource.url: ${SW_STORAGE_METABASE_URL:jdbc:h2:mem:skywalking-oap-db}
|
||||||
# dataSource.user: ${SW_STORAGE_METABASE_USER:sa}
|
dataSource.user: ${SW_STORAGE_METABASE_USER:sa}
|
||||||
# dataSource.password: ${SW_STORAGE_METABASE_PASSWORD:}
|
dataSource.password: ${SW_STORAGE_METABASE_PASSWORD:}
|
||||||
# mysqlProps:
|
mysqlProps:
|
||||||
# jdbcUrl: ${SW_STORAGE_METABASE_URL:"jdbc:mysql://localhost:3306/swtest"}
|
jdbcUrl: ${SW_STORAGE_METABASE_URL:"jdbc:mysql://localhost:3306/swtest"}
|
||||||
# dataSource.user: ${SW_STORAGE_METABASE_USER:root}
|
dataSource.user: ${SW_STORAGE_METABASE_USER:root}
|
||||||
# dataSource.password: ${SW_STORAGE_METABASE_PASSWORD:root@1234}
|
dataSource.password: ${SW_STORAGE_METABASE_PASSWORD:root@1234}
|
||||||
# dataSource.cachePrepStmts: ${SW_STORAGE_METABASE_CACHE_PREP_STMTS:true}
|
dataSource.cachePrepStmts: ${SW_STORAGE_METABASE_CACHE_PREP_STMTS:true}
|
||||||
# dataSource.prepStmtCacheSize: ${SW_STORAGE_METABASE_PREP_STMT_CACHE_SQL_SIZE:250}
|
dataSource.prepStmtCacheSize: ${SW_STORAGE_METABASE_PREP_STMT_CACHE_SQL_SIZE:250}
|
||||||
# dataSource.prepStmtCacheSqlLimit: ${SW_STORAGE_METABASE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
dataSource.prepStmtCacheSqlLimit: ${SW_STORAGE_METABASE_PREP_STMT_CACHE_SQL_LIMIT:2048}
|
||||||
# dataSource.useServerPrepStmts: ${SW_STORAGE_METABASE_USE_SERVER_PREP_STMTS:true}
|
dataSource.useServerPrepStmts: ${SW_STORAGE_METABASE_USE_SERVER_PREP_STMTS:true}
|
||||||
# metadataQueryMaxSize: ${SW_STORAGE_METABASE_QUERY_MAX_SIZE:5000}
|
metadataQueryMaxSize: ${SW_STORAGE_METABASE_QUERY_MAX_SIZE:5000}
|
||||||
# # InfluxDB configuration
|
# InfluxDB configuration
|
||||||
# url: ${SW_STORAGE_INFLUXDB_URL:http://localhost:8086}
|
url: ${SW_STORAGE_INFLUXDB_URL:http://localhost:8086}
|
||||||
# user: ${SW_STORAGE_INFLUXDB_USER:root}
|
user: ${SW_STORAGE_INFLUXDB_USER:root}
|
||||||
# password: ${SW_STORAGE_INFLUXDB_PASSWORD:}
|
password: ${SW_STORAGE_INFLUXDB_PASSWORD:}
|
||||||
# database: ${SW_STORAGE_INFLUXDB_DATABASE:skywalking}
|
database: ${SW_STORAGE_INFLUXDB_DATABASE:skywalking}
|
||||||
# actions: ${SW_STORAGE_INFLUXDB_ACTIONS:1000} # the number of actions to collect
|
actions: ${SW_STORAGE_INFLUXDB_ACTIONS:1000} # the number of actions to collect
|
||||||
# duration: ${SW_STORAGE_INFLUXDB_DURATION:1000} # the time to wait at most (milliseconds)
|
duration: ${SW_STORAGE_INFLUXDB_DURATION:1000} # the time to wait at most (milliseconds)
|
||||||
# fetchTaskLogMaxSize: ${SW_STORAGE_INFLUXDB_FETCH_TASK_LOG_MAX_SIZE:5000} # the max number of fetch task log in a request
|
fetchTaskLogMaxSize: ${SW_STORAGE_INFLUXDB_FETCH_TASK_LOG_MAX_SIZE:5000} # the max number of fetch task log in a request
|
||||||
|
|
||||||
telemetry:
|
telemetry:
|
||||||
|
selector: ${SW_TELEMETRY:none}
|
||||||
none:
|
none:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue