Class: OpenTelemetry::Sampler::XRay::AWSXRaySamplingClient

Inherits:
Object
  • Object
show all
Defined in:
lib/opentelemetry/sampler/xray/aws_xray_sampling_client.rb

Overview

AWSXRaySamplingClient is responsible for making '/GetSamplingRules' and '/SamplingTargets' calls to AWS X-Ray to retrieve Sampling Rules and Sampling Targets respectively

Instance Method Summary collapse

Constructor Details

#initialize(endpoint) ⇒ AWSXRaySamplingClient

Returns a new instance of AWSXRaySamplingClient.



17
18
19
20
21
22
23
24
# File 'lib/opentelemetry/sampler/xray/aws_xray_sampling_client.rb', line 17

def initialize(endpoint)
  @endpoint = endpoint
  @host, @port = parse_endpoint(@endpoint)

  @sampling_rules_url = URI::HTTP.build(host: @host, path: '/GetSamplingRules', port: @port)
  @sampling_targets_url = URI::HTTP.build(host: @host, path: '/SamplingTargets', port: @port)
  @request_headers = { 'content-type': 'application/json' }
end

Instance Method Details

#fetch_sampling_rulesObject



26
27
28
29
30
31
32
33
34
35
# File 'lib/opentelemetry/sampler/xray/aws_xray_sampling_client.rb', line 26

def fetch_sampling_rules
  begin
    OpenTelemetry::Common::Utilities.untraced do
      return Net::HTTP.post(@sampling_rules_url, '{}', @request_headers)
    end
  rescue StandardError => e
    OpenTelemetry.logger.debug("Error occurred when fetching Sampling Rules: #{e}")
  end
  nil
end

#fetch_sampling_targets(request_body) ⇒ Object



37
38
39
40
41
42
43
44
45
46
# File 'lib/opentelemetry/sampler/xray/aws_xray_sampling_client.rb', line 37

def fetch_sampling_targets(request_body)
  begin
    OpenTelemetry::Common::Utilities.untraced do
      return Net::HTTP.post(@sampling_targets_url, request_body.to_json, @request_headers)
    end
  rescue StandardError => e
    OpenTelemetry.logger.debug("Error occurred when fetching Sampling Targets: #{e}")
  end
  nil
end