Data structures (bottom up)

  • StepDouble: threadsafe
    • By default, each step represent 1 min
    • value operations are done by DoubleWriter
    • Within the same step, the returned value of poll() will remain same. The value is reset at the each step
  • Histogram: either
    • hdr-based histrogram TimeWindowPercentileHistogram
    • fixed boundary histograms TimeWindowFixedBoundaryHistogram
  • Timer: has an instance of Histogram
  • Meter: A named and dimensioned producer of one or more measurements. All the metrics construct we create in the application code, e.g., Counter, Timer, implements meter
  • DatadogMeterRegistry: implements MeterRegistry -> StepMeterRegistry.
    • Maintains the list of meters
    • Associates a instance of Timer with a HistogramGauges, which translate histogram to the the percentile gauges (with the phi tag) we observe on DD

DatadogMeterRegistry.publish()

  • Gets the API URI: by default is the public API. Normally we sent to dogstatd URL on 127.0.0.1
  • Partition the Meters in the registry to a nested list of Meters. By default, partition size is 10k
  • All data in these 10k meters will be published in a single POST call
  • By default, this method is triggered once per minute. See PushMeterRegistry.start()