aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/resources/reference.conf
blob: 4844149390cea247e35eb63dc0588ab74b5c5c0f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# ================================== #
# Kamon-Core Reference Configuration #
# ================================== #

kamon {
  metric {

    # Time interval for collecting all metrics and send the snapshots to all subscribed actors.
    tick-interval = 10 seconds

    # 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

    # Specify if entities that do not match any include/exclude filter should be tracked.
    track-unmatched-entities = yes

    filters {
      trace {
        includes = [ "**" ]
        excludes = [ ]
      }
    }

    # 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
      }

      min-max-counter {
        precision = normal
        lowest-discernible-value = 1
        highest-trackable-value = 999999999
        refresh-interval = 100 milliseconds
      }

      gauge {
        precision = normal
        lowest-discernible-value = 1
        highest-trackable-value = 3600000000000
        refresh-interval = 100 milliseconds
      }

    }

    # 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 {

    }
  }


  trace {

    # Level of detail used when recording trace information. The possible values are:
    #  - metrics-only: metrics for all included traces and all segments are recorded, but no Trace messages will be sent
    #    to the subscribers 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-of-detail = metrics-only

    # Sampling strategy to apply when the tracing level is set to `simple-trace`. The options are: all, random, ordered,
    # threshold and clock. The details of each sampler are below.
    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
    }
    
    # Fully qualified name of the function that will be used for generating tokens to traces.
    token-generator = kamon.trace.DefaultTokenGenerator

    # 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
    }

    # Use a FiniteDuration to only record a trace each .pause nanoseconds.
    clock-sampler {
      pause = 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
    }
  }

  # All settings included under the internal-config key will be used to repleace the akka.* and spray.* settings. By
  # doing this we avoid applying custom settings that might make sense for the user application to the internal actor
  # system and Spray facilities used by Kamon.
  internal-config {

    akka.actor {
      provider = "local"
      default-dispatcher {
        fork-join-executor {
          parallelism-min = 2
          parallelism-factor = 2.0
          parallelism-max = 10
        }
      }
    }

    spray {

    }
  }

  # Controls whether the AspectJ Weaver missing warning should be displayed if any Kamon module requiring AspectJ is
  # found in the classpath but the application is started without the AspectJ Weaver.
  show-aspectj-missing-warning = yes

  modules {
    # Just a place holder to ensure that the key is always available. Non-core Kamon modules should provide their
    # settings in a module-info section.
  }

  # Add tags to all reported metrics. Can be useful to identify the source of metrics from a particluar JVM instance.
  # Example:
  #
  # default-tags {
  #   host: ${?HOSTNAME}
  #   container-name: ${?CONTAINER_NAME}
  # }
  default-tags {

  }
}