ddtrace 1.12.1 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +109 -9
  3. data/ext/ddtrace_profiling_native_extension/collectors_thread_context.c +97 -14
  4. data/ext/ddtrace_profiling_native_extension/extconf.rb +6 -0
  5. data/ext/ddtrace_profiling_native_extension/http_transport.c +19 -6
  6. data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +1 -1
  7. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +41 -2
  8. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +6 -0
  9. data/ext/ddtrace_profiling_native_extension/stack_recorder.c +6 -10
  10. data/ext/ddtrace_profiling_native_extension/time_helpers.c +40 -4
  11. data/ext/ddtrace_profiling_native_extension/time_helpers.h +14 -0
  12. data/lib/datadog/appsec/component.rb +9 -0
  13. data/lib/datadog/appsec/configuration/settings.rb +104 -195
  14. data/lib/datadog/appsec/configuration.rb +0 -79
  15. data/lib/datadog/appsec/contrib/auto_instrument.rb +2 -4
  16. data/lib/datadog/appsec/contrib/devise/event.rb +57 -0
  17. data/lib/datadog/appsec/contrib/devise/ext.rb +13 -0
  18. data/lib/datadog/appsec/contrib/devise/integration.rb +42 -0
  19. data/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb +76 -0
  20. data/lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb +52 -0
  21. data/lib/datadog/appsec/contrib/devise/patcher.rb +45 -0
  22. data/lib/datadog/appsec/contrib/devise/resource.rb +35 -0
  23. data/lib/datadog/appsec/contrib/devise/tracking.rb +49 -0
  24. data/lib/datadog/appsec/contrib/rack/ext.rb +2 -1
  25. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +1 -1
  26. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +1 -1
  27. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +1 -1
  28. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +12 -7
  29. data/lib/datadog/appsec/contrib/rails/ext.rb +3 -2
  30. data/lib/datadog/appsec/contrib/rails/framework.rb +1 -3
  31. data/lib/datadog/appsec/contrib/rails/patcher.rb +8 -8
  32. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +1 -1
  33. data/lib/datadog/appsec/contrib/sinatra/ext.rb +2 -1
  34. data/lib/datadog/appsec/contrib/sinatra/framework.rb +1 -3
  35. data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +1 -1
  36. data/lib/datadog/appsec/event.rb +1 -1
  37. data/lib/datadog/appsec/extensions.rb +1 -130
  38. data/lib/datadog/appsec/monitor/reactive/set_user.rb +1 -1
  39. data/lib/datadog/appsec/processor.rb +1 -1
  40. data/lib/datadog/appsec/rate_limiter.rb +1 -1
  41. data/lib/datadog/appsec/remote.rb +1 -1
  42. data/lib/datadog/appsec.rb +1 -2
  43. data/lib/datadog/ci/configuration/settings.rb +6 -8
  44. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +7 -5
  45. data/lib/datadog/ci/contrib/cucumber/ext.rb +10 -8
  46. data/lib/datadog/ci/contrib/minitest/configuration/settings.rb +35 -0
  47. data/lib/datadog/ci/contrib/minitest/ext.rb +21 -0
  48. data/lib/datadog/ci/contrib/minitest/integration.rb +49 -0
  49. data/lib/datadog/ci/contrib/minitest/patcher.rb +27 -0
  50. data/lib/datadog/ci/contrib/minitest/test_helper.rb +68 -0
  51. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +7 -5
  52. data/lib/datadog/ci/contrib/rspec/ext.rb +9 -7
  53. data/lib/datadog/ci.rb +1 -0
  54. data/lib/datadog/core/backport.rb +51 -0
  55. data/lib/datadog/core/configuration/base.rb +5 -5
  56. data/lib/datadog/core/configuration/components.rb +6 -1
  57. data/lib/datadog/core/configuration/ext.rb +7 -5
  58. data/lib/datadog/core/configuration/option.rb +269 -19
  59. data/lib/datadog/core/configuration/option_definition.rb +76 -11
  60. data/lib/datadog/core/configuration/options.rb +22 -10
  61. data/lib/datadog/core/configuration/settings.rb +116 -61
  62. data/lib/datadog/core/environment/ext.rb +13 -11
  63. data/lib/datadog/core/environment/yjit.rb +58 -0
  64. data/lib/datadog/core/git/ext.rb +24 -22
  65. data/lib/datadog/core/logging/ext.rb +3 -1
  66. data/lib/datadog/core/metrics/ext.rb +7 -5
  67. data/lib/datadog/core/remote/client/capabilities.rb +5 -0
  68. data/lib/datadog/core/remote/client.rb +3 -0
  69. data/lib/datadog/core/remote/component.rb +25 -34
  70. data/lib/datadog/core/remote/configuration/content.rb +28 -1
  71. data/lib/datadog/core/remote/configuration/repository.rb +3 -1
  72. data/lib/datadog/core/remote/ext.rb +1 -1
  73. data/lib/datadog/core/remote/negotiation.rb +17 -4
  74. data/lib/datadog/core/runtime/ext.rb +22 -12
  75. data/lib/datadog/core/runtime/metrics.rb +43 -0
  76. data/lib/datadog/core/telemetry/client.rb +12 -2
  77. data/lib/datadog/core/telemetry/emitter.rb +4 -2
  78. data/lib/datadog/core/telemetry/event.rb +19 -4
  79. data/lib/datadog/core/telemetry/ext.rb +4 -1
  80. data/lib/datadog/core/telemetry/heartbeat.rb +2 -4
  81. data/lib/datadog/core/telemetry/http/ext.rb +10 -8
  82. data/lib/datadog/core/telemetry/http/transport.rb +1 -0
  83. data/lib/datadog/core/telemetry/v2/app_client_configuration_change.rb +41 -0
  84. data/lib/datadog/core/telemetry/v2/request.rb +29 -0
  85. data/lib/datadog/core/transport/http/client.rb +1 -1
  86. data/lib/datadog/core/transport/http/config.rb +10 -0
  87. data/lib/datadog/core/utils/duration.rb +52 -0
  88. data/lib/datadog/core/utils/hash.rb +47 -0
  89. data/lib/datadog/core/utils/network.rb +1 -1
  90. data/lib/datadog/core/utils/safe_dup.rb +27 -20
  91. data/lib/datadog/core/utils.rb +1 -1
  92. data/lib/datadog/core/workers/async.rb +2 -2
  93. data/lib/datadog/kit/appsec/events.rb +139 -89
  94. data/lib/datadog/kit/identity.rb +80 -65
  95. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +3 -0
  96. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +1 -0
  97. data/lib/datadog/profiling/collectors/thread_context.rb +9 -2
  98. data/lib/datadog/profiling/component.rb +41 -9
  99. data/lib/datadog/profiling/exporter.rb +5 -1
  100. data/lib/datadog/profiling/flush.rb +9 -2
  101. data/lib/datadog/profiling/http_transport.rb +4 -1
  102. data/lib/datadog/profiling/load_native_extension.rb +7 -1
  103. data/lib/datadog/profiling.rb +11 -1
  104. data/lib/datadog/tracing/component.rb +58 -6
  105. data/lib/datadog/tracing/configuration/dynamic/option.rb +71 -0
  106. data/lib/datadog/tracing/configuration/dynamic.rb +64 -0
  107. data/lib/datadog/tracing/configuration/ext.rb +35 -32
  108. data/lib/datadog/tracing/configuration/http.rb +74 -0
  109. data/lib/datadog/tracing/configuration/settings.rb +106 -92
  110. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +9 -6
  111. data/lib/datadog/tracing/contrib/action_cable/ext.rb +20 -18
  112. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +9 -6
  113. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +20 -18
  114. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +8 -6
  115. data/lib/datadog/tracing/contrib/action_pack/ext.rb +10 -8
  116. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +9 -6
  117. data/lib/datadog/tracing/contrib/action_view/ext.rb +12 -10
  118. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +13 -7
  119. data/lib/datadog/tracing/contrib/active_job/ext.rb +25 -23
  120. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +1 -1
  121. data/lib/datadog/tracing/contrib/active_job/patcher.rb +1 -1
  122. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +9 -6
  123. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +12 -10
  124. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +9 -7
  125. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +0 -8
  126. data/lib/datadog/tracing/contrib/active_record/ext.rb +17 -15
  127. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +0 -5
  128. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +9 -7
  129. data/lib/datadog/tracing/contrib/active_support/ext.rb +18 -16
  130. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +14 -7
  131. data/lib/datadog/tracing/contrib/aws/ext.rb +37 -24
  132. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +9 -5
  133. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +3 -2
  134. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +4 -2
  135. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +14 -7
  136. data/lib/datadog/tracing/contrib/dalli/ext.rb +19 -11
  137. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +8 -6
  138. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +13 -7
  139. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +16 -14
  140. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +14 -7
  141. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +21 -15
  142. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +8 -5
  143. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +16 -9
  144. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +43 -3
  145. data/lib/datadog/tracing/contrib/ethon/ext.rb +19 -11
  146. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +0 -5
  147. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +19 -10
  148. data/lib/datadog/tracing/contrib/excon/ext.rb +16 -8
  149. data/lib/datadog/tracing/contrib/excon/middleware.rb +20 -5
  150. data/lib/datadog/tracing/contrib/ext.rb +23 -1
  151. data/lib/datadog/tracing/contrib/extensions.rb +32 -0
  152. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +20 -10
  153. data/lib/datadog/tracing/contrib/faraday/ext.rb +16 -8
  154. data/lib/datadog/tracing/contrib/faraday/middleware.rb +16 -5
  155. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +8 -6
  156. data/lib/datadog/tracing/contrib/grape/ext.rb +16 -14
  157. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +8 -6
  158. data/lib/datadog/tracing/contrib/graphql/ext.rb +7 -5
  159. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +19 -9
  160. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +29 -20
  161. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +21 -20
  162. data/lib/datadog/tracing/contrib/grpc/ext.rb +16 -13
  163. data/lib/datadog/tracing/contrib/grpc/formatting.rb +127 -0
  164. data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +3 -2
  165. data/lib/datadog/tracing/contrib/hanami/ext.rb +10 -8
  166. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +4 -7
  167. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +33 -11
  168. data/lib/datadog/tracing/contrib/http/ext.rb +16 -9
  169. data/lib/datadog/tracing/contrib/http/instrumentation.rb +17 -5
  170. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +33 -11
  171. data/lib/datadog/tracing/contrib/httpclient/ext.rb +17 -9
  172. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +17 -5
  173. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +33 -11
  174. data/lib/datadog/tracing/contrib/httprb/ext.rb +16 -9
  175. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +17 -5
  176. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +9 -6
  177. data/lib/datadog/tracing/contrib/kafka/ext.rb +42 -39
  178. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +3 -2
  179. data/lib/datadog/tracing/contrib/lograge/ext.rb +3 -1
  180. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +1 -0
  181. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +14 -7
  182. data/lib/datadog/tracing/contrib/mongodb/ext.rb +20 -16
  183. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +9 -5
  184. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +17 -14
  185. data/lib/datadog/tracing/contrib/mysql2/ext.rb +15 -10
  186. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +9 -5
  187. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +52 -0
  188. data/lib/datadog/tracing/contrib/opensearch/ext.rb +37 -0
  189. data/lib/datadog/tracing/contrib/opensearch/integration.rb +44 -0
  190. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +128 -0
  191. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +81 -0
  192. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +17 -14
  193. data/lib/datadog/tracing/contrib/pg/ext.rb +22 -19
  194. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +9 -5
  195. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +14 -7
  196. data/lib/datadog/tracing/contrib/presto/ext.rb +25 -20
  197. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +9 -5
  198. data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +12 -10
  199. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +12 -8
  200. data/lib/datadog/tracing/contrib/qless/ext.rb +14 -12
  201. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +21 -12
  202. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +9 -7
  203. data/lib/datadog/tracing/contrib/racecar/event.rb +0 -5
  204. data/lib/datadog/tracing/contrib/racecar/ext.rb +20 -18
  205. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +16 -12
  206. data/lib/datadog/tracing/contrib/rack/ext.rb +18 -16
  207. data/lib/datadog/tracing/contrib/rack/header_collection.rb +3 -0
  208. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +53 -0
  209. data/lib/datadog/tracing/contrib/rack/middlewares.rb +8 -49
  210. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +15 -11
  211. data/lib/datadog/tracing/contrib/rails/ext.rb +7 -5
  212. data/lib/datadog/tracing/contrib/rails/log_injection.rb +4 -10
  213. data/lib/datadog/tracing/contrib/rails/patcher.rb +10 -41
  214. data/lib/datadog/tracing/contrib/rails/railtie.rb +3 -3
  215. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +12 -9
  216. data/lib/datadog/tracing/contrib/rake/ext.rb +14 -12
  217. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +17 -9
  218. data/lib/datadog/tracing/contrib/redis/ext.rb +22 -15
  219. data/lib/datadog/tracing/contrib/redis/tags.rb +9 -5
  220. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +13 -7
  221. data/lib/datadog/tracing/contrib/resque/ext.rb +9 -7
  222. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +16 -9
  223. data/lib/datadog/tracing/contrib/rest_client/ext.rb +15 -8
  224. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +20 -5
  225. data/lib/datadog/tracing/contrib/roda/configuration/settings.rb +9 -6
  226. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +3 -2
  227. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +3 -1
  228. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +1 -0
  229. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +9 -6
  230. data/lib/datadog/tracing/contrib/sequel/ext.rb +10 -8
  231. data/lib/datadog/tracing/contrib/sequel/utils.rb +2 -7
  232. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +14 -8
  233. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +14 -12
  234. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +18 -11
  235. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +32 -30
  236. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +11 -9
  237. data/lib/datadog/tracing/contrib/sinatra/env.rb +0 -17
  238. data/lib/datadog/tracing/contrib/sinatra/ext.rb +21 -19
  239. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +3 -14
  240. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +14 -8
  241. data/lib/datadog/tracing/contrib/sneakers/ext.rb +1 -0
  242. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +1 -1
  243. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +74 -10
  244. data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +9 -6
  245. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +9 -6
  246. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +15 -13
  247. data/lib/datadog/tracing/contrib/utils/database.rb +5 -3
  248. data/lib/datadog/tracing/correlation.rb +9 -12
  249. data/lib/datadog/tracing/diagnostics/ext.rb +21 -19
  250. data/lib/datadog/tracing/distributed/b3_multi.rb +2 -2
  251. data/lib/datadog/tracing/distributed/b3_single.rb +1 -1
  252. data/lib/datadog/tracing/distributed/trace_context.rb +52 -17
  253. data/lib/datadog/tracing/metadata/ext.rb +9 -6
  254. data/lib/datadog/tracing/remote.rb +78 -0
  255. data/lib/datadog/tracing/sampling/rule_sampler.rb +29 -0
  256. data/lib/datadog/tracing/span_operation.rb +3 -15
  257. data/lib/datadog/tracing/trace_operation.rb +16 -3
  258. data/lib/datadog/tracing/trace_segment.rb +5 -2
  259. data/lib/datadog/tracing/tracer.rb +10 -1
  260. data/lib/ddtrace/transport/ext.rb +15 -9
  261. data/lib/ddtrace/transport/trace_formatter.rb +9 -0
  262. data/lib/ddtrace/version.rb +9 -12
  263. metadata +38 -10
  264. data/lib/datadog/tracing/contrib/sinatra/headers.rb +0 -35
@@ -12,17 +12,39 @@ module Datadog
12
12
  TAG_SYSTEM = 'db.system'
13
13
  TAG_STATEMENT = 'db.statement'
14
14
  TAG_ROW_COUNT = 'db.row_count'
15
+ PEER_SERVICE_SOURCES = Array[TAG_INSTANCE,
16
+ Tracing::Metadata::Ext::NET::TAG_DESTINATION_NAME,
17
+ Tracing::Metadata::Ext::TAG_PEER_HOSTNAME,
18
+ Tracing::Metadata::Ext::NET::TAG_TARGET_HOST,].freeze
15
19
  end
16
20
 
17
21
  module RPC
18
22
  TAG_SYSTEM = 'rpc.system'
19
23
  TAG_SERVICE = 'rpc.service'
20
24
  TAG_METHOD = 'rpc.method'
25
+ PEER_SERVICE_SOURCES = Array[TAG_SERVICE,
26
+ Tracing::Metadata::Ext::NET::TAG_DESTINATION_NAME,
27
+ Tracing::Metadata::Ext::TAG_PEER_HOSTNAME,
28
+ Tracing::Metadata::Ext::NET::TAG_TARGET_HOST,].freeze
29
+ module GRPC
30
+ TAG_STATUS_CODE = 'rpc.grpc.status_code'
31
+ TAG_FULL_METHOD = 'rpc.grpc.full_method'
32
+ end
21
33
  end
22
34
 
23
35
  module Messaging
24
36
  TAG_SYSTEM = 'messaging.system'
25
- TAG_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key'
37
+ PEER_SERVICE_SOURCES = Array[Tracing::Metadata::Ext::NET::TAG_DESTINATION_NAME,
38
+ Tracing::Metadata::Ext::TAG_PEER_HOSTNAME,
39
+ Tracing::Metadata::Ext::NET::TAG_TARGET_HOST,].freeze
40
+ end
41
+
42
+ module Metadata
43
+ # Name of tag from which where peer.service information was extracted from
44
+ TAG_PEER_SERVICE_SOURCE = '_dd.peer.service.source'
45
+
46
+ # Value of tag from which peer.service value was remapped from
47
+ TAG_PEER_SERVICE_REMAP = '_dd.peer.service.remapped_from'
26
48
  end
27
49
  end
28
50
  end
@@ -108,6 +108,38 @@ module Datadog
108
108
  module Settings
109
109
  InvalidIntegrationError = Class.new(StandardError)
110
110
 
111
+ def self.included(base)
112
+ base.class_eval do
113
+ settings :contrib do
114
+ # Key-value map for explicitly re-mapping peer.service values
115
+ #
116
+ # @default `DD_TRACE_PEER_SERVICE_MAPPING` environment variable converted to hash
117
+ # @return [Hash]
118
+ option :peer_service_mapping do |o|
119
+ o.env Tracing::Configuration::Ext::SpanAttributeSchema::ENV_PEER_SERVICE_MAPPING
120
+ o.type :hash
121
+ o.default({})
122
+ end
123
+
124
+ # Global service name behavior
125
+ settings :global_default_service_name do
126
+ # Overrides default service name to global service name
127
+ #
128
+ # Allows for usage of v1 service name changes without
129
+ # being forced to update schema versions
130
+ #
131
+ # @default `DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED` environment variable, otherwise `false`
132
+ # @return [Boolean]
133
+ option :enabled do |o|
134
+ o.env Tracing::Configuration::Ext::SpanAttributeSchema::ENV_GLOBAL_DEFAULT_SERVICE_NAME_ENABLED
135
+ o.type :bool
136
+ o.default false
137
+ end
138
+ end
139
+ end
140
+ end
141
+ end
142
+
111
143
  # Applies instrumentation for the provided `integration_name`.
112
144
  #
113
145
  # Options may be provided, that are specific to that instrumentation.
@@ -16,23 +16,29 @@ module Datadog
16
16
  end
17
17
 
18
18
  option :enabled do |o|
19
- o.default { env_to_bool(Ext::ENV_ENABLED, true) }
20
- o.lazy
19
+ o.type :bool
20
+ o.env Ext::ENV_ENABLED
21
+ o.default true
21
22
  end
22
23
 
23
24
  option :analytics_enabled do |o|
24
- o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
25
- o.lazy
25
+ o.type :bool
26
+ o.env Ext::ENV_ANALYTICS_ENABLED
27
+ o.default false
26
28
  end
27
29
 
28
30
  option :analytics_sample_rate do |o|
29
- o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
30
- o.lazy
31
+ o.type :float
32
+ o.env Ext::ENV_ANALYTICS_SAMPLE_RATE
33
+ o.default 1.0
31
34
  end
32
35
 
33
- option :distributed_tracing, default: true
34
- option :error_handler, default: DEFAULT_ERROR_HANDLER
35
- option :split_by_domain, default: false
36
+ option :distributed_tracing, default: true, type: :bool
37
+ option :error_handler do |o|
38
+ o.type :proc
39
+ o.experimental_default_proc(&DEFAULT_ERROR_HANDLER)
40
+ end
41
+ option :split_by_domain, default: false, type: :bool
36
42
 
37
43
  option :service_name do |o|
38
44
  o.default do
@@ -41,7 +47,11 @@ module Datadog
41
47
  Ext::DEFAULT_PEER_SERVICE_NAME
42
48
  )
43
49
  end
44
- o.lazy
50
+ end
51
+
52
+ option :peer_service do |o|
53
+ o.type :string, nilable: true
54
+ o.env Ext::ENV_PEER_SERVICE
45
55
  end
46
56
  end
47
57
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Datadog
2
4
  module Tracing
3
5
  module Contrib
@@ -5,14 +7,20 @@ module Datadog
5
7
  # Faraday integration constants
6
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
7
9
  module Ext
8
- ENV_ENABLED = 'DD_TRACE_FARADAY_ENABLED'.freeze
9
- ENV_SERVICE_NAME = 'DD_TRACE_FARADAY_SERVICE_NAME'.freeze
10
- ENV_ANALYTICS_ENABLED = 'DD_TRACE_FARADAY_ANALYTICS_ENABLED'.freeze
11
- ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_FARADAY_ANALYTICS_SAMPLE_RATE'.freeze
12
- DEFAULT_PEER_SERVICE_NAME = 'faraday'.freeze
13
- SPAN_REQUEST = 'faraday.request'.freeze
14
- TAG_COMPONENT = 'faraday'.freeze
15
- TAG_OPERATION_REQUEST = 'request'.freeze
10
+ ENV_ENABLED = 'DD_TRACE_FARADAY_ENABLED'
11
+ ENV_SERVICE_NAME = 'DD_TRACE_FARADAY_SERVICE_NAME'
12
+ ENV_PEER_SERVICE = 'DD_TRACE_FARADAY_PEER_SERVICE'
13
+
14
+ ENV_ANALYTICS_ENABLED = 'DD_TRACE_FARADAY_ANALYTICS_ENABLED'
15
+ ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_FARADAY_ANALYTICS_SAMPLE_RATE'
16
+ DEFAULT_PEER_SERVICE_NAME = 'faraday'
17
+ SPAN_REQUEST = 'faraday.request'
18
+ TAG_COMPONENT = 'faraday'
19
+ TAG_OPERATION_REQUEST = 'request'
20
+ PEER_SERVICE_SOURCES = Array[
21
+ Tracing::Metadata::Ext::TAG_PEER_HOSTNAME,
22
+ Tracing::Metadata::Ext::NET::TAG_DESTINATION_NAME,
23
+ Tracing::Metadata::Ext::NET::TAG_TARGET_HOST,].freeze
16
24
  end
17
25
  end
18
26
  end
@@ -40,16 +40,18 @@ module Datadog
40
40
  span.service = service_name(env[:url].host, options)
41
41
  span.span_type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND
42
42
 
43
+ if options[:peer_service]
44
+ span.set_tag(
45
+ Tracing::Metadata::Ext::TAG_PEER_SERVICE,
46
+ options[:peer_service]
47
+ )
48
+ end
49
+
43
50
  span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CLIENT)
44
51
 
45
52
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
46
53
  span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_REQUEST)
47
54
 
48
- if Contrib::SpanAttributeSchema.default_span_attribute_schema?
49
- # Tag as an external peer service
50
- span.set_tag(Tracing::Metadata::Ext::TAG_PEER_SERVICE, span.service)
51
- end
52
-
53
55
  span.set_tag(Tracing::Metadata::Ext::TAG_PEER_HOSTNAME, env[:url].host)
54
56
 
55
57
  # Set analytics sample rate
@@ -61,12 +63,21 @@ module Datadog
61
63
  span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, env[:method].to_s.upcase)
62
64
  span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_HOST, env[:url].host)
63
65
  span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_PORT, env[:url].port)
66
+ span.set_tags(
67
+ Datadog.configuration.tracing.header_tags.request_tags(env[:request_headers])
68
+ )
69
+
70
+ Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
64
71
  end
65
72
 
66
73
  def handle_response(span, env, options)
67
74
  span.set_error(["Error #{env[:status]}", env[:body]]) if options.fetch(:error_handler).call(env)
68
75
 
69
76
  span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, env[:status])
77
+
78
+ span.set_tags(
79
+ Datadog.configuration.tracing.header_tags.response_tags(env[:response_headers])
80
+ )
70
81
  end
71
82
 
72
83
  def propagate!(trace, span, env)
@@ -13,18 +13,20 @@ module Datadog
13
13
  # @public_api
14
14
  class Settings < Contrib::Configuration::Settings
15
15
  option :enabled do |o|
16
- o.default { env_to_bool(Ext::ENV_ENABLED, true) }
17
- o.lazy
16
+ o.type :bool
17
+ o.env Ext::ENV_ENABLED
18
+ o.default true
18
19
  end
19
20
 
20
21
  option :analytics_enabled do |o|
21
- o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, nil) }
22
- o.lazy
22
+ o.type :bool, nilable: true
23
+ o.env Ext::ENV_ANALYTICS_ENABLED
23
24
  end
24
25
 
25
26
  option :analytics_sample_rate do |o|
26
- o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
27
- o.lazy
27
+ o.type :float
28
+ o.env Ext::ENV_ANALYTICS_SAMPLE_RATE
29
+ o.default 1.0
28
30
  end
29
31
 
30
32
  option :service_name
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Datadog
2
4
  module Tracing
3
5
  module Contrib
@@ -5,20 +7,20 @@ module Datadog
5
7
  # Grape integration constants
6
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
7
9
  module Ext
8
- ENV_ENABLED = 'DD_TRACE_GRAPE_ENABLED'.freeze
9
- ENV_ANALYTICS_ENABLED = 'DD_TRACE_GRAPE_ANALYTICS_ENABLED'.freeze
10
- ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_GRAPE_ANALYTICS_SAMPLE_RATE'.freeze
11
- SPAN_ENDPOINT_RENDER = 'grape.endpoint_render'.freeze
12
- SPAN_ENDPOINT_RUN = 'grape.endpoint_run'.freeze
13
- SPAN_ENDPOINT_RUN_FILTERS = 'grape.endpoint_run_filters'.freeze
14
- TAG_COMPONENT = 'grape'.freeze
15
- TAG_FILTER_TYPE = 'grape.filter.type'.freeze
16
- TAG_OPERATION_ENDPOINT_RENDER = 'endpoint_render'.freeze
17
- TAG_OPERATION_ENDPOINT_RUN = 'endpoint_run'.freeze
18
- TAG_OPERATION_ENDPOINT_RUN_FILTERS = 'endpoint_run_filters'.freeze
19
- TAG_ROUTE_ENDPOINT = 'grape.route.endpoint'.freeze
20
- TAG_ROUTE_PATH = 'grape.route.path'.freeze
21
- TAG_ROUTE_METHOD = 'grape.route.method'.freeze
10
+ ENV_ENABLED = 'DD_TRACE_GRAPE_ENABLED'
11
+ ENV_ANALYTICS_ENABLED = 'DD_TRACE_GRAPE_ANALYTICS_ENABLED'
12
+ ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_GRAPE_ANALYTICS_SAMPLE_RATE'
13
+ SPAN_ENDPOINT_RENDER = 'grape.endpoint_render'
14
+ SPAN_ENDPOINT_RUN = 'grape.endpoint_run'
15
+ SPAN_ENDPOINT_RUN_FILTERS = 'grape.endpoint_run_filters'
16
+ TAG_COMPONENT = 'grape'
17
+ TAG_FILTER_TYPE = 'grape.filter.type'
18
+ TAG_OPERATION_ENDPOINT_RENDER = 'endpoint_render'
19
+ TAG_OPERATION_ENDPOINT_RUN = 'endpoint_run'
20
+ TAG_OPERATION_ENDPOINT_RUN_FILTERS = 'endpoint_run_filters'
21
+ TAG_ROUTE_ENDPOINT = 'grape.route.endpoint'
22
+ TAG_ROUTE_PATH = 'grape.route.path'
23
+ TAG_ROUTE_METHOD = 'grape.route.method'
22
24
  end
23
25
  end
24
26
  end
@@ -12,18 +12,20 @@ module Datadog
12
12
  # @public_api
13
13
  class Settings < Contrib::Configuration::Settings
14
14
  option :enabled do |o|
15
- o.default { env_to_bool(Ext::ENV_ENABLED, true) }
16
- o.lazy
15
+ o.type :bool
16
+ o.env Ext::ENV_ENABLED
17
+ o.default true
17
18
  end
18
19
 
19
20
  option :analytics_enabled do |o|
20
- o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, nil) }
21
- o.lazy
21
+ o.type :bool, nilable: true
22
+ o.env Ext::ENV_ANALYTICS_ENABLED
22
23
  end
23
24
 
24
25
  option :analytics_sample_rate do |o|
25
- o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
26
- o.lazy
26
+ o.type :float
27
+ o.env Ext::ENV_ANALYTICS_SAMPLE_RATE
28
+ o.default 1.0
27
29
  end
28
30
 
29
31
  option :schemas
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Datadog
2
4
  module Tracing
3
5
  module Contrib
@@ -5,11 +7,11 @@ module Datadog
5
7
  # GraphQL integration constants
6
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
7
9
  module Ext
8
- ENV_ENABLED = 'DD_TRACE_GRAPHQL_ENABLED'.freeze
9
- ENV_ANALYTICS_ENABLED = 'DD_TRACE_GRAPHQL_ANALYTICS_ENABLED'.freeze
10
- ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_GRAPHQL_ANALYTICS_SAMPLE_RATE'.freeze
11
- SERVICE_NAME = 'graphql'.freeze
12
- TAG_COMPONENT = 'graphql'.freeze
10
+ ENV_ENABLED = 'DD_TRACE_GRAPHQL_ENABLED'
11
+ ENV_ANALYTICS_ENABLED = 'DD_TRACE_GRAPHQL_ANALYTICS_ENABLED'
12
+ ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_GRAPHQL_ANALYTICS_SAMPLE_RATE'
13
+ SERVICE_NAME = 'graphql'
14
+ TAG_COMPONENT = 'graphql'
13
15
  end
14
16
  end
15
17
  end
@@ -13,21 +13,24 @@ module Datadog
13
13
  # @public_api
14
14
  class Settings < Contrib::Configuration::Settings
15
15
  option :enabled do |o|
16
- o.default { env_to_bool(Ext::ENV_ENABLED, true) }
17
- o.lazy
16
+ o.type :bool
17
+ o.env Ext::ENV_ENABLED
18
+ o.default true
18
19
  end
19
20
 
20
21
  option :analytics_enabled do |o|
21
- o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
22
- o.lazy
22
+ o.type :bool
23
+ o.env Ext::ENV_ANALYTICS_ENABLED
24
+ o.default false
23
25
  end
24
26
 
25
27
  option :analytics_sample_rate do |o|
26
- o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
27
- o.lazy
28
+ o.type :float
29
+ o.env Ext::ENV_ANALYTICS_SAMPLE_RATE
30
+ o.default 1.0
28
31
  end
29
32
 
30
- option :distributed_tracing, default: true
33
+ option :distributed_tracing, default: true, type: :bool
31
34
 
32
35
  option :service_name do |o|
33
36
  o.default do
@@ -36,10 +39,17 @@ module Datadog
36
39
  Ext::DEFAULT_PEER_SERVICE_NAME
37
40
  )
38
41
  end
39
- o.lazy
40
42
  end
41
43
 
42
- option :error_handler, default: Tracing::SpanOperation::Events::DEFAULT_ON_ERROR
44
+ option :peer_service do |o|
45
+ o.type :string, nilable: true
46
+ o.env Ext::ENV_PEER_SERVICE
47
+ end
48
+
49
+ option :error_handler do |o|
50
+ o.type :proc
51
+ o.experimental_default_proc(&Tracing::SpanOperation::Events::DEFAULT_ON_ERROR)
52
+ end
43
53
  end
44
54
  end
45
55
  end
@@ -4,6 +4,7 @@ require_relative '../distributed/propagation'
4
4
  require_relative '../../analytics'
5
5
  require_relative '../ext'
6
6
  require_relative '../../ext'
7
+ require_relative '../formatting'
7
8
 
8
9
  module Datadog
9
10
  module Tracing
@@ -16,37 +17,52 @@ module Datadog
16
17
  # sending the request to the server.
17
18
  class Client < Base
18
19
  def trace(keywords)
19
- keywords[:metadata] ||= {}
20
+ formatter = GRPC::Formatting::FullMethodStringFormatter.new(keywords[:method])
20
21
 
21
22
  options = {
22
23
  span_type: Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND,
23
24
  service: service_name, # Maintain client-side service name configuration
24
- resource: format_resource(keywords[:method])
25
+ resource: formatter.resource_name
25
26
  }
26
27
 
27
28
  Tracing.trace(Ext::SPAN_CLIENT, **options) do |span, trace|
28
- annotate!(trace, span, keywords[:metadata], keywords[:call])
29
-
30
- yield
29
+ annotate!(trace, span, keywords, formatter)
30
+
31
+ begin
32
+ result = yield
33
+ rescue StandardError => e
34
+ code = e.is_a?(::GRPC::BadStatus) ? e.code : ::GRPC::Core::StatusCodes::UNKNOWN
35
+ span.set_tag(Contrib::Ext::RPC::GRPC::TAG_STATUS_CODE, code)
36
+
37
+ raise
38
+ end
39
+ span.set_tag(Contrib::Ext::RPC::GRPC::TAG_STATUS_CODE, ::GRPC::Core::StatusCodes::OK)
40
+ result
31
41
  end
32
42
  end
33
43
 
34
44
  private
35
45
 
36
- def annotate!(trace, span, metadata, call)
46
+ def annotate!(trace, span, keywords, formatter)
47
+ metadata = keywords[:metadata] || {}
48
+ call = keywords[:call]
49
+
37
50
  span.set_tags(metadata)
38
51
 
39
- span.set_tag(Contrib::Ext::RPC::TAG_SYSTEM, Ext::TAG_SYSTEM)
52
+ if datadog_configuration[:peer_service]
53
+ span.set_tag(
54
+ Tracing::Metadata::Ext::TAG_PEER_SERVICE,
55
+ datadog_configuration[:peer_service]
56
+ )
57
+ end
40
58
 
41
59
  span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CLIENT)
42
-
43
60
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
44
61
  span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_CLIENT)
45
62
 
46
- if Contrib::SpanAttributeSchema.default_span_attribute_schema?
47
- # Tag as an external peer service
48
- span.set_tag(Tracing::Metadata::Ext::TAG_PEER_SERVICE, span.service)
49
- end
63
+ span.set_tag(Contrib::Ext::RPC::TAG_SYSTEM, Ext::TAG_SYSTEM)
64
+ span.set_tag(Contrib::Ext::RPC::GRPC::TAG_FULL_METHOD, formatter.grpc_full_method)
65
+ span.set_tag(Contrib::Ext::RPC::TAG_SERVICE, formatter.rpc_service)
50
66
 
51
67
  host, _port = find_host_port(call)
52
68
  span.set_tag(Tracing::Metadata::Ext::TAG_PEER_HOSTNAME, host) if host
@@ -58,18 +74,11 @@ module Datadog
58
74
  Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
59
75
 
60
76
  Distributed::Propagation::INSTANCE.inject!(trace, metadata) if distributed_tracing?
77
+ Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
61
78
  rescue StandardError => e
62
79
  Datadog.logger.debug("GRPC client trace failed: #{e}")
63
80
  end
64
81
 
65
- def format_resource(proto_method)
66
- proto_method
67
- .downcase
68
- .split('/')
69
- .reject(&:empty?)
70
- .join('.')
71
- end
72
-
73
82
  def find_deadline(call)
74
83
  return unless call.respond_to?(:deadline) && call.deadline.is_a?(Time)
75
84
 
@@ -4,6 +4,7 @@ require_relative '../distributed/propagation'
4
4
  require_relative '../../analytics'
5
5
  require_relative '../ext'
6
6
  require_relative '../../ext'
7
+ require_relative '../formatting'
7
8
 
8
9
  module Datadog
9
10
  module Tracing
@@ -17,11 +18,12 @@ module Datadog
17
18
  # its tracing context with a parent client-side context
18
19
  class Server < Base
19
20
  def trace(keywords)
20
- method = keywords[:method]
21
+ formatter = GRPC::Formatting::MethodObjectFormatter.new(keywords[:method])
22
+
21
23
  options = {
22
24
  span_type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND,
23
25
  service: service_name, # TODO: Remove server-side service name configuration
24
- resource: format_resource(method),
26
+ resource: formatter.resource_name,
25
27
  on_error: error_handler
26
28
  }
27
29
  metadata = keywords[:call].metadata
@@ -29,13 +31,18 @@ module Datadog
29
31
  set_distributed_context!(metadata)
30
32
 
31
33
  Tracing.trace(Ext::SPAN_SERVICE, **options) do |span|
32
- span.set_tag(Contrib::Ext::RPC::TAG_SYSTEM, Ext::TAG_SYSTEM)
33
- span.set_tag(Contrib::Ext::RPC::TAG_SERVICE, method.owner.to_s)
34
- span.set_tag(Contrib::Ext::RPC::TAG_METHOD, method.name)
34
+ annotate!(span, metadata, formatter)
35
35
 
36
- annotate!(span, metadata)
36
+ begin
37
+ yield
38
+ rescue StandardError => e
39
+ code = e.is_a?(::GRPC::BadStatus) ? e.code : ::GRPC::Core::StatusCodes::UNKNOWN
40
+ span.set_tag(Contrib::Ext::RPC::GRPC::TAG_STATUS_CODE, code)
37
41
 
38
- yield
42
+ raise
43
+ else
44
+ span.set_tag(Contrib::Ext::RPC::GRPC::TAG_STATUS_CODE, ::GRPC::Core::StatusCodes::OK)
45
+ end
39
46
  end
40
47
  end
41
48
 
@@ -49,7 +56,7 @@ module Datadog
49
56
  )
50
57
  end
51
58
 
52
- def annotate!(span, metadata)
59
+ def annotate!(span, metadata, formatter)
53
60
  metadata.each do |header, value|
54
61
  # Datadog propagation headers are considered internal implementation detail.
55
62
  next if header.to_s.start_with?(Tracing::Distributed::Datadog::TAGS_PREFIX)
@@ -58,27 +65,21 @@ module Datadog
58
65
  end
59
66
 
60
67
  span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_SERVER)
61
-
62
68
  span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
63
69
  span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_SERVICE)
64
70
 
71
+ span.set_tag(Contrib::Ext::RPC::TAG_SYSTEM, Ext::TAG_SYSTEM)
72
+ span.set_tag(Contrib::Ext::RPC::TAG_SERVICE, formatter.legacy_grpc_service)
73
+ span.set_tag(Contrib::Ext::RPC::TAG_METHOD, formatter.legacy_grpc_method)
74
+ span.set_tag(Contrib::Ext::RPC::GRPC::TAG_FULL_METHOD, formatter.grpc_full_method)
75
+
65
76
  # Set analytics sample rate
66
77
  Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
67
78
 
68
79
  # Measure service stats
69
80
  Contrib::Analytics.set_measured(span)
70
81
  rescue StandardError => e
71
- Datadog.logger.debug("GRPC client trace failed: #{e}")
72
- end
73
-
74
- def format_resource(proto_method)
75
- proto_method
76
- .owner
77
- .to_s
78
- .downcase
79
- .split('::')
80
- .<<(proto_method.name)
81
- .join('.')
82
+ Datadog.logger.debug("GRPC server trace failed: #{e}")
82
83
  end
83
84
  end
84
85
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Datadog
2
4
  module Tracing
3
5
  module Contrib
@@ -5,19 +7,20 @@ module Datadog
5
7
  # gRPC integration constants
6
8
  # @public_api Changing resource names, tag names, or environment variables creates breaking changes.
7
9
  module Ext
8
- ENV_ENABLED = 'DD_TRACE_GRPC_ENABLED'.freeze
9
- ENV_SERVICE_NAME = 'DD_TRACE_GRPC_SERVICE_NAME'.freeze
10
- ENV_ANALYTICS_ENABLED = 'DD_TRACE_GRPC_ANALYTICS_ENABLED'.freeze
11
- ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_GRPC_ANALYTICS_SAMPLE_RATE'.freeze
12
- DEFAULT_PEER_SERVICE_NAME = 'grpc'.freeze
13
- SPAN_CLIENT = 'grpc.client'.freeze
14
- SPAN_SERVICE = 'grpc.service'.freeze
15
- TAG_CLIENT_DEADLINE = 'grpc.client.deadline'.freeze
16
- TAG_COMPONENT = 'grpc'.freeze
17
- TAG_OPERATION_CLIENT = 'client'.freeze
18
- TAG_OPERATION_SERVICE = 'service'.freeze
19
-
20
- TAG_SYSTEM = 'grpc'.freeze
10
+ ENV_ENABLED = 'DD_TRACE_GRPC_ENABLED'
11
+ ENV_SERVICE_NAME = 'DD_TRACE_GRPC_SERVICE_NAME'
12
+ ENV_PEER_SERVICE = 'DD_TRACE_GRPC_PEER_SERVICE'
13
+ ENV_ANALYTICS_ENABLED = 'DD_TRACE_GRPC_ANALYTICS_ENABLED'
14
+ ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_GRPC_ANALYTICS_SAMPLE_RATE'
15
+ DEFAULT_PEER_SERVICE_NAME = 'grpc'
16
+ SPAN_CLIENT = 'grpc.client'
17
+ SPAN_SERVICE = 'grpc.service'
18
+ TAG_CLIENT_DEADLINE = 'grpc.client.deadline'
19
+ TAG_COMPONENT = 'grpc'
20
+ TAG_OPERATION_CLIENT = 'client'
21
+ TAG_OPERATION_SERVICE = 'service'
22
+ TAG_SYSTEM = 'grpc'
23
+ PEER_SERVICE_SOURCES = Contrib::Ext::RPC::PEER_SERVICE_SOURCES.freeze
21
24
  end
22
25
  end
23
26
  end