All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Adds WithoutTelemetry option to Client to support turning off sending telemetry metrics.
- Go module support
- Go 1.12-1.14 support
- Upgrade to datadog-go 3.x
- Adds support for DataDog Distributions: https://docs.datadoghq.com/metrics/distributions/
- Adds Close() to Client interface to support intentional flushes when applications are shutting down
- Optimize tag handling
- Updated
datadog-go
to version2.2.0
- Add more helpful error message when
WithTest(t)
is not called on the recorder metrics client during testing.
- Add
WithRate(float64)
to the metrics interface and to all clients that implement the interface. All metrics calls support sample rates.- The
LoggerClient
:- Applies the sample rate when printing log messages. If the rate is
0.1
and you callIncr()
ten times, expect about one message to have been printed out. - Displays the sample rate for counts if it is not
1.0
, e.g:Count foo:0.2 (2 * 0.1) [tag1 tag2]
. This shows the sampled value, the passed value, and the sample rate. - Gauges, timings, and histograms will show the sample rate, but he value is left unmodified just like the DataDog implementation.
- Applies the sample rate when printing log messages. If the rate is
- The
RecorderClient
:-
Records all sample rates for metrics calls in
MetricCall.Rate
. No calls are excluded from the call list based on the sample rate, and the value recorded is the full value before multiplying by the sample rate. -
Adds a
Rate(float64)
query method to filter by sampled metrics. -
The following should work:
recorder := metrics.NewRecorderClient().WithTest(t) recorder.WithRate(0.1).Count("foo", 5) recorder.Expect("foo").Rate(0.1).Value(5)
-
- The
- Add
Colorized()
method toLoggerClient
, and automatically detect a TTY and enable color whennil
is passed to theNewLoggerClient
constructor. - Test with Go 1.10.x.
- Update build to test with Go 1.9, drop support for 1.7 since
dep
now requires Go 1.8+. Go 1.7 users can still use this library but must manage their own dependencies. - Add
WithRate(rate float)
to the DataDog client to limit traffic sent to thedogstatsd
daemon. The set rate will be applied to all calls made with the returnedClient
. - Automatically assign tags to events.
-
Make
RecorderClient
goroutine-safe so that metrics can be written and checked concurrently. For example:package main import ( "sync" "github.com/istreamlabs/go-metrics/metrics" ) func main() { client := metrics.NewRecorderClient() wg := sync.WaitGroup{} wg.Add(3) for i := 0; i < 3; i++ { go func() { client.Incr("concurrent.access") wg.Done() }() } wg.Wait() }
- Make project public on GitHub.