blob: da09f500c7a4aec6ccb2c0bc666636092006fffb (
plain) (
tree)
|
|
# ================================== #
# 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 {
# must be power of two
sample-interval = 8
}
# 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 {
minimum-elapsed-time = 1 second
}
incubator {
# Minimum time to stay in the trace incubator before checking if the trace should not be incubated anymore. No
# checks are made at least until this period has passed.
min-incubation-time = 5 seconds
# Time to wait between incubation checks. After min-incubation-time, a trace is checked using this interval and if
# if shouldn't be incubated anymore, the TraceInfo is collected and reported for it.
check-interval = 1 second
# Max amount of time that a trace can be in the incubator. If this time is reached for a given trace then it will
# be reported with whatever information is available at the moment, logging a warning for each segment that remains
# open after this point.
max-incubation-time = 20 seconds
}
# Default dispatcher for all trace operations
dispatcher = ${kamon.default-dispatcher}
}
akka {
# If ask-pattern-timeout-warning 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 information depending of the strategy selected.
# strategies:
# - off: nothing to do.
# - lightweight: logs the warning when a timeout is reached using org.aspectj.lang.reflect.SourceLocation.
# - heavyweight: logs the warning when a timeout is reached using a stack trace captured at the moment the future was created.
ask-pattern-timeout-warning = off
# Default dispatcher for all trace operations
dispatcher = ${kamon.default-dispatcher}
}
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
}
}
|