philbot-scheduler 1.3.1 → 1.4.1

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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/scheduler.rb +58 -10
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bfdb1868af424341b615986e599981eabc136f8c3383544f273dd178b95ff5e0
4
- data.tar.gz: 563da33d33b14f2c42a6f60380c9f8e70bd4059c2610bbe6f3f0ab4e32abeab1
3
+ metadata.gz: 49a7fca6e5c448e17f2bfd0e36c93e1f2e87ea78230094142d03470b3db469d4
4
+ data.tar.gz: d7486a4b06f9399bb6b3131e23ba93f818f755c54f393a9c59cb299315275bba
5
5
  SHA512:
6
- metadata.gz: 0c0da0ffbf7cecaaa73344508495c755a026884414dc115f8c7aff8f0d315c3211ef5e42fe494b453dc60f17b5def9abee7c325f66e45cadc6fadf2ab9940da7
7
- data.tar.gz: 5a59579482d20a5f49506edbde8f9188965a89efa9d6eddc456bfae56e6d4af39d5fd6a4afb8021311b89a975585e85d9d5b27f233db1ccae41588209a6788c8
6
+ metadata.gz: 368bedf690b2b4a8b50308af4ffc3cb8dc62aae499da6f840caffcc4df5d6c33b211190fce1be12c7fd823b553798705d346d02d6989235feeb3584ed499f17d
7
+ data.tar.gz: 0dad12df59bf85179bed8b236b5a6e7c08ffa99c9c80c9fd3f6943b891a97c757dae9927f5cf51974b34996fc8e6b8be1a967cdbcee2c4aa3b7b048f925a844e
data/lib/scheduler.rb CHANGED
@@ -8,21 +8,67 @@ require 'net/http'
8
8
 
9
9
  $stdout.sync = true
10
10
 
11
- OpenTelemetry::SDK.configure do |c|
12
- c.use_all()
13
- c.resource = OpenTelemetry::SDK::Resources::Resource.create({
14
- OpenTelemetry::SemanticConventions::Resource::SERVICE_NAMESPACE => 'Philbot',
15
- OpenTelemetry::SemanticConventions::Resource::SERVICE_NAME => 'Philbot Scheduler',
16
- OpenTelemetry::SemanticConventions::Resource::SERVICE_INSTANCE_ID => SecureRandom.uuid,
17
- OpenTelemetry::SemanticConventions::Resource::SERVICE_VERSION => ENV['SERVICE_VERSION']
18
- })
19
- for name in ["dt_metadata_e617c525669e072eebe3d0f08212e8f2.properties", "/var/lib/dynatrace/enrichment/dt_metadata.properties"] do
11
+ module ServiceResourceDetector
12
+ extend self
13
+ def detect()
14
+ version = 'unknown'
20
15
  begin
21
- c.resource = OpenTelemetry::SDK::Resources::Resource.create(Hash[*File.read(name.start_with?("/var") ? name : File.read(name)).split(/[=\n]+/)])
16
+ version = File.read('version.txt')
22
17
  rescue
23
18
  end
19
+ return OpenTelemetry::SDK::Resources::Resource.create({
20
+ OpenTelemetry::SemanticConventions::Resource::SERVICE_NAMESPACE => 'Philbot',
21
+ OpenTelemetry::SemanticConventions::Resource::SERVICE_NAME => 'Philbot Scheduler',
22
+ OpenTelemetry::SemanticConventions::Resource::SERVICE_INSTANCE_ID => SecureRandom.uuid,
23
+ OpenTelemetry::SemanticConventions::Resource::SERVICE_VERSION => version
24
+ })
25
+ end
26
+ end
27
+
28
+ module AwsEC2ResourceDetector
29
+ extend self
30
+
31
+ def detect
32
+ token_request = Net::HTTP.new(URI('http://169.254.169.254/latest/api/token'))
33
+ token_request['X-aws-ec2-metadata-token-ttl-seconds'] = '60'
34
+ token = token_request.send_request('PUT', '/latest/api/token').body
35
+ identity = JSON.parse(Net::HTTP.get(URI('http://169.254.169.254/latest/dynamic/instance-identity/document'), { 'X-aws-ec2-metadata-token' => token }).body)
36
+ hostname = Net::HTTP.get(URI('http://169.254.169.254/latest/meta-data/hostname'), { 'X-aws-ec2-metadata-token' => token }).body
37
+ resource_attributes = {}
38
+ unless identity.nil?
39
+ resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_PROVIDER] = 'aws'
40
+ resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_PLATFORM] = 'aws_ec2'
41
+ resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_ACCOUNT_ID] = identity['accountId']
42
+ resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_REGION] = identity['region']
43
+ resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_AVAILABILITY_ZONE] = identity['availabilityZone']
44
+ resource_attributes[OpenTelemetry::SemanticConventions::Resource::HOST_ID] = identity['instanceId']
45
+ resource_attributes[OpenTelemetry::SemanticConventions::Resource::HOST_TYPE] = identity['instanceType']
46
+ resource_attributes[OpenTelemetry::SemanticConventions::Resource::HOST_NAME] = hostname
47
+ end
48
+ resource_attributes.delete_if { |_key, value| value.nil? || value.empty? }
49
+ OpenTelemetry::SDK::Resources::Resource.create(resource_attributes)
50
+ end
51
+ end
52
+
53
+ module DynatraceResourceDetector
54
+ extend self
55
+ def detect()
56
+ for name in ["dt_metadata_e617c525669e072eebe3d0f08212e8f2.properties", "/var/lib/dynatrace/enrichment/dt_metadata.properties"] do
57
+ begin
58
+ return OpenTelemetry::SDK::Resources::Resource.create(Hash[*File.read(name.start_with?("/var") ? name : File.read(name)).split(/[=\n]+/)])
59
+ rescue
60
+ end
61
+ end
62
+ return OpenTelemetry::SDK::Resources::Resource.create({})
24
63
  end
64
+ end
65
+
66
+ OpenTelemetry::SDK.configure do |c|
67
+ c.resource = DynatraceResourceDetector.detect
68
+ c.resource = AwsEC2ResourceDetector.detect
69
+ c.resource = ServiceResourceDetector.detect
25
70
  c.resource = OpenTelemetry::Resource::Detectors::AutoDetector.detect
71
+
26
72
  c.add_span_processor(
27
73
  OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
28
74
  OpenTelemetry::Exporter::OTLP::Exporter.new(
@@ -31,6 +77,8 @@ OpenTelemetry::SDK.configure do |c|
31
77
  )
32
78
  )
33
79
  )
80
+
81
+ c.use_all()
34
82
  end
35
83
 
36
84
  tracer = OpenTelemetry.tracer_provider.tracer('scheduler', '1.0')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: philbot-scheduler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philipp Lengauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-01 00:00:00.000000000 Z
11
+ date: 2023-09-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: ''
14
14
  email: p.lengauer@gmail.com