-
[FEATURE] Support sending counters and gauges with timestamp. See #185 and #188. These PRs add a default parameter to the methods of
DogStatsdService
,DogStatsd
andIDogStatsd
. They also removeparams
fortags
inIDogStatsd.Decrement
. -
[COMPATIBILITY] Remove support for old frameworks. See #186. This PR updates the targeted frameworks from
netstandard1.3;netstandard2.0;netstandard2.1;net45;net461
tonet461;netstandard2.0;netcoreapp3.1;net6.0
It meansnetstandard1.3
andnet45
are not supported anymore. -
[IMPROVEMENT] Add an exception handler. See #183 and #187. These PRs add a default parameter to
DogStatsdService.Configure
,DogStatsd.Configure
andIDogStatsd.Configure
-
[IMPROVEMENT] Add a
Flush
method toIDogStatsd
. See #182. This PR adds a new method toIDogStatsd
.
- [IMPROVEMENT] Setting up codescanning action. See #175.
- [BUGFIX] Don't throw an exception when the size of the metric exceeds the internal buffer capacity. See #178.
Enable client-side aggregation by default for simple metric types. See #172.
By default, metrics are aggregated before they are sent. For example, instead of sending 3 times my_metric:10|c|#tag1:value
, DogStatsD client sends my_metric:30|c|#tag1:value
once. You can disable client-side aggregation by setting ClientSideAggregation
property to null
.
For more details about how client-side aggregation works see #134.
Enabling client-side aggregation has the benefit of reducing the network usage and also reducing the load for DogStatsD server (Core Agent).
When an application sends a lot of different contexts but each context appear with a very low frequency, then enabling client-side aggregation may take more memory and more CPU. A context identifies a metric name, a tag sets and a metric type. The metric datadog.dogstatsd.client.aggregated_context
reported by DogStatsD C# client counts the number of contexts in memory used for client-side aggregation. There is also the metric datadog.dogstatsd.client.metrics_by_type
that represents the number of metrics submitted by the client before aggregation.
Set good default values for UDS and UDP buffer sizes. See #170.
This PR changes the default values for unix domain socket and UDP buffer sizes.
In most cases, this change should work out of the box. Unlike Windows and Linux, on some operating systems like MacOS, the maximum unix domain socket buffer size is lower than 8192
. For these systems you have to set StatsdMaxUnixDomainSocketPacketSize
to the maximum supported value.
- [BUGFIX] Update links to https://docs.datadoghq.com. See #171.
- [IMPROVEMENT] Add end of line separator after each message. See #169.
- [IMPROVEMENT] Add benchmark for client side aggregation. See #168.
- [BUGFIX] Fix the implementation of MetricStatsKey.GetHashCode(). See #167.
- [IMPROVEMENT] Update client side flush interval from 3s to 2s. See #166.
- [BUGFIX] For event, use the size of the title and the text in UTF8. See #165.
- [IMPROVEMENT] Performance improvements. See #164.
- [FEATURE] Add benchmarks. See #163.
- [IMPROVEMENT] Improve performance. See #162.
- [FEATURE] Add the telemetry metric aggregated_context_by_type. See #161.
- [IMPROVEMENT] Minor grammar update in comments. See #160 (Thanks @shreyamsh).
- [IMPROVEMENT] Use Thread.Sleep instead of Task.Delay when possible. See #159 (Thanks @kevingosse).
- [IMPROVEMENT] Remove System.Net.NameResolution for netstandard2.0. See #155 (Thanks @fjmorel ).
- [IMPROVEMENT] Use dedicated threads for background workers. See #151 (Thanks @kevingosse).
- Methods
Counter
,Gauge
,Histogram
,Distribution
andTimer
fromDogStatsdService
andDogStatsd
are not generic methods anymore. (See https://github.com/DataDog/dogstatsd-csharp-client/pull/133/commits/ab18f9572de3bfe76fb95b5fce14d6ee965b62d4) - The following obsolete code is removed:
- Remove variables
StatsdConfig.DD_ENTITY_ID_ENV_VAR
,StatsdConfig.DD_DOGSTATSD_PORT_ENV_VAR
andStatsdConfig.DD_AGENT_HOST_ENV_VAR
- Visibility change from
public
tointernal
for:ICommandType
,IRandomGenerator
,IStopWatchFactory
,IStopwatch
,MetricsTimer
,RandomGenerator
,StopWatchFactory
,Stopwatch
,ThreadSafeRandom
andStatsdUDP
. - Remove
Statsd
,IStatsd
andIStatsdUDP
.
- Remove variables
- Rename environment variable
DD_AGENT_PIPE_NAME
toDD_DOGSTATSD_PIPE_NAME
.
- [IMPROVEMENT] Add
Flush
method. See #144. - [FEATURE] Add client side aggregation for Count, Gauge and Set metrics. See #133, #134 and #143.
- [FEATURE] Add support for universal service tagging. See #139 (Thanks @kevingosse)
- [BUGFIX] Work around 64 bit RyuJIT ThreadAbortException bug on the .NET Framework. See #137 (Thanks @jdasilva-olo).
- [IMPROVEMENT] Reduce the memory allocations. See #123, #124, #127 and #132.
- [IMPROVEMENT] Add a telemetry end point. See #130.
- [IMPROVEMENT] Add the support for .NET framework 4.5.0. See #128.
- [BUGFIX] Fix an issue where the client cannot send metrics after the DogStatsd server restart. See #125.
- [BUGFIX] Fix System.Net.Sockets.SocketException when telemetry is enabled and Statsd server is not up. See #120.
- [BUGFIX] Fix high CPU usage. See #121.
Significant improvements of DogStatsdService
and DogStatsd
performance.
You must call DogStatsdService.Dispose()
or DogStatsd.Dispose()
before your program termination in order to flush metrics not yet sent.
Statsd
is marked as obsolete.
- [IMPROVEMENT] Both
DogStatsdService
andDogStatsd
methods do not block anymore and batch several metrics automatically in one UDP or UDS message. See #108 and #109. - [IMPROVEMENT] Send telemetry metrics. See #110 and #114.
- [IMPROVEMENT] Enable StyleCop. See #111, #112 and #113.
- [BUGFIX] Fix
System.ArgumentException: unixSocket must start with unix://
when using theDD_AGENT_HOST
environment variable with UDS support. See this comment (Thanks @danopia)
Version 3.4.0
uses a strong-named assembly that may introduce a breaking change.
This major version change makes this breaking change explicit. No other breaking changes are expected.
- [IMPROVEMENT] Add Async methods to Statsd. See #59 (Thanks @alistair)
- [IMPROVEMENT] Add Unix domain socket support. See #92
- [FEATURE] Option to set global tags that are added to every statsd call. See #3, #78 (Thanks @chriskinsman)
- [IMPROVEMENT] Configure the client with environment variables. See #78
- [BUGFIX] Fix an issue causing the
StartTimer
method to ignore non staticDogStatsdService
instance configurations. See #62, #63 (Thanks @jpasichnyk) - [BUGFIX] Prevent the static API from being configured more than once to avoid race conditions. See #66 (Thanks @nrjohnstone)
- [BUGFIX] Set a default value for
tags
in theDecrement
method similar toIncrement
. See #60, #61 (Thanks @sqdk) - [FEATURE] Add support for DogStatsD distribution. See #65
DogStatsD-CSharp-Client 3.1.0
supports the following platforms:
- .NET Standard 1.3
- .NET Standard 1.6
- .NET Core Application 1.1
- .NET Core Application 2.0
- .NET Framework 4.5.1
- .NET Framework 4.6.1
- [BUGFIX]
DogStatsdService
implementsIDogStatsd
. See #43, #54 - [BUGFIX] Fix IP host name resolution when IPv6 addresses are available. See #50 (Thanks @DanielVukelich)
- [IMPROVEMENT] Add
IDisposable
interface toDogStatsdService
to manage the release of resources. See #44 (Thanks @bcuff) - [IMPROVEMENT] New
StatsdConfig.StatsdTruncateIfTooLong
option to truncate Events and Service checks larger than 8 kB (default to True). See #48, #55 - [IMPROVEMENT] New supported targeted frameworks: .NET Standard 1.6, .NET Core Application 1.1, .NET Core Application 2.0, .NET Framework 4.6.1. See #52 (Thanks @pdpurcell)
DogStatsD-CSharp-Client 2.2.1
is the last version to support .NET Framework 3.5. As of 3.0.0
, DogStatsD-CSharp-Client supports the following platforms:
- .NET Framework 4.5.1
- .NET Standard 1.3
- [IMPROVEMENT] Move to .NET Core, and drop .NET Framework 3.5 compatibility. See #28, #39 (Thanks @wjdavis5)
- [IMPROVEMENT] Abstract DogStatsD service. See #30, #40 (Thanks @nrjohnstone)
- [BUGFIX] Remove the
TRACE
directive from release builds. See #33, #34 (Thanks @albertofem) - [FEATURE] Service check support. See #29 (Thanks @nathanrobb)
- [BUGFIX] Fix
Random
generator thread safety. See #26 (Thanks @windsnow98)
- [BUGFIX] Optional automatic truncation of events that exceed the message length limit. See #22 (Thanks @daniel-chambers)
- [BUGFIX] Fix event's text escape when it contains windows carriage returns. See #15 (Thanks @anthonychu
- [IMPROVEMENT] Strong-name-assembly. See #11
- [BUGFIX] Remove NUnit dependency from StatsdClient project. See #8 (Thanks @michaellockwood)
- [FEATURE] Event support
- [FEATURE] Increment/decrement by value.
- [IMPROVEMENT] UDP packets UTF-8 encoding (was ASCII).
- [IMPROVEMENT] UDP packets containing multiple metrics that are over the UDP packet size limit will now be split into multiple appropriately-sized packets if possible.
- Initial release