philbot-scheduler 1.3.1 → 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/scheduler.rb +58 -10
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49a7fca6e5c448e17f2bfd0e36c93e1f2e87ea78230094142d03470b3db469d4
|
4
|
+
data.tar.gz: d7486a4b06f9399bb6b3131e23ba93f818f755c54f393a9c59cb299315275bba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
-
|
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.
|
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-
|
11
|
+
date: 2023-09-06 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: ''
|
14
14
|
email: p.lengauer@gmail.com
|