Module: Datadog::Tracing::Transport::HTTP::API
- Defined in:
- lib/datadog/tracing/transport/http/api.rb
Overview
Namespace for API components
Constant Summary collapse
- V4 =
Default API versions
'v0.4'- V3 =
'v0.3'
Class Method Summary collapse
-
.cloudwise_integrated_mode? ⇒ Boolean
检查是否启用 integrated_mode.
- .defaults ⇒ Object
-
.get_prefix_by_mode(mode) ⇒ String?
根据模式获取前缀.
-
.get_traces_v4_path ⇒ Object
获取 Traces V4 API 路径 优先级:api_prefix_mode > api_prefix > integrated_mode > 默认.
Class Method Details
.cloudwise_integrated_mode? ⇒ Boolean
检查是否启用 integrated_mode
101 102 103 104 105 106 107 108 109 |
# File 'lib/datadog/tracing/transport/http/api.rb', line 101 def cloudwise_integrated_mode? return false unless defined?(Datadog.configuration) && Datadog.configuration.respond_to?(:cloudwise) integrated_mode = Datadog.configuration.cloudwise.integrated_mode token = Datadog.configuration.cloudwise.token integrated_mode && token && !token.empty? end |
.defaults ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/datadog/tracing/transport/http/api.rb', line 23 def defaults # 获取 traces V4 路径(动态根据配置决定) v4_traces_path = get_traces_v4_path Core::Transport::HTTP::API::Map[ V4 => Traces::API::Spec.new do |s| s.traces = Traces::API::Endpoint.new( v4_traces_path, Core::Encoding::MsgpackEncoder, service_rates: true ) end, V3 => Traces::API::Spec.new do |s| s.traces = Traces::API::Endpoint.new( '/v0.3/traces', Core::Encoding::MsgpackEncoder ) end, ].with_fallbacks(V4 => V3) end |
.get_prefix_by_mode(mode) ⇒ String?
根据模式获取前缀
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/datadog/tracing/transport/http/api.rb', line 82 def get_prefix_by_mode(mode) case mode.to_s.downcase when 'doop' '/doop-agent-api' when 'apm' '/apm' when 'custom' # 使用 api_prefix 配置的自定义前缀 if Datadog.configuration.cloudwise.respond_to?(:api_prefix) api_prefix = Datadog.configuration.cloudwise.api_prefix if api_prefix && !api_prefix.empty? return api_prefix.start_with?('/') ? api_prefix : "/#{api_prefix}" end end nil end end |
.get_traces_v4_path ⇒ Object
获取 Traces V4 API 路径 优先级:api_prefix_mode > api_prefix > integrated_mode > 默认
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/datadog/tracing/transport/http/api.rb', line 46 def get_traces_v4_path base_path = '/api/v2/traces' return base_path unless defined?(Datadog.configuration) && Datadog.configuration.respond_to?(:cloudwise) # 优先级 1: api_prefix_mode 模式配置(最高优先级,简化配置) if Datadog.configuration.cloudwise.respond_to?(:api_prefix_mode) api_prefix_mode = Datadog.configuration.cloudwise.api_prefix_mode if api_prefix_mode && !api_prefix_mode.empty? prefix = get_prefix_by_mode(api_prefix_mode) return "#{prefix}#{base_path}" if prefix end end # 优先级 2: 显式配置的 api_prefix(自定义前缀) if Datadog.configuration.cloudwise.respond_to?(:api_prefix) api_prefix = Datadog.configuration.cloudwise.api_prefix if api_prefix && !api_prefix.empty? prefix = api_prefix.start_with?('/') ? api_prefix : "/#{api_prefix}" return "#{prefix}#{base_path}" end end # 优先级 3: integrated_mode 使用 /apm 前缀 if cloudwise_integrated_mode? return "/apm#{base_path}" end # 优先级 4: 无前缀(默认) base_path end |