Skip to content

Commit 4aad7af

Browse files
authored
Merge pull request #843 from DataDog/majorgreys/trace-search-config-complete
Second batch of trace search client configuration
2 parents af17063 + 8eee6b9 commit 4aad7af

File tree

37 files changed

+1280
-479
lines changed

37 files changed

+1280
-479
lines changed

ddtrace/contrib/aiopg/connection.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
from aiopg.utils import _ContextManager
55

66
from .. import dbapi
7-
from ...pin import Pin
7+
from ...constants import ANALYTICS_SAMPLE_RATE_KEY
88
from ...ext import sql, AppTypes
9+
from ...pin import Pin
10+
from ...settings import config
911

1012

1113
class AIOTracedCursor(wrapt.ObjectProxy):
@@ -32,6 +34,12 @@ def _trace_method(self, method, resource, extra_tags, *args, **kwargs):
3234
s.set_tags(pin.tags)
3335
s.set_tags(extra_tags)
3436

37+
# set analytics sample rate
38+
s.set_tag(
39+
ANALYTICS_SAMPLE_RATE_KEY,
40+
config.aiopg.get_analytics_sample_rate()
41+
)
42+
3543
try:
3644
result = yield from method(*args, **kwargs)
3745
return result

ddtrace/contrib/elasticsearch/patch.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
from .quantize import quantize
66

77
from ...compat import urlencode
8+
from ...constants import ANALYTICS_SAMPLE_RATE_KEY
89
from ...ext import elasticsearch as metadata, http, AppTypes
910
from ...pin import Pin
1011
from ...utils.wrappers import unwrap as _u
12+
from ...settings import config
1113

1214

1315
def _es_modules():
@@ -68,6 +70,12 @@ def _perform_request(func, instance, args, kwargs):
6870
span.set_tag(metadata.BODY, instance.serializer.dumps(body))
6971
status = None
7072

73+
# set analytics sample rate
74+
span.set_tag(
75+
ANALYTICS_SAMPLE_RATE_KEY,
76+
config.elasticsearch.get_analytics_sample_rate()
77+
)
78+
7179
span = quantize(span)
7280

7381
try:

ddtrace/contrib/flask_cache/tracers.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
# project
99
from .utils import _extract_conn_tags, _resource_from_cache_prefix
10+
from ...constants import ANALYTICS_SAMPLE_RATE_KEY
11+
from ...settings import config
1012

1113
# 3rd party
1214
from flask.ext.cache import Cache
@@ -51,6 +53,11 @@ def __trace(self, cmd):
5153
# set span tags
5254
s.set_tag(CACHE_BACKEND, self.config.get("CACHE_TYPE"))
5355
s.set_tags(self._datadog_meta)
56+
# set analytics sample rate
57+
s.set_tag(
58+
ANALYTICS_SAMPLE_RATE_KEY,
59+
config.flask_cache.get_analytics_sample_rate()
60+
)
5461
# add connection meta if there is one
5562
if getattr(self.cache, "_client", None):
5663
try:

ddtrace/contrib/grpc/client_interceptor.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
from ddtrace import Pin
44
from .propagation import inject_span
5+
from ...constants import ANALYTICS_SAMPLE_RATE_KEY
6+
from ...settings import config
57

68

79
class GrpcClientInterceptor(
@@ -23,6 +25,11 @@ def _start_span(self, method):
2325
span.set_tag('grpc.port', self._port)
2426
if self._pin.tags:
2527
span.set_tags(self._pin.tags)
28+
# set analytics sample rate
29+
span.set_tag(
30+
ANALYTICS_SAMPLE_RATE_KEY,
31+
config.grpc.get_analytics_sample_rate()
32+
)
2633
return span
2734

2835
def intercept_unary_unary(self, continuation, client_call_details, request):

ddtrace/contrib/httplib/patch.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33

44
# Project
55
from ...compat import PY2, httplib, parse
6-
from ddtrace import config
6+
from ...constants import ANALYTICS_SAMPLE_RATE_KEY
77
from ...ext import http as ext_http
88
from ...http import store_request_headers, store_response_headers
99
from ...internal.logger import get_logger
1010
from ...pin import Pin
11+
from ...settings import config
1112
from ...utils.wrappers import unwrap as _u
1213

1314
span_name = 'httplib.request' if PY2 else 'http.client.request'
@@ -78,6 +79,12 @@ def _wrap_putrequest(func, instance, args, kwargs):
7879

7980
span.set_tag(ext_http.URL, sanitized_url)
8081
span.set_tag(ext_http.METHOD, method)
82+
83+
# set analytics sample rate
84+
span.set_tag(
85+
ANALYTICS_SAMPLE_RATE_KEY,
86+
config.httplib.get_analytics_sample_rate()
87+
)
8188
except Exception:
8289
log.debug('error applying request tags', exc_info=True)
8390
return func(*args, **kwargs)

ddtrace/contrib/kombu/patch.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@
33
from ddtrace.vendor import wrapt
44

55
# project
6-
from ddtrace import config
7-
8-
from ...pin import Pin
9-
from ...utils.formats import get_env
10-
from .constants import DEFAULT_SERVICE
6+
from ...constants import ANALYTICS_SAMPLE_RATE_KEY
117
from ...ext import kombu as kombux
128
from ...ext import AppTypes
13-
from ...utils.wrappers import unwrap
9+
from ...pin import Pin
1410
from ...propagation.http import HTTPPropagator
11+
from ...settings import config
12+
from ...utils.formats import get_env
13+
from ...utils.wrappers import unwrap
14+
15+
from .constants import DEFAULT_SERVICE
1516
from .utils import (
1617
get_exchange_from_args,
1718
get_body_length_from_args,
@@ -88,6 +89,11 @@ def traced_receive(func, instance, args, kwargs):
8889

8990
s.set_tags(extract_conn_tags(message.channel.connection))
9091
s.set_tag(kombux.ROUTING_KEY, message.delivery_info['routing_key'])
92+
# set analytics sample rate
93+
s.set_tag(
94+
ANALYTICS_SAMPLE_RATE_KEY,
95+
config.kombu.get_analytics_sample_rate()
96+
)
9197
return func(*args, **kwargs)
9298

9399

@@ -105,6 +111,11 @@ def traced_publish(func, instance, args, kwargs):
105111
s.set_tag(kombux.ROUTING_KEY, get_routing_key_from_args(args))
106112
s.set_tags(extract_conn_tags(instance.channel.connection))
107113
s.set_metric(kombux.BODY_LEN, get_body_length_from_args(args))
114+
# set analytics sample rate
115+
s.set_tag(
116+
ANALYTICS_SAMPLE_RATE_KEY,
117+
config.kombu.get_analytics_sample_rate()
118+
)
108119
# run the command
109120
propagator.inject(s.context, args[HEADER_POS])
110121
return func(*args, **kwargs)

ddtrace/contrib/pylibmc/client.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66

77
# project
88
import ddtrace
9+
from ...constants import ANALYTICS_SAMPLE_RATE_KEY
910
from ...ext import memcached
1011
from ...ext import net
1112
from ...internal.logger import get_logger
13+
from ...settings import config
1214
from .addrs import parse_addresses
1315

1416

@@ -143,3 +145,9 @@ def _tag_span(self, span):
143145
_, host, port, _ = random.choice(self._addresses)
144146
span.set_meta(net.TARGET_HOST, host)
145147
span.set_meta(net.TARGET_PORT, port)
148+
149+
# set analytics sample rate
150+
span.set_tag(
151+
ANALYTICS_SAMPLE_RATE_KEY,
152+
config.pylibmc.get_analytics_sample_rate()
153+
)

ddtrace/contrib/pymemcache/client.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@
1313
)
1414

1515
# project
16+
from ...constants import ANALYTICS_SAMPLE_RATE_KEY
1617
from ...compat import reraise
1718
from ...ext import net, memcached as memcachedx
1819
from ...internal.logger import get_logger
1920
from ...pin import Pin
21+
from ...settings import config
2022

2123
log = get_logger(__name__)
2224

@@ -141,6 +143,12 @@ def _traced_cmd(self, method_name, *args, **kwargs):
141143
resource=method_name,
142144
span_type=memcachedx.TYPE,
143145
) as span:
146+
# set analytics sample rate
147+
span.set_tag(
148+
ANALYTICS_SAMPLE_RATE_KEY,
149+
config.pymemcache.get_analytics_sample_rate()
150+
)
151+
144152
# try to set relevant tags, catch any exceptions so we don't mess
145153
# with the application
146154
try:

ddtrace/contrib/pymongo/client.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@
99
# project
1010
import ddtrace
1111
from ...compat import iteritems
12+
from ...constants import ANALYTICS_SAMPLE_RATE_KEY
1213
from ...ext import AppTypes
1314
from ...ext import mongo as mongox
1415
from ...ext import net as netx
1516
from ...internal.logger import get_logger
17+
from ...settings import config
1618
from ...utils.deprecation import deprecated
1719
from .parse import parse_spec, parse_query, parse_msg
1820

@@ -118,6 +120,12 @@ def send_message_with_response(self, operation, *args, **kwargs):
118120
# set `mongodb.query` tag and resource for span
119121
_set_query_metadata(span, cmd)
120122

123+
# set analytics sample rate
124+
span.set_tag(
125+
ANALYTICS_SAMPLE_RATE_KEY,
126+
config.pymongo.get_analytics_sample_rate()
127+
)
128+
121129
result = self.__wrapped__.send_message_with_response(
122130
operation,
123131
*args,
@@ -197,6 +205,12 @@ def __trace(self, cmd):
197205
# set `mongodb.query` tag and resource for span
198206
_set_query_metadata(s, cmd)
199207

208+
# set analytics sample rate
209+
s.set_tag(
210+
ANALYTICS_SAMPLE_RATE_KEY,
211+
config.pymongo.get_analytics_sample_rate()
212+
)
213+
200214
if self.address:
201215
_set_address_tags(s, self.address)
202216
return s

ddtrace/contrib/requests/connection.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def _wrap_send(func, instance, args, kwargs):
7373
span.service = _extract_service_name(instance, span, hostname=hostname)
7474

7575
# Configure trace search sample rate
76-
# DEV: Not enabled by default when global analytics config is enabled
76+
# DEV: analytics enabled on per-session basis
7777
cfg = config.get_from(instance)
7878
analytics_enabled = cfg.get('analytics_enabled')
7979
if analytics_enabled:

0 commit comments

Comments
 (0)