From 485abe569d23bccf2d263c82b43e59464dc7e834 Mon Sep 17 00:00:00 2001 From: Ivan Topolnjak Date: Mon, 12 Jan 2015 01:45:27 +0100 Subject: ! all: improve the metric recorders infrastructure --- kamon-core/src/main/resources/META-INF/aop.xml | 8 +- kamon-core/src/main/resources/reference.conf | 120 +++++++++++++------------ 2 files changed, 62 insertions(+), 66 deletions(-) (limited to 'kamon-core/src/main/resources') diff --git a/kamon-core/src/main/resources/META-INF/aop.xml b/kamon-core/src/main/resources/META-INF/aop.xml index 47ce11d8..854e9437 100644 --- a/kamon-core/src/main/resources/META-INF/aop.xml +++ b/kamon-core/src/main/resources/META-INF/aop.xml @@ -2,19 +2,13 @@ + - - - - - - - diff --git a/kamon-core/src/main/resources/reference.conf b/kamon-core/src/main/resources/reference.conf index 8f5a8b45..cd257ebe 100644 --- a/kamon-core/src/main/resources/reference.conf +++ b/kamon-core/src/main/resources/reference.conf @@ -3,19 +3,11 @@ # ================================== # kamon { - - # Default dispatcher for all Kamon components, unless a more specific one is configured. - default-dispatcher = "kamon.kamon-dispatcher" - - metrics { + metric { # 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 @@ -31,69 +23,79 @@ kamon { # it might be ok for you to turn this error off. disable-aspectj-weaver-missing-error = false + # Specify if entities that do not match any include/exclude filter should be tracked. + track-unmatched-entities = yes - 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 = [] - } + filters { + trace { + includes = [ "**" ] + excludes = [ ] } - ] + } - precision { - default-histogram-precision { + # Default instrument settings for histograms, min max counters and gaugues. The actual settings to be used when + # creating a instrument is determined by merging the default settings, code settings and specific instrument + # settings using the following priorities (top wins): + + # - any setting in `kamon.metric.instrument-settings` for the given category/instrument. + # - code settings provided when creating the instrument. + # - `default-instrument-settings`. + # + default-instrument-settings { + histogram { + precision = normal + lowest-discernible-value = 1 highest-trackable-value = 3600000000000 - significant-value-digits = 2 } - default-min-max-counter-precision { - refresh-interval = 100 milliseconds + min-max-counter { + precision = normal + lowest-discernible-value = 1 highest-trackable-value = 999999999 - significant-value-digits = 2 + refresh-interval = 100 milliseconds } - default-gauge-precision { + gauge { + precision = normal + lowest-discernible-value = 1 + highest-trackable-value = 3600000000000 refresh-interval = 100 milliseconds - highest-trackable-value = 999999999 - significant-value-digits = 2 } - trace { - elapsed-time = ${kamon.metrics.precision.default-histogram-precision} - segment = ${kamon.metrics.precision.default-histogram-precision} - } + } + + # Custom configurations for category instruments. The settings provided in this section will override the default + # and code instrument settings as explained in the `default-instrument-settings` key. There is no need to provide + # full instrument settings in this section, only the settings that should be overriden must be included. Example: + # if you wish to change the precision and lowest discernible value of the `elapsed-time` instrument for the `trace` + # category, you should include the following configuration in your application.conf file: + # + # kamon.metric.instrument-settings.trace { + # elapsed-time { + # precision = fine + # lowest-discernible-value = 1000 + # } + # } + # + # In this example, the value for the `highest-trackable-value` setting will be either the code setting or the default + # setting, depending on how the `elapsed-time` metric is created. + instrument-settings { + + } + + dispatchers { + + # Dispatcher for the actor that will collect all recorded metrics on every tick and dispatch them to all subscribers. + metric-collection = akka.actor.default-dispatcher + + # Dispatcher for the Kamon refresh scheduler, used by all MinMaxCounters and Gaugues to update their values. + refresh-scheduler = akka.actor.default-dispatcher } } + + + trace { # Level of detail used when recording trace information. The posible values are: @@ -101,7 +103,7 @@ kamon { # 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 + level-of-detail = 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. @@ -142,7 +144,7 @@ kamon { } # Default dispatcher for all trace module operations - dispatcher = ${kamon.default-dispatcher} + dispatcher = "akka.actor.default-dispatcher" } kamon-dispatcher { -- cgit v1.2.3