philbot-scheduler 1.3.1 → 1.4.0
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 +56 -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: debf37bf197fe5adb00fadb7bfa6772d33514fe53171bb1d2f0bb9cbd356d5f0
|
4
|
+
data.tar.gz: 39a42710a6ef5422cfefbd49f513647cbe87c40a2f318d6cbd8a0f01be613a80
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a8af00df59f782b8af9526a8c56c7510c726d1655c2ff4df96377415ea25b0dc081426f103453b178de13ca8626774839f04460214e0d9213ce5b6236349100
|
7
|
+
data.tar.gz: 2b9ce5e9df7d0d7e9e8eaf038adcd91e5ac908082ea73730f00a5e4321d620f421f05984f87e4f9402bce35a177aea7d09af6505fd2121839adcdfe2567a72ab
|
data/lib/scheduler.rb
CHANGED
@@ -8,21 +8,65 @@ 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 = Net::HTTP.put(URI('http://169.254.169.254/latest/api/token'), { 'X-aws-ec2-metadata-token-ttl-seconds' => '60' }).body
|
33
|
+
identity = JSON.parse(Net::HTTP.get(URI('http://169.254.169.254/latest/dynamic/instance-identity/document'), { 'X-aws-ec2-metadata-token' => token }).body)
|
34
|
+
hostname = Net::HTTP.get(URI('http://169.254.169.254/latest/meta-data/hostname'), { 'X-aws-ec2-metadata-token' => token }).body
|
35
|
+
resource_attributes = {}
|
36
|
+
unless identity.nil?
|
37
|
+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_PROVIDER] = 'aws'
|
38
|
+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_PLATFORM] = 'aws_ec2'
|
39
|
+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_ACCOUNT_ID] = identity['accountId']
|
40
|
+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_REGION] = identity['region']
|
41
|
+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_AVAILABILITY_ZONE] = identity['availabilityZone']
|
42
|
+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::HOST_ID] = identity['instanceId']
|
43
|
+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::HOST_TYPE] = identity['instanceType']
|
44
|
+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::HOST_NAME] = hostname
|
45
|
+
end
|
46
|
+
resource_attributes.delete_if { |_key, value| value.nil? || value.empty? }
|
47
|
+
OpenTelemetry::SDK::Resources::Resource.create(resource_attributes)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
module DynatraceResourceDetector
|
52
|
+
extend self
|
53
|
+
def detect()
|
54
|
+
for name in ["dt_metadata_e617c525669e072eebe3d0f08212e8f2.properties", "/var/lib/dynatrace/enrichment/dt_metadata.properties"] do
|
55
|
+
begin
|
56
|
+
return OpenTelemetry::SDK::Resources::Resource.create(Hash[*File.read(name.start_with?("/var") ? name : File.read(name)).split(/[=\n]+/)])
|
57
|
+
rescue
|
58
|
+
end
|
59
|
+
end
|
60
|
+
return OpenTelemetry::SDK::Resources::Resource.create({})
|
24
61
|
end
|
62
|
+
end
|
63
|
+
|
64
|
+
OpenTelemetry::SDK.configure do |c|
|
65
|
+
c.resource = DynatraceResourceDetector.detect
|
66
|
+
c.resource = AwsEC2ResourceDetector.detect
|
67
|
+
c.resource = ServiceResourceDetector.detect
|
25
68
|
c.resource = OpenTelemetry::Resource::Detectors::AutoDetector.detect
|
69
|
+
|
26
70
|
c.add_span_processor(
|
27
71
|
OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
|
28
72
|
OpenTelemetry::Exporter::OTLP::Exporter.new(
|
@@ -31,6 +75,8 @@ OpenTelemetry::SDK.configure do |c|
|
|
31
75
|
)
|
32
76
|
)
|
33
77
|
)
|
78
|
+
|
79
|
+
c.use_all()
|
34
80
|
end
|
35
81
|
|
36
82
|
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.0
|
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
|