Dynamic Configuration

SkyWalking Configurations mostly are set through application.yml and OS system environment variables. At the same time, some of them are supporting dynamic settings from upstream management system.

Right now, SkyWalking supports following dynamic configurations.

Config Key Value Description Value Format Example
agent-analyzer.default.slowDBAccessThreshold Thresholds of slow Database statement, override receiver-trace/default/slowDBAccessThreshold of application.yml. default:200,mongodb:50
agent-analyzer.default.uninstrumentedGateways The uninstrumented gateways, override gateways.yml. same as gateways.yml
alarm.default.alarm-settings The alarm settings, will override alarm-settings.yml. same as alarm-settings.yml
core.default.apdexThreshold The apdex threshold settings, will override service-apdex-threshold.yml. same as service-apdex-threshold.yml
core.default.endpoint-name-grouping The endpoint name grouping setting, will override endpoint-name-grouping.yml. same as endpoint-name-grouping.yml
core.default.log4j-xml The log4j xml configuration, will override log4j2.xml. same as log4j2.xml
agent-analyzer.default.sampleRate Trace sampling , override receiver-trace/default/sampleRate of application.yml. 10000
agent-analyzer.default.slowTraceSegmentThreshold Setting this threshold about the latency would make the slow trace segments sampled if they cost more time, even the sampling mechanism activated. The default value is -1, which means would not sample slow traces. Unit, millisecond. override receiver-trace/default/slowTraceSegmentThreshold of application.yml. -1
configuration-discovery.default.agentConfigurations The ConfigurationDiscovery settings look at configuration-discovery.md

This feature depends on upstream service, so it is DISABLED by default.

configuration:
  selector: ${SW_CONFIGURATION:none}
  none:
  grpc:
    host: ${SW_DCS_SERVER_HOST:""}
    port: ${SW_DCS_SERVER_PORT:80}
    clusterName: ${SW_DCS_CLUSTER_NAME:SkyWalking}
    period: ${SW_DCS_PERIOD:20}
  # ... other implementations

Dynamic Configuration Service, DCS

Dynamic Configuration Service is a gRPC service, which requires the upstream system implemented. The SkyWalking OAP fetches the configuration from the implementation(any system), after you open this implementation like this.

configuration:
  selector: ${SW_CONFIGURATION:grpc}
  grpc:
    host: ${SW_DCS_SERVER_HOST:""}
    port: ${SW_DCS_SERVER_PORT:80}
    clusterName: ${SW_DCS_CLUSTER_NAME:SkyWalking}
    period: ${SW_DCS_PERIOD:20}

Dynamic Configuration Zookeeper Implementation

Zookeeper is also supported as DCC(Dynamic Configuration Center), to use it, please configure as follows:

configuration:
  selector: ${SW_CONFIGURATION:zookeeper}
  zookeeper:
    period: ${SW_CONFIG_ZK_PERIOD:60} # Unit seconds, sync period. Default fetch every 60 seconds.
    nameSpace: ${SW_CONFIG_ZK_NAMESPACE:/default}
    hostPort: ${SW_CONFIG_ZK_HOST_PORT:localhost:2181}
    # Retry Policy
    baseSleepTimeMs: ${SW_CONFIG_ZK_BASE_SLEEP_TIME_MS:1000} # initial amount of time to wait between retries
    maxRetries: ${SW_CONFIG_ZK_MAX_RETRIES:3} # max number of times to retry

The nameSpace is the ZooKeeper path. The config key and value are the properties of the namespace folder.

Dynamic Configuration Etcd Implementation

Etcd is also supported as DCC(Dynamic Configuration Center), to use it, please configure as follows:

configuration:
  selector: ${SW_CONFIGURATION:etcd}
  etcd:
    period: ${SW_CONFIG_ETCD_PERIOD:60} # Unit seconds, sync period. Default fetch every 60 seconds.
    endpoints: ${SW_CONFIG_ETCD_ENDPOINTS:localhost:2379}
    namespace: ${SW_CONFIG_ETCD_NAMESPACE:/skywalking}
    authentication: ${SW_CONFIG_ETCD_AUTHENTICATION:false}
    user: ${SW_CONFIG_ETCD_USER:}
    password: ${SW_CONFIG_ETCD_password:}

NOTICE, only the v3 protocol is supported since 8.7.0.

Dynamic Configuration Consul Implementation

Consul is also supported as DCC(Dynamic Configuration Center), to use it, please configure as follows:

configuration:
  selector: ${SW_CONFIGURATION:consul}
  consul:
    # Consul host and ports, separated by comma, e.g. 1.2.3.4:8500,2.3.4.5:8500
    hostAndPorts: ${SW_CONFIG_CONSUL_HOST_AND_PORTS:1.2.3.4:8500}
    # Sync period in seconds. Defaults to 60 seconds.
    period: ${SW_CONFIG_CONSUL_PERIOD:1}
    # Consul aclToken
    aclToken: ${SW_CONFIG_CONSUL_ACL_TOKEN:""}

Dynamic Configuration Apollo Implementation

Apollo is also supported as DCC(Dynamic Configuration Center), to use it, just configured as follows:

configuration:
  selector: ${SW_CONFIGURATION:apollo}
  apollo:
    apolloMeta: ${SW_CONFIG_APOLLO:http://106.12.25.204:8080}
    apolloCluster: ${SW_CONFIG_APOLLO_CLUSTER:default}
    apolloEnv: ${SW_CONFIG_APOLLO_ENV:""}
    appId: ${SW_CONFIG_APOLLO_APP_ID:skywalking}
    period: ${SW_CONFIG_APOLLO_PERIOD:5}

Dynamic Configuration Kuberbetes Configmap Implementation

configmap is also supported as DCC(Dynamic Configuration Center), to use it, just configured as follows:

configuration:
  selector: ${SW_CONFIGURATION:k8s-configmap}
  # [example] (../../../../oap-server/server-configuration/configuration-k8s-configmap/src/test/resources/skywalking-dynamic-configmap.example.yaml)
  k8s-configmap:
      # Sync period in seconds. Defaults to 60 seconds.
      period: ${SW_CONFIG_CONFIGMAP_PERIOD:60}
      # Which namespace is confiigmap deployed in.
      namespace: ${SW_CLUSTER_K8S_NAMESPACE:default}
      # Labelselector is used to locate specific configmap
      labelSelector: ${SW_CLUSTER_K8S_LABEL:app=collector,release=skywalking}

Dynamic Configuration Nacos Implementation

Nacos is also supported as DCC(Dynamic Configuration Center), to use it, please configure as follows:

configuration:
  selector: ${SW_CONFIGURATION:nacos}
  nacos:
    # Nacos Server Host
    serverAddr: ${SW_CONFIG_NACOS_SERVER_ADDR:127.0.0.1}
    # Nacos Server Port
    port: ${SW_CONFIG_NACOS_SERVER_PORT:8848}
    # Nacos Configuration Group
    group: ${SW_CONFIG_NACOS_SERVER_GROUP:skywalking}
    # Nacos Configuration namespace
    namespace: ${SW_CONFIG_NACOS_SERVER_NAMESPACE:}
    # Unit seconds, sync period. Default fetch every 60 seconds.
    period: ${SW_CONFIG_NACOS_PERIOD:60}
    # the name of current cluster, set the name if you want to upstream system known.
    clusterName: ${SW_CONFIG_NACOS_CLUSTER_NAME:default}