- [Added] Add the ability for buffering and aggregation to work at the same time. See #851.
- [Added] Add client side aggregation. See #844.
- [Added] Add metric object type. See #837.
- [Added] Support passing Unix timestamps to dogstatsd. See #831.
- [Fixed] Fix a potential deadlock on fork. See #836.
- [Changed] feat(origin detection): send both container ID and Entity ID. See #828.
- [Fixed] Fix potential metric loss when open_buffer is combined with disable_buffering=False. See #820.
- [Added] Add --restricted_roles option to Monitors API. See #809.
- [Added] Support inode resolution mechanism for Origin Detection. See #813.
- [Fixed] Fix potential deadlock during process fork. See #817.
- [Added] Improve forking support. See #804.
- [Fixed] Close socket during initialization. See #808.
- [Fixed] Update payload size when updating socket path. See #807.
- [Fixed] Fix stale client_transport tag. See #802.
- [Fixed] Provide backwards compatible telemetry counters. See #801.
- [Added] Add IPv6 support for dogstatsd. See #791.
- [Added] Add blocking socket mode and background sender. See #787.
- [Added] Add tags and priority to the fpost monitor request. See #739.
- [Added] Add AP1 Datacenter. See #779.
- [Fixed] Add alphanumeric check to app/api key config creation. See #781.
- [Fixed] Add govcloud to site param descriptions, and add custom url fallback. See #780.
- [Added] Add dogwrap site option to send to US3 site. See #749. Thanks holidayworking.
- [Added] Add SLO search endpoint and update get_all. See #744.
- [Added] [statsd] Add origin detection with container ID field. See #720.
- [Fixed] Fix duplicate parsers in dogshell. See #760.
- [Changed] Use header for credentials everywhere. See #754.
- [Changed] [statsd] Raise ValueError instead of Exception when payload is too large. See #730. Thanks mlanicaputo.
- [Added] Update package metadata. See #713.
- [Fixed] [statsd] Restore buffering state when exiting context manager. See #715.
- [Changed] [threadstats] Ensure
ThreadStats
andDogStatsd
event()
signatures match. See #712. - [Changed] Improved dogstatsd mypy integration by adding additional type annotations. See #710. Thanks jahodfra.
- [Added] [statsd] Add ability to toggle
statsd.disable_buffering
state during runtime. See #700. - [Added] Add a dogshell option to change Datadog site to call API. See #691.
- [Fixed] [statsd] Fix dedicated-endpoint telemetry shipping when used with UDP. See #690.
- [Changed] [statsd] Disable statsd buffering by default. See #692.
- [Changed] [statsd] Always terminate packets with newline. See #685.
- [Changed] [statsd] Enable buffering by default for statsd. See #670.
- [Changed] [statsd] Add caching to tag normalization for Python3.2+. See #674.
- [Fixed] Remove unused decorator dependency. See #651.
- [Fixed] [dogstatsd] Fix unicode handling of event text. See #661.
- [Added] [dogstatsd] Improve tag normalization speed. See #672.
- [Fixed] Fix decorator dependency for Python 2.7. See #646. Thanks artem888881.
- [Fixed] [dogstatsd] Fix buffer operation thread-safety. See #642.
- [Fixed] [dogstatsd] Improve performance of telemetry serialization. See #641.
- [Fixed] Fix blocking connections in dogstatsd. See #634.
- [Added] Support DD env vars in threadstats. See #625.
- [Added] Add logs listing feature. See #622. Thanks userlocalhost.
- [Added] [telemetry] optionally decouple telemetry destination from other metrics. See #558.
- [Fixed] Lazy log formatting. See #628.
- [Fixed] Turn EAGAIN warning into debug. See #629.
- [Fixed] Turn warning into info. See #623.
- [Fixed] [dogstatsd] use monotonic clock source when available for timers. See #615. Thanks jd.
- [Fixed] Fix Synthetics delete_test parameter name. See #603. Thanks jonathan-hosmer.
- [Fixed] Delay creation of lambda ThreadStats. See #609.
- [Added] Add environment variable to disable statsd metric collection. See #589. Thanks dgzlopes.
- [Added] [dogstatsd] Add support for distribution context manager and decorator. See #581. Thanks dnlserrano.
- [Added] [dogstatsd] sock.setblocking(0) for UDP socket. See #590.
- [Added] [dogstatsd] Add type information to some dogstatsd methods. See #579. Thanks vishalkuo.
- [Added] Improve user-agent header to include telemetry information. See #583.
- [Fixed] Use Python 2 compatible configparser explicitly. See #585. Thanks Panfilwk.
- [Fixed] Fix error after creating
.dogrc
when not answeringy
orn
at the prompt. See #582. Thanks NassimBounouas.
- [Fixed] Add
typing
andconfigparser
dependencies for python versions that need it. See #572. Thanks jairideout.
- [Added] Add version as an importable variable and remove dependency on
pkg_resources
. See #566. Thanks sjhewitt. - [Added] Initial support for Python type hints and Mypy type checking. See #565. Thanks jairideout.
- [Fixed] [dogstatsd] Correct inverted constants. See #568.
- [Changed] [dogstatsd] Size-based packetization for dogstatsd batched metrics . See #562.
- [Added] Add excluded_regions to POST/PUT AWS lib. See #552.
- [Added] Add support for DD_ENV, DD_SERVICE, and DD_VERSION environment variables. See #548.
- [Fixed] Fix dogwrap help output case. See #557. Thanks deiga.
- [Fixed] Fix decode attribute error with options for py3. See #555.
- [Added] Add
Set
metric type to threadstats. See #545. - [Added] Add enum for monitor types. See #544.
- [Added] Support DD_API_KEY environment variable in dogwrap. See #543.
- [Added] Add back telemetry to Dogstatsd client. See #533.
- [Fixed] Remove illegal characters from tags. See #517. Thanks jirikuncar.
- [Fixed] Fix syntax error in dogwrap timeout handler and always collect output. See #538. Thanks Matt343.
- [Fixed] Revert dogstatsd telemetry. See #530.
- [Fixed] Fix ServiceLevelObjective.get_all limit default in docstring. See #527. Thanks taylor-chen.
- [Deprecated] Alias
dog
script names asdogshell
. Please start usingdogshell
instead ofdog
command. See #305. Thanks dwminer. - [Fixed] [dogshell] Enforce the default 'normal' event priority client side. See #511.
- [Fixed] [dogstatsd] Handle EAGAIN socket error when dropping packets. See #515. Thanks mrknmc.
- [Fixed] [dogstatsd] Handle OSError on socket.close on Python 3.6+. See #510. Thanks charettes.
- [Added] [dogstatsd] Add
statsd_constant_tags
kwarg to datadog.initialize(). See #494. Thanks kainswor. - [Added] [dogstatsd] Adding telemetry to dogstatsd. See #505.
- [Added] [dogwrap] Add duration as metric. See #506.
- [Added] [dogwrap] Add option to send to EU endpoint. See #502.
- [Added] [dogwrap] Add warning option for dogwrap based on exit codes. See #471. Thanks dabcoder.
- [Added] Include LICENSE in MANIFEST.in. See #500. Thanks jjhelmus.
- [Added] Add base class for all exceptions. See #496. Thanks hakamadare.
- [Added] Tag normalization. See #489.
- [FEATURE] Roles and Permissions APIs #481
- [FEATURE] Add support for Azure, GCP and AWS integrations endpoints #429
- [FEATURE] Add support for new
Monitor.can_delete
endpoint #474 - [FEATURE] Add support for the
Monitor.validate
endpoint #487 - [FEATURE] Add support for
/v1/downtime/cancel/by_scope
#488 - [IMPROVEMENT] Dogshell: remove Exception wrapping #477
- [BUGFIX] Fix distribution metric submission by sending api/app keys through query params for this endpoint. #480
- [FEATURE] Add Synthetics support #433
- [BUGFIX] Fix possible issue that could leak file descriptors when reading config #425
- [BUGFIX] Fix graph snapshot status endpoint #448
- [BUGFIX] Revert
users
resource name to singularuser
as it was not fully supported #450 - [BUGFIX] Fix error printing to stderr char by char #449
- [BUGFIX] Add
_return_raw_response
toapi
module to prevent import errors beforeinitialize
is called #461 - [BUGFIX] Threadstats: Fix periodic timer error on interpreter shutdown #423
- [FEATURE] Add support for SLOs #453 and #464
- [FEATURE] Add ability to send compressed payloads for metrics and distribution. #466
- [FEATURE] Add parameter
hostname_from_config
toinitialize
to enable/disable hostname lookup from datadog-agent config to avoid warnings #428 - [FEATURE] Dogstatsd: add ability to specify a default sample rate for all submissions #470 (thanks @dtao)
- [IMPROVEMENT] Send API credentials through headers instead of URL query parameter #446
- [IMPROVEMENT] Clarify docstring for metrics API #463
- [IMPROVEMENT] Assert
alert_type
is correct when creating event #467 - [IMPROVEMENT] Dogshell: make query and type optional when updating a monitor #447
- [BUGFIX] Treat
API_HOST
as URL, not as string #411 - [FEATURE] Add
return_raw_response
option toinitialize
to enable adding raw responses to return values #414 - [IMPROVEMENT] Add project URLs to package metadata #413 (thanks @Tenzer)
- [IMPROVEMENT] Add support for handling a 401 status as an API error #418
- [IMPROVEMENT] Allow configuring proxy in
~/.dogrc
for usage with dogshell #415 - [IMPROVEMENT] Update
user
resource name tousers
to match new plural endpoints #421 - [OTHER] Add deprecation warning to old aws lambda threadstats integration #417
- [OTHER] Removed functionality to delete events and comments, as it's no longer supported by API #420
- [BUGFIX] Fix encoding issue on install #391 and #392 (thanks @Alphadash and @ningirsu)
- [BUGFIX] Dogwrap: Fix dogwrap unicode option parsing on python 3, #395 (thanks @Matt343)
- [BUGFIX] Revert Return Rate Limit Headers, #401
- [BUGFIX] Properly extend response headers to response object to fix Return Rate Limit Headers, #397
- [BUGFIX] Lambda wrapper: Always flush, even on exceptions, #359 (thanks @jmehnle)
- [BUGFIX] API: Do not send JSON body in GET requests, #382
- [BUGFIX] API: Allow listing timeboards with empty descriptions, #385 (thanks @Tenzer)
- [BUGFIX] Dogwrap: Better string handling and python3 support, #379
- [BUGFIX] Threadstats: ensure MetricsAggregator is threadsafe, #370 (thanks @TheKevJames)
- [BUGFIX] Dogshell: Fixes the
--tags
argument for service_checks, #387 (thanks @gordlea) - [FEATURE] API: Add support for dashboard list API v2, #374
- [IMPROVEMENT] API: Handle http code 429 rate limiting in external python library, #376
- [IMPROVEMENT] API: Add ability to not attach_host_name to metrics, events and distributions, #383
- [IMPROVEMENT] API: Return Rate Limit Headers, #378 (thanks @fdhoff)
- [IMPROVEMENT] API: Do not override API parameters with default when calling initialize if they are already set, #386
- [IMPROVEMENT] Dogshell: Add
--tags
support to monitors, #356 - [IMPROVEMENT] Dogshell: Add documentation for environment variables, #388 (thanks @sc68cal)
- [IMPROVEMENT] Dogstatsd: Added a new parameter
statsd_default_namespace
to theinitialize
method, #353 (thanks @lceS2) - [IMPROVEMENT] Import Iterable from collections.abc on python3 to avoid deprecation warning, #381
- [IMPROVEMENT] Do not capture
/bin/hostname
stderr, #368 (thanks @brendanlong) - [IMPROVEMENT] Add support for environment variables
DD_API_KEY
andDD_APP_KEY
for setting API and APP keys respectively, #373
=========
- [BUGFIX] Dogshell: Properly require
handle
as an argument to thecomment
subcommand, #364 - [FEATURE] API: Add support for the
Dashboard.get_all
API, #362 - [FEATURE] Dogshell: Add support for defining monitors as JSON files, #322 (thanks @Hefeweizen)
- [FEATURE] DogStatsD: Add support for the
DD_AGENT_HOST
,DD_DOGSTATSD_PORT
, andDD_ENTITY_ID
environment variables, #363 - [IMPROVEMENT] API: Add support for the
free
layout_type inDashboard.create
andDashboard.update
, #362
New Dashboards API: https://docs.datadoghq.com/api/?lang=python#dashboards
The Timeboard and Screenboard API resources are deprecated in favor of the new Dashboard resource. See https://docs.datadoghq.com/api/?lang=python#dashboards for more details.
- [BUGFIX] API: Fix
UnicodeError
exceptions raised by the API client on errors that contain non ascii characters, #223, #346 - [BUGFIX] DogStatsD: Fix unsafe socket creation on multithreaded applications and catch more exceptions, #212, #349
- [FEATURE] API: Add support for the new Dashboard API, #351
- [OTHER] Support
tox
for testing, #342 - [OTHER] Support Python 3.7, drop support for Python 3.3, #345
- [IMPROVEMENT] API: Keep HTTP connections alive when using
requests
, #328
- [FEATURE] ThreadStats: Add AWS Lambda wrapper, #324
- [BUGFIX] DogStatsD: Do not send empty UDP packets, #264 (thanks @Tenzer)
- [FEATURE] API: Add support for distributions, #312
- [FEATURE] ThreadStats: Add support for distributions, #312
- [OTHER] Remove
simplejson
3p dependency, #304, #309 (thanks @alexpjohnson)
- [BUGFIX] Dogshell: Submit
--date_happened
timestamp when posting events, #287, #301 (thanks @gplasky) - [FEATURE] API: Add search and groups search methods to the
Monitor
resource, #299 - [IMPROVEMENT] Dogshell: Set API and APP keys with environment variables, #228 (thanks @taraslayshchuk)
- [IMPROVEMENT] DogStatsD: Prevent an issue that was causing the
timed
context manager object from overwriting a method with an instance variable, #263 (thanks @florean) - [OTHER] Include tests in PyPI tarball, #259 (thanks @dotlambda)
New API endpoint: https://api.datadoghq.com/api
The Datadog API client now uses https://api.datadoghq.com/api endpoint instead of https://app.datadoghq.com/api. See #257 for more details.
- [BUGFIX] API: Close requests' sessions to limit memory usage, #272 (thanks @thehesiod)
- [BUGFIX] Dogwrap: Fix
TypeError
exceptions when truncatingstdout
,stderr
with Python 3, #260, #267 (thanks @cabouffard, @glasnt) - [FEATURE] DogStatsD: Add client level tags to status checks, #279 (thanks @marshallbrekka)
- [FEATURE] DogStatsD: Add support for
statsd_socket_path
option ininitialize
function, #282 - [IMPROVEMENT] Dogwrap: Default output encoding to UTF-8, #268 (thanks @glasnt)
Search hosts: Infrastructure.search
is deprecated
The Infrastructure.search
method is deprecated in favor of the new Hosts.search
method.
- [BUGFIX] API: Prevent exception contexts from logging URLs and credentials, #266
- [FEATURE] API: Add
search
andtotals
methods to theHosts
resource, #261
- [FEATURE] API: New
DashboardList
resource, #252
ThreadStats: metric type change
ThreadStats
count metrics (produced from the increment
/decrement
and histogram
methods) are now reported with the count
/rate
metric type, instead of gauge
.
As a result, for the corresponding metrics:
- Metric queries can use the
.as_count()
/.as_rate()
functions to switch between count and rate representations. - The default time aggregation uses a sum instead of an average. This may affect the representation of existing metric queries, thus, monitors' definitions and metric graphs.
See #242 (thanks @nilabhsagar) for more details.
- [BUGFIX] ThreadStats: Send count metrics with
Rate
metric type, #242 (thanks @nilabhsagar) - [IMPROVEMENT] ThreadStats: Flush all metrics on exit, #221
- [BUGFIX] Dogshell: Service checks can be sent with optional parameters set to null values, #241 (thanks @timvisher)
- [BUGFIX] Dogwrap: Respect the output channel encoding format, #236 (thanks @martin308)
- [FEATURE] DogstatsD: Add beta support for sending global distribution metrics, #249
- [BUGFIX] API: Discard non-null parameters in
api.ServiceCheck.check
method, #206, #207 (thanks @ronindesign) - [BUGFIX] API: Update HTTP method from
GET
toPOST
forapi.Screenboard.share
method, #234 (thanks @seiro-ogasawara) - [BUGFIX] Dogwrap: Encode from unicode before writing to stdout, stderr, #201, #203 (thanks @ronindesign)
- [FEATURE] API: Add
list
method toMetric
resource, #230 (thanks @jbain) - [FEATURE] DogStatsD: Add
socket_path
option to enable Unix socket traffic to DogStatsD 6, #199 - [IMPROVEMENT] DogStatsD: Improve performances, speed up payload construction, #233 (thanks @shargan)
- [FEATURE] Dogshell: Add filtering options to the
monitor show_all
command, #194
- [FEATURE] API: Add metric metadata endpoints #181
- [IMPROVEMENT] API: Disable redirection following with
urlfetch
HTTP library #168 (thanks @evanj) - [IMPROVEMENT] API: Increase default timeout from 3 to 60 seconds #174 (thanks @ojongerius)
- [IMPROVEMENT] DogStatsD: Better exceptions on system default route resolution failures #166, #156
- [IMPROVEMENT] DogStatsD: Close sockets when freed #167 (thanks @thehesiod)
Logging
dd.datadogpy
logger name is no longer. datadog
now uses logger names matching the project hierarchy, i.e.
datadog.api
datadog.statsd
datadog.threadstats
By default, datadog
loggers are set with a do-nothing handler (NullHandler
).
To setup a different handler, one can add a handler
import logging
logging.getLogger("datadog").addHandler(...)
- [FEATURE] DogStatsD: Provide elapsed time from the
timed
decorator, #154 (thanks @tuukkamustonen) - [FEATURE] DogStatsD: Allow starting and stopping
timed
manually, #155 (thanks @tuukkamustonen) - [IMPROVEMENT] DogStatsD: Support timing for coroutine functions on Python 3.5 or higher, #146 (thanks @thehesiod)
- [OTHER] Rename loggers and set null handlers, #161
- [BUGFIX] Dogshell: Fix
UnicodeError
exceptions when a timeboard name contains non ascii characters, #140 - [BUGFIX] DogStatsD: Support unicode characters in tags, #132, #152
- [BUGFIX] ThreadStats: Fix
RuntimeError
exceptions on flush caused by an unsafe thread operation, #143, #151 (thanks @leozc) - [FEATURE] API: Add
delete
method toEvent
resource, #145 - [IMPROVEMENT] DogStatsD: Have
timed
context manager to return itself, #147 (thanks @ross)
- [BUGFIX] API: Do not raise on hostname resolution failures, #106
- [FEATURE] DogStatsD: Allow to dynamically use default route as a StatsD host, #134
- [IMPROVEMENT] API: Enhance compatibility with Google App Engine, support
urlfetch
as a HTTP library #106
- [BUGFIX] Dogshell: Print usage when no argument is given on Python 3, #123
- [BUGFIX] DogStatsD: Do not modify metric-level
tags
parameters whenconstant_tags
is set, #94 (thanks @steven-liu) - [BUGFIX] DogStatsD: Fix thread-safety of the
[@timed][]
decorator, #126 (thanks @mgood) - [BUGFIX] ThreadStats: Do not modify metric-level
tags
parameters whenconstant_tags
is set, #94, #117 (thanks @steven-liu) - [FEATURE] Dogshell: Add an
alert_type
option forevent post
, #120 (thanks @drstevens) - [FEATURE] DogStatD: Set constant tags from
DATADOG_TAGS
environment variable, #114 (thanks @ewdurbin ) - [FEATURE] DogStatsD: Support namespace, #118
- [FEATURE] ThreadStats: Set constant tags from
DATADOG_TAGS
environment variable, #114 (thanks @ewdurbin ) - [FEATURE] ThreadStats: Support namespace, #118
- [IMPROVEMENT] API: Support real numerical data types in
Metrics
, #103 - [IMPROVEMENT] Dogshell: Attach hostname by default to event and metric posts, #122
- [IMPROVEMENT] DogStatsD: Discard
None
values, #119 (thanks @dcrosta) - [IMPROVEMENT] DogStatsD: Import from top level, #105
- [IMPROVEMENT] Dogwrap: Trim output and update event format, #104 (thanks @gnarf)
- [OTHER] API: Adjust the documentation, #96, #101, #110, #111 (thanks @aristiden7o, @emad, @aknuds1, @meawoppl)
- [OTHER] Dogshell: Update misleading help message for
event stream
, #124
- [BUGFIX] Fix typo in Dogshell breaking the Timeboard
pull_all
method, #92 - [FEATURE] Enhance
constant_tags
support to ThreadStats and Statsd events, #90 (thanks @jofusa) - [FEATURE] New CRUD User API, #89
- [OTHER] Fix Dogwrap documentation output typo, #87 (thanks @gnarf)
- [FEATURE] Option to time in ms with
statsd
, #78 (thanks @g--) - [FEATURE] Option to unmute
api
ApiError exceptions, #76 - [OTHER] Use
simplejson
with Python 3.x, #83
- [FEATURE] Constant tags client option to append tags to every submitted metrics, #68 (thanks @jofusa)
- [FEATURE] Embeddable graphs API, #62
- [FEATURE] Optional metric name for the timed decorator, #71 (thanks @clokep)
- [IMPROVEMENT] Option to use the verify parameter in requests to configure a ca certificates file or to disable verification, #70 (thanks @ogst)
- [BUGFIX] Fix
Metric.send
method to play nice with multiple metrics, #59 (thanks @kuzmich) - [BUGFIX] Fix socket creation thread-unsafe code, #57 #60 (thanks @GrahamDumpleton)
- [BUGFIX] Rename
metric_type
parameter totype
inMetric.send
method, #64 - [FEATURE] Add new monitor
unmute
arg (all_scopes
) to allow clearing all mute settings for a given monitor, #58 - [FEATURE] Revoke a shared screenboard, #46
- [IMPROVEMENT] Add a timed context manager to
statsd
, #65 (thanks @clokep) - [IMPROVEMENT] Adjust Dogshell descriptions to distinguish between
mute_all
/unmute_all
andmute
/unmute
methods, #58 - [IMPROVEMENT] Include additional information in 403 response exceptions, #58
- [OTHER] Update
requests
library, per CVE-2015-2296, #63
- [BUGFIX] Fix socket creation thread-unsafe code, #57 #60 (thanks @GrahamDumpleton)
- [BUGFIX] Always fall back when unable to determine hostname from
datadog.conf
, #53 - [FEATURE] Add
message
parameter support to host muting commands, #51
- [BUGFIX] Fix an unexpected exception raised in
initialize
method on Windows with Python3.4, #47 - [FEATURE] Add support for metric query API, #45
- [BUGFIX] Fix a wrong event post parameter in Dogshell/Dogwrap, #36
- [BUGFIX] Fix wrong keys in auto-generated .dogrc, #34
- [FEATURE] Add a priority option to Dogwrap, or auto-detect it based on output, #42
- [FEATURE] Initialize API parameters from environment variables, #43
- [FEATURE] Stream Dogwrap command output during its execution or buffer it, #39
- [OTHER] Add PyPI classifiers, #41
- [FEATURE]
DATADOG_HOST
environment variable to determine which API host to use, #30
- [BUGFIX] Fix a leftover debug statement
- [BUGFIX] Fix test requirements
- [BUGFIX] Import json module from
datadog.compat
- [OTHER] Contributing update
See #8, thanks @benweatherman
- [BUGFIX] Fixes
threadstats
unsafe thread operations, #6 - [FEATURE] Add tests to check
statsd
andthreadstats
thread safety, #6 - [OTHER] Changelog update, #9 @miketheman
- [BUGFIX] Fix a typo that was causing an initialization issue with
datadog.dogshell
, #7
- First release