epsagon 0.0.1 → 0.0.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 87955008fa3a72eef9788a33b27ea5b1b803f05f5b4576980cbfcde82f418b8f
4
- data.tar.gz: 8f55c3de860ad268786aac29fc6d132d60aaf3314858de5b7a396700a8e6b57c
3
+ metadata.gz: a4bed616ed52fa572f7574732c18cdc87a34a6a223f969e3a0bdf95b7a132e77
4
+ data.tar.gz: b502868b35380f9187fbf2a452036060ac61ccabfae509ba4cfb66ed221a7365
5
5
  SHA512:
6
- metadata.gz: c75902bf40adc989654cafad809e2cfac0a9dbba506981a3f52be29868fad8ba77691580bbae616fe793a3fb47e0ef4070d822cb659ae186ba1af86016ecd0a8
7
- data.tar.gz: 7eaf1f961154c97d106bf0ec95d763bbdb049783bbcafb08abe2ff9f685a4ab17f77282b483e42d2a06bf07ef588ab9d346b66a074355141a1f13f5a6f104190
6
+ metadata.gz: 0e4ab80eab789716260eea7824800b1e6c0f193114e72b45da826f36bdefedb59cc4e01147dbe4e8bb5824d10e2c525ed085d6bf256387746967009b13e7425a
7
+ data.tar.gz: cf2f072e8b3688c6988664304b06cad165fe43314aa862dae5ea4ef0ccb0a303f9b48dff56ff2913a5e86377f0186c23b13d7966bf3239c609606ab669e3fee3
data/lib/epsagon.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  require 'rubygems'
4
4
  require 'net/http'
5
5
  require 'bundler/setup'
6
- require 'opentelemetry'
6
+ require 'opentelemetry/sdk'
7
7
 
8
8
  require_relative 'instrumentation/sinatra'
9
9
  require_relative 'instrumentation/net_http'
@@ -14,52 +14,54 @@ Bundler.require
14
14
 
15
15
  # Epsagon tracing main entry point
16
16
  module Epsagon
17
- module_function
18
-
19
- def init(**args)
20
- defaults = {
17
+ @@epsagon_config = {
21
18
  metadata_only: ENV['EPSAGON_METADATA']&.to_s&.downcase != 'false',
22
19
  debug: ENV['EPSAGON_DEBUG']&.to_s&.downcase == 'true',
23
20
  token: ENV['EPSAGON_TOKEN'],
24
21
  app_name: ENV['EPSAGON_APP_NAME'],
25
22
  backend: ENV['EPSAGON_BACKEND'] || 'localhost:55681/v1/trace'
26
23
  }
27
- @@epsagon_config = defaults.merge(args)
28
- end
29
24
 
30
- def metadata_only?
31
- ENV['EPSAGON_METADATA']&.to_s&.downcase != 'false'
32
- end
25
+ module_function
33
26
 
34
- def debug?
35
- ENV['EPSAGON_DEBUG']&.to_s&.downcase == 'true'
27
+ def init(**args)
28
+ @@epsagon_config.merge!(args)
29
+ OpenTelemetry::SDK.configure
36
30
  end
37
31
 
38
32
  # config opentelemetry with epsaon extensions:
39
33
 
40
34
  def epsagon_confs(configurator)
41
35
  configurator.resource = OpenTelemetry::SDK::Resources::Resource.telemetry_sdk.merge(
42
- OpenTelemetry::SDK::Resources::Resource.create({ 'application' => ENV['EPSAGON_APP_NAME'] })
36
+ OpenTelemetry::SDK::Resources::Resource.create({ 'application' => @@epsagon_config[:app_name] })
43
37
  )
44
38
  configurator.use 'EpsagonSinatraInstrumentation', { epsagon: @@epsagon_config }
45
39
  configurator.use 'EpsagonNetHTTPInstrumentation', { epsagon: @@epsagon_config }
46
40
  configurator.use 'EpsagonFaradayInstrumentation', { epsagon: @@epsagon_config }
47
- # if ENV['EPSAGON_BACKEND']
48
- configurator.add_span_processor OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
49
- exporter: OpenTelemetry::Exporter::OTLP::Exporter.new(headers: {
50
- 'x-epsagon-token' => @@epsagon_config[:token]
51
- },
52
- endpoint: @@epsagon_config[:backend],
53
- insecure: @@epsagon_config[:insecure] || false)
54
- )
55
- return unless debug?
56
41
 
57
- configurator.add_span_processor OpenTelemetry::SDK::Trace::Export::SimpleSpanProcessor.new(
58
- OpenTelemetry::SDK::Trace::Export::ConsoleSpanExporter.new
59
- )
42
+ if @@epsagon_config[:debug]
43
+ configurator.add_span_processor OpenTelemetry::SDK::Trace::Export::SimpleSpanProcessor.new(
44
+ OpenTelemetry::Exporter::OTLP::Exporter.new(headers: {
45
+ 'x-epsagon-token' => @@epsagon_config[:token]
46
+ },
47
+ endpoint: @@epsagon_config[:backend],
48
+ insecure: @@epsagon_config[:insecure] || false)
49
+ )
50
+
51
+ configurator.add_span_processor OpenTelemetry::SDK::Trace::Export::SimpleSpanProcessor.new(
52
+ OpenTelemetry::SDK::Trace::Export::ConsoleSpanExporter.new
53
+ )
54
+ else
55
+ configurator.add_span_processor OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
56
+ exporter: OpenTelemetry::Exporter::OTLP::Exporter.new(headers: {
57
+ 'x-epsagon-token' => @@epsagon_config[:token]
58
+ },
59
+ endpoint: @@epsagon_config[:backend],
60
+ insecure: @@epsagon_config[:insecure] || false)
61
+ )
62
+ end
60
63
  end
61
64
 
62
- OpenTelemetry::SDK.configure
63
65
  end
64
66
 
65
67
  # monkey patch to include epsagon confs
@@ -12,10 +12,12 @@ end
12
12
  # Generates Spans for all uses of AWS SDK
13
13
  class EpsagonAwsHandler < Seahorse::Client::Handler
14
14
  def call(context)
15
- span_name = "AWS #{context[:service_name]}"
16
- tracer.in_span(span_name) do |span|
15
+ tracer.in_span('') do |span|
17
16
  @handler.call(context).tap do
18
- span.set_attribute('aws.command', context[:command])
17
+ span.set_attribute('aws.operation', context[:command])
18
+ span.set_attribute('aws.status_code', context[:status_code])
19
+ span.set_attribute('aws.service', context[:service_name])
20
+ span.set_attribute('aws.account_id', context[:account_id])
19
21
  span.set_attribute('aws.status_code', context[:status_code])
20
22
  end
21
23
  end
@@ -68,7 +68,7 @@ module EpsagonNetHTTPExtension
68
68
  end
69
69
 
70
70
  def tracer
71
- EpsagonSinatraInstrumentation.instance.tracer
71
+ EpsagonNetHTTPInstrumentation.instance.tracer
72
72
  end
73
73
  end
74
74
 
metadata CHANGED
@@ -1,17 +1,105 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: epsagon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
- - Assaf Paneth
7
+ - Epsagon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-24 00:00:00.000000000 Z
12
- dependencies: []
13
- description: Epsagon for ruby
14
- email: assaf.paneth@gmail.com
11
+ date: 2021-04-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: opentelemetry-api
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.11.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.11.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: opentelemetry-sdk
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.11.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.11.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: sinatra
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: opentelemetry-instrumentation-sinatra
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.11.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.11.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: opentelemetry-exporter-otlp
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.11.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.11.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: faraday
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.3'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.3'
97
+ description: 'Epsagon provides tracing to Ruby applications for the collection of
98
+ distributed tracing and performance metrics to simplify complex architectures, eliminate
99
+ manual work, visualize and correlate data to identify and fix problems fast.
100
+
101
+ '
102
+ email: info@epsagon.com
15
103
  executables: []
16
104
  extensions: []
17
105
  extra_rdoc_files: []
@@ -23,7 +111,7 @@ files:
23
111
  - lib/instrumentation/net_http.rb
24
112
  - lib/instrumentation/sinatra.rb
25
113
  - lib/util.rb
26
- homepage: https://rubygems.org/gems/epsagon
114
+ homepage: https://github.com/epsagon/epsagon-ruby
27
115
  licenses:
28
116
  - MIT
29
117
  metadata: {}
@@ -33,9 +121,9 @@ require_paths:
33
121
  - lib
34
122
  required_ruby_version: !ruby/object:Gem::Requirement
35
123
  requirements:
36
- - - "~>"
124
+ - - ">="
37
125
  - !ruby/object:Gem::Version
38
- version: '2.7'
126
+ version: 2.0.0
39
127
  required_rubygems_version: !ruby/object:Gem::Requirement
40
128
  requirements:
41
129
  - - ">="
@@ -45,5 +133,6 @@ requirements: []
45
133
  rubygems_version: 3.1.4
46
134
  signing_key:
47
135
  specification_version: 4
48
- summary: Epsagon for ruby
136
+ summary: Epsagon provides tracing to Ruby applications for the collection of distributed
137
+ tracing and performance metrics.
49
138
  test_files: []