# ================================== # # Kamon-Core Reference Configuration # # ================================== # kamon { # Default dispatcher for all Kamon components, unless a more specific one is configured. default-dispatcher = "kamon.kamon-dispatcher" metrics { # Time interval for collecting all metrics and send the snapshots to all subscribed actors. tick-interval = 1 second # Time interval for recording values on all registered gauges. gauge-recording-interval = 100 milliseconds # Default size for the LongBuffer that gets allocated for metrics collection and merge. The # value should correspond to the highest number of different buckets with values that might # exist in a single histogram during a metrics collection. The default value of 33792 is a # very conservative value and its equal to the total number of buckets required to cover values # from 1 nanosecond to 1 hour with 0.1% precision (3 significant value digits). That means # that would need to have at least one measurement on every bucket of a single histogram to # fully utilize this buffer, which is *really* unlikely to ever happen. Since the buffer should # be allocated once and reused it shouldn't impose a memory footprint issue. default-collection-context-buffer-size = 33792 # Disables a big error message that will be typically logged if your application wasn't started # with the -javaagent:/path-to-aspectj-weaver.jar option. If you are only using KamonStandalone # it might be ok for you to turn this error off. disable-aspectj-weaver-missing-error = false dispatchers { # Dispatcher for periodical gauge value recordings. gauge-recordings = ${kamon.default-dispatcher} # Dispatcher for subscriptions and metrics collection actors. metric-subscriptions = ${kamon.default-dispatcher} } filters = [ { actor { includes = [] excludes = [ "system/*", "user/IO-*" ] } }, { router { includes = [] excludes = [ "system/*", "user/IO-*" ] } }, { trace { includes = [ "*" ] excludes = [] } }, { dispatcher { includes = [ "default-dispatcher" ] excludes = [] } } ] precision { default-histogram-precision { highest-trackable-value = 3600000000000 significant-value-digits = 2 } default-min-max-counter-precision { refresh-interval = 100 milliseconds highest-trackable-value = 999999999 significant-value-digits = 2 } default-gauge-precision { refresh-interval = 100 milliseconds highest-trackable-value = 999999999 significant-value-digits = 2 } actor { processing-time = ${kamon.metrics.precision.default-histogram-precision} time-in-mailbox = ${kamon.metrics.precision.default-histogram-precision} mailbox-size = ${kamon.metrics.precision.default-min-max-counter-precision} } router { processing-time = ${kamon.metrics.precision.default-histogram-precision} time-in-mailbox = ${kamon.metrics.precision.default-histogram-precision} } trace { elapsed-time = ${kamon.metrics.precision.default-histogram-precision} segment = ${kamon.metrics.precision.default-histogram-precision} } dispatcher { maximum-pool-size { highest-trackable-value = 999999999 significant-value-digits = 2 } running-thread-count { highest-trackable-value = 999999999 significant-value-digits = 2 } queued-task-count { highest-trackable-value = 999999999 significant-value-digits = 2 } pool-size { highest-trackable-value = 999999999 significant-value-digits = 2 } } } } trace { # Level of detail used when recording trace information. The posible values are: # - metrics-only: metrics for all included traces and all segments are recorded, but no Trace messages will be sent # to the subscriptors of trace data. # - simple-trace: metrics for all included traces and all segments are recorded and additionally a Trace message # containing the trace and segments details and metadata. level = metrics-only # Sampling strategy to apply when the tracing level is set to `simple-trace`. The options are: all, random, ordered # and threshold. The details of each sampler are bellow. sampling = random # Use a ThreadLocalRandom to generate numbers between 1 and 100, if the random number is less or equal to .chance # then tracing information will be gathered and reported for the current trace. random-sampler { chance = 10 } # Use a AtomicLong to ensure that every .sample-interval number of requests tracing information will be gathered and # reported. ordered-sampler { sample-interval = 10 } # Gather tracing information for all traces but only report those whose elapsed-time is equal or greated to the # .minimum-elapsed-time setting. threshold-sampler { threshold = 1 second } # If ask-pattern-tracing is enabled, a WARN level log message will be generated if a future generated by the `ask` # pattern fails with a `AskTimeoutException` and the log message will contain a stack trace captured at the moment # the future was created. ask-pattern-tracing = off } kamon-dispatcher { # Dispatcher is the name of the event-based dispatcher type = Dispatcher # What kind of ExecutionService to use executor = "fork-join-executor" # Configuration for the fork join pool fork-join-executor { # Min number of threads to cap factor-based parallelism number to parallelism-min = 2 # The parallelism factor is used to determine thread pool size using the # following formula: ceil(available processors * factor). Resulting size # is then bounded by the parallelism-min and parallelism-max values. parallelism-factor = 2.0 # Max number of threads to cap factor-based parallelism number to parallelism-max = 10 } # Throughput defines the maximum number of messages to be # processed per actor before the thread jumps to the next actor. # Set to 1 for as fair as possible. throughput = 3 } }