File: client.rb

package info (click to toggle)
ruby-jaeger-client 1.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 624 kB
  • sloc: ruby: 3,381; makefile: 6; sh: 4
file content (77 lines) | stat: -rw-r--r-- 2,383 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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
# frozen_string_literal: true

$LOAD_PATH.push("#{File.dirname(__FILE__)}/../../thrift/gen-rb")

require 'opentracing'
require 'jaeger/thrift/agent'
require 'logger'
require 'time'
require 'net/http'
require 'cgi'
require 'json'

require_relative 'tracer'
require_relative 'span'
require_relative 'span_context'
require_relative 'scope'
require_relative 'scope_manager'
require_relative 'trace_id'
require_relative 'udp_sender'
require_relative 'http_sender'
require_relative 'reporters'
require_relative 'client/version'
require_relative 'samplers'
require_relative 'encoders/thrift_encoder'
require_relative 'injectors'
require_relative 'extractors'
require_relative 'rate_limiter'
require_relative 'thrift_tag_builder'
require_relative 'recurring_executor'

module Jaeger
  module Client
    # We initially had everything under Jaeger::Client namespace. This however
    # was not very useful and was removed. These assignments are here for
    # backwards compatibility. Fine to remove in the next major version.
    UdpSender = Jaeger::UdpSender
    HttpSender = Jaeger::HttpSender
    Encoders = Jaeger::Encoders
    Samplers = Jaeger::Samplers
    Reporters = Jaeger::Reporters
    Injectors = Jaeger::Injectors
    Extractors = Jaeger::Extractors

    DEFAULT_FLUSH_INTERVAL = 10

    def self.build(service_name:,
                   host: '127.0.0.1',
                   port: 6831,
                   flush_interval: DEFAULT_FLUSH_INTERVAL,
                   sampler: Samplers::Const.new(true),
                   logger: Logger.new($stdout),
                   sender: nil,
                   reporter: nil,
                   injectors: {},
                   extractors: {},
                   tags: {})
      encoder = Encoders::ThriftEncoder.new(service_name: service_name, tags: tags, logger: logger)

      if sender
        warn '[DEPRECATION] Passing `sender` directly to Jaeger::Client.build is deprecated.' \
             'Please use `reporter` instead.'
      end

      reporter ||= Reporters::RemoteReporter.new(
        sender: sender || UdpSender.new(host: host, port: port, encoder: encoder, logger: logger),
        flush_interval: flush_interval
      )

      Tracer.new(
        reporter: reporter,
        sampler: sampler,
        injectors: Injectors.prepare(injectors),
        extractors: Extractors.prepare(extractors)
      )
    end
  end
end