instana 1.195.4 → 1.198.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +6 -2
- data/Rakefile +1 -1
- data/instana.gemspec +3 -7
- data/lib/instana.rb +3 -0
- data/lib/instana/activator.rb +2 -0
- data/lib/instana/backend/agent.rb +62 -0
- data/lib/instana/backend/gc_snapshot.rb +41 -0
- data/lib/instana/backend/host_agent.rb +74 -0
- data/lib/instana/backend/host_agent_activation_observer.rb +97 -0
- data/lib/instana/backend/host_agent_lookup.rb +57 -0
- data/lib/instana/backend/host_agent_reporting_observer.rb +106 -0
- data/lib/instana/backend/process_info.rb +64 -0
- data/lib/instana/backend/request_client.rb +74 -0
- data/lib/instana/backend/serverless_agent.rb +113 -0
- data/lib/instana/base.rb +10 -27
- data/lib/instana/config.rb +8 -22
- data/lib/instana/instrumentation/excon.rb +7 -5
- data/lib/instana/instrumentation/instrumented_request.rb +62 -7
- data/lib/instana/instrumentation/net-http.rb +7 -5
- data/lib/instana/instrumentation/rack.rb +12 -7
- data/lib/instana/logger_delegator.rb +31 -0
- data/lib/instana/{opentracing → open_tracing}/carrier.rb +0 -0
- data/lib/instana/open_tracing/instana_tracer.rb +99 -0
- data/lib/instana/secrets.rb +6 -2
- data/lib/instana/serverless.rb +139 -0
- data/lib/instana/setup.rb +23 -11
- data/lib/instana/snapshot/deltable.rb +25 -0
- data/lib/instana/snapshot/docker_container.rb +151 -0
- data/lib/instana/snapshot/fargate_container.rb +88 -0
- data/lib/instana/snapshot/fargate_process.rb +67 -0
- data/lib/instana/snapshot/fargate_task.rb +72 -0
- data/lib/instana/snapshot/lambda_function.rb +39 -0
- data/lib/instana/snapshot/ruby_process.rb +48 -0
- data/lib/instana/tracer.rb +25 -143
- data/lib/instana/tracing/processor.rb +14 -22
- data/lib/instana/tracing/span.rb +33 -36
- data/lib/instana/tracing/span_context.rb +15 -10
- data/lib/instana/util.rb +8 -69
- data/lib/instana/version.rb +1 -1
- data/lib/opentracing.rb +26 -3
- data/test/backend/agent_test.rb +67 -0
- data/test/backend/gc_snapshot_test.rb +11 -0
- data/test/backend/host_agent_activation_observer_test.rb +72 -0
- data/test/backend/host_agent_lookup_test.rb +78 -0
- data/test/backend/host_agent_reporting_observer_test.rb +192 -0
- data/test/backend/host_agent_test.rb +47 -0
- data/test/backend/process_info_test.rb +63 -0
- data/test/backend/request_client_test.rb +39 -0
- data/test/backend/serverless_agent_test.rb +73 -0
- data/test/config_test.rb +10 -0
- data/test/instana_test.rb +11 -4
- data/test/instrumentation/rack_instrumented_request_test.rb +5 -2
- data/test/instrumentation/rack_test.rb +2 -14
- data/test/secrets_test.rb +41 -22
- data/test/serverless_test.rb +323 -0
- data/test/snapshot/deltable_test.rb +17 -0
- data/test/snapshot/docker_container_test.rb +82 -0
- data/test/snapshot/fargate_container_test.rb +82 -0
- data/test/snapshot/fargate_process_test.rb +35 -0
- data/test/snapshot/fargate_task_test.rb +49 -0
- data/test/snapshot/lambda_function_test.rb +37 -0
- data/test/snapshot/ruby_process_test.rb +14 -0
- data/test/support/mock_timer.rb +20 -0
- data/test/test_helper.rb +16 -4
- data/test/tracing/custom_test.rb +1 -3
- data/test/tracing/id_management_test.rb +8 -0
- data/test/tracing/opentracing_test.rb +15 -2
- data/test/tracing/processor_test.rb +58 -0
- data/test/tracing/span_context_test.rb +22 -0
- data/test/tracing/span_test.rb +136 -0
- data/test/tracing/tracer_async_test.rb +29 -0
- data/test/tracing/tracer_test.rb +82 -16
- data/test/util_test.rb +10 -0
- metadata +76 -43
- data/lib/instana/agent.rb +0 -508
- data/lib/instana/agent/helpers.rb +0 -87
- data/lib/instana/agent/hooks.rb +0 -44
- data/lib/instana/agent/tasks.rb +0 -51
- data/lib/instana/collector.rb +0 -119
- data/lib/instana/collectors/gc.rb +0 -60
- data/lib/instana/collectors/memory.rb +0 -37
- data/lib/instana/collectors/thread.rb +0 -33
- data/lib/instana/eum/eum-test.js.erb +0 -17
- data/lib/instana/eum/eum.js.erb +0 -17
- data/lib/instana/helpers.rb +0 -47
- data/lib/instana/opentracing/tracer.rb +0 -21
- data/lib/instana/thread_local.rb +0 -18
- data/lib/oj_check.rb +0 -19
- data/test/agent/agent_test.rb +0 -151
@@ -1,87 +0,0 @@
|
|
1
|
-
# (c) Copyright IBM Corp. 2021
|
2
|
-
# (c) Copyright Instana Inc. 2018
|
3
|
-
|
4
|
-
module AgentHelpers
|
5
|
-
# Attempts to determine if we're running inside a container.
|
6
|
-
# The qualifications are:
|
7
|
-
# 1. Linux based OS
|
8
|
-
# 2. /proc/self/cpuset exists and contents include a container id
|
9
|
-
def running_in_container?
|
10
|
-
return false unless @is_linux
|
11
|
-
|
12
|
-
cpuset_contents = get_cpuset_contents
|
13
|
-
|
14
|
-
if cpuset_contents.nil? or cpuset_contents == '/'
|
15
|
-
::Instana.logger.debug "running_in_container? == no"
|
16
|
-
return false
|
17
|
-
end
|
18
|
-
::Instana.logger.debug "running_in_container? == yes"
|
19
|
-
true
|
20
|
-
end
|
21
|
-
|
22
|
-
# Attempts to determine the true process ID by querying the
|
23
|
-
# /proc/<pid>/sched file. This works on linux currently.
|
24
|
-
#
|
25
|
-
def get_sched_pid
|
26
|
-
sched_file = "/proc/self/sched"
|
27
|
-
pid = Process.pid
|
28
|
-
|
29
|
-
if File.exist?(sched_file)
|
30
|
-
v = File.open(sched_file, &:readline)
|
31
|
-
pid = v.match(/\d+/).to_s.to_i
|
32
|
-
end
|
33
|
-
pid
|
34
|
-
end
|
35
|
-
|
36
|
-
# Open and read /proc/<pid>/cpuset and return as a string. Used as
|
37
|
-
# part of the announce payload for process differentiation.
|
38
|
-
#
|
39
|
-
def get_cpuset_contents
|
40
|
-
cpuset_file = "/proc/#{Process.pid}/cpuset"
|
41
|
-
contents = ""
|
42
|
-
|
43
|
-
if File.exist?(cpuset_file)
|
44
|
-
contents = File.open(cpuset_file, "r").read
|
45
|
-
end
|
46
|
-
contents.chomp
|
47
|
-
rescue Exception => e
|
48
|
-
Instana.logger.debug { "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" }
|
49
|
-
return nil
|
50
|
-
end
|
51
|
-
|
52
|
-
# Returns the PID that we are reporting to
|
53
|
-
#
|
54
|
-
def report_pid
|
55
|
-
@process[:report_pid]
|
56
|
-
end
|
57
|
-
|
58
|
-
# Determine whether the pid has changed since Agent start.
|
59
|
-
#
|
60
|
-
# @ return [Boolean] true or false to indicate if forked
|
61
|
-
#
|
62
|
-
def forked?
|
63
|
-
@process[:pid] != Process.pid
|
64
|
-
end
|
65
|
-
|
66
|
-
# Indicates if the agent is ready to send metrics
|
67
|
-
# and/or data.
|
68
|
-
#
|
69
|
-
def ready?
|
70
|
-
# In test, we're always ready :-)
|
71
|
-
return true if ENV.key?('INSTANA_TEST')
|
72
|
-
|
73
|
-
# Occasionally Run Fork detection
|
74
|
-
if rand(10) > 8
|
75
|
-
if !@is_resque_worker && (@process[:pid] != Process.pid)
|
76
|
-
::Instana.logger.debug "Instana: detected fork. (this pid: #{Process.pid}/#{Process.ppid}) Calling after_fork"
|
77
|
-
after_fork
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
@state == :ready || @state == :announced
|
82
|
-
rescue => e
|
83
|
-
Instana.logger.debug { "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" }
|
84
|
-
Instana.logger.debug { e.backtrace.join("\r\n") } unless ENV.key?('INSTANA_TEST')
|
85
|
-
return false
|
86
|
-
end
|
87
|
-
end
|
data/lib/instana/agent/hooks.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
# (c) Copyright IBM Corp. 2021
|
2
|
-
# (c) Copyright Instana Inc. 2018
|
3
|
-
|
4
|
-
module AgentHooks
|
5
|
-
# Used post fork to re-initialize state and restart communications with
|
6
|
-
# the host agent.
|
7
|
-
#
|
8
|
-
def after_fork
|
9
|
-
::Instana.logger.debug "after_fork hook called. Falling back to unannounced state and spawning a new background agent thread."
|
10
|
-
|
11
|
-
@timers.cancel
|
12
|
-
|
13
|
-
# Reseed the random number generator for this
|
14
|
-
# new thread.
|
15
|
-
srand
|
16
|
-
|
17
|
-
transition_to(:unannounced)
|
18
|
-
|
19
|
-
setup
|
20
|
-
spawn_background_thread
|
21
|
-
end
|
22
|
-
|
23
|
-
def before_resque_fork
|
24
|
-
::Instana.logger.debug "before_resque_fork hook called. pid/ppid: #{Process.pid}/#{Process.ppid}"
|
25
|
-
@is_resque_worker = true
|
26
|
-
end
|
27
|
-
|
28
|
-
def after_resque_fork
|
29
|
-
::Instana.logger.debug "after_resque_fork hook called. pid/ppid: #{Process.pid}/#{Process.ppid}"
|
30
|
-
|
31
|
-
@timers.cancel
|
32
|
-
|
33
|
-
# Reseed the random number generator for this
|
34
|
-
# new thread.
|
35
|
-
srand
|
36
|
-
|
37
|
-
::Instana.config[:metrics][:enabled] = false
|
38
|
-
|
39
|
-
@process[:pid] = Process.pid
|
40
|
-
|
41
|
-
setup
|
42
|
-
spawn_background_thread
|
43
|
-
end
|
44
|
-
end
|
data/lib/instana/agent/tasks.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
# (c) Copyright IBM Corp. 2021
|
2
|
-
# (c) Copyright Instana Inc. 2018
|
3
|
-
|
4
|
-
module AgentTasks
|
5
|
-
# When request(s) are received by the host agent, it is sent here
|
6
|
-
# for handling & processing.
|
7
|
-
#
|
8
|
-
# @param json_string [String] the requests from the host agent
|
9
|
-
#
|
10
|
-
|
11
|
-
OJ_OPTIONS = {mode: :strict}
|
12
|
-
|
13
|
-
def handle_agent_tasks(json_string)
|
14
|
-
tasks = Oj.load(json_string, OJ_OPTIONS)
|
15
|
-
|
16
|
-
if tasks.is_a?(Hash)
|
17
|
-
process_agent_task(tasks)
|
18
|
-
elsif tasks.is_a?(Array)
|
19
|
-
tasks.each do |t|
|
20
|
-
process_agent_task(t)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
# Process a task sent from the host agent.
|
26
|
-
#
|
27
|
-
# @param task [String] the request json from the host agent
|
28
|
-
#
|
29
|
-
def process_agent_task(task)
|
30
|
-
if task.key?("action")
|
31
|
-
if task["action"] == "ruby.source"
|
32
|
-
payload = ::Instana::Util.get_rb_source(task["args"]["file"])
|
33
|
-
else
|
34
|
-
payload = { :error => "Unrecognized action: #{task["action"]}. An newer Instana gem may be required for this. Current version: #{::Instana::VERSION}" }
|
35
|
-
end
|
36
|
-
else
|
37
|
-
payload = { :error => "Instana Ruby: No action specified in request." }
|
38
|
-
end
|
39
|
-
|
40
|
-
path = "com.instana.plugin.ruby/response.#{@process[:report_pid]}?messageId=#{URI.encode(task['messageId'])}"
|
41
|
-
uri = URI.parse("http://#{@discovered[:agent_host]}:#{@discovered[:agent_port]}/#{path}")
|
42
|
-
req = Net::HTTP::Post.new(uri)
|
43
|
-
req.body = Oj.dump(payload, OJ_OPTIONS)
|
44
|
-
::Instana.logger.debug "Responding to agent request: #{req.inspect}"
|
45
|
-
make_host_agent_request(req)
|
46
|
-
|
47
|
-
rescue StandardError => e
|
48
|
-
Instana.logger.debug { "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" }
|
49
|
-
Instana.logger.debug { e.backtrace.join("\r\n") }
|
50
|
-
end
|
51
|
-
end
|
data/lib/instana/collector.rb
DELETED
@@ -1,119 +0,0 @@
|
|
1
|
-
# (c) Copyright IBM Corp. 2021
|
2
|
-
# (c) Copyright Instana Inc. 2016
|
3
|
-
|
4
|
-
module Instana
|
5
|
-
class Collector
|
6
|
-
attr_accessor :collectors
|
7
|
-
attr_accessor :last_report_log
|
8
|
-
|
9
|
-
def initialize
|
10
|
-
@collectors = []
|
11
|
-
|
12
|
-
# Snapshot data is collected once per process but resent
|
13
|
-
# every 10 minutes along side process metrics.
|
14
|
-
@snapshot = ::Instana::Util.take_snapshot
|
15
|
-
|
16
|
-
# Set last snapshot to just under 10 minutes ago
|
17
|
-
# so we send a snapshot sooner than later
|
18
|
-
@last_snapshot = Time.now - 570
|
19
|
-
|
20
|
-
# We track what we last sent as a metric payload so that
|
21
|
-
# we can do delta reporting
|
22
|
-
@last_values = {}
|
23
|
-
end
|
24
|
-
|
25
|
-
# Register an individual collector.
|
26
|
-
#
|
27
|
-
# @param [Object] klass of the collector to register
|
28
|
-
#
|
29
|
-
def register(klass)
|
30
|
-
::Instana.logger.debug "Adding #{klass} to collectors..."
|
31
|
-
@collectors << klass.new
|
32
|
-
end
|
33
|
-
|
34
|
-
# Resets the timer on when to send process snapshot data.
|
35
|
-
#
|
36
|
-
def reset_snapshot_timer!
|
37
|
-
# Set last snapshot to 10 minutes ago
|
38
|
-
# so that we send a snapshot on first report
|
39
|
-
@last_snapshot = Time.now - 601
|
40
|
-
end
|
41
|
-
|
42
|
-
##
|
43
|
-
# collect_and_report
|
44
|
-
#
|
45
|
-
# Run through each collector, let them collect up
|
46
|
-
# data and then report what we have via the agent
|
47
|
-
#
|
48
|
-
# @return Boolean true on success
|
49
|
-
#
|
50
|
-
def collect_and_report
|
51
|
-
return unless ::Instana.config[:metrics][:enabled]
|
52
|
-
|
53
|
-
payload = {}
|
54
|
-
with_snapshot = false
|
55
|
-
|
56
|
-
# Run through the registered collectors and
|
57
|
-
# get all the metrics
|
58
|
-
#
|
59
|
-
@collectors.each do |c|
|
60
|
-
metrics = c.collect
|
61
|
-
if metrics
|
62
|
-
payload[c.payload_key] = metrics
|
63
|
-
else
|
64
|
-
payload.delete(c.payload_key)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
# Every 5 minutes, send snapshot data as well
|
69
|
-
if (Time.now - @last_snapshot) > 600
|
70
|
-
with_snapshot = true
|
71
|
-
payload.merge!(@snapshot)
|
72
|
-
|
73
|
-
# Add in process related that could have changed since
|
74
|
-
# snapshot was taken.
|
75
|
-
p = { :pid => ::Instana.agent.report_pid }
|
76
|
-
p[:name] = ::Instana::Util.get_app_name
|
77
|
-
p[:exec_args] = ::Instana.agent.process[:arguments]
|
78
|
-
payload.merge!(p)
|
79
|
-
else
|
80
|
-
payload = enforce_deltas(payload, @last_values)
|
81
|
-
end
|
82
|
-
|
83
|
-
if ENV.key?('INSTANA_TEST')
|
84
|
-
true
|
85
|
-
else
|
86
|
-
# Report all the collected goodies
|
87
|
-
if ::Instana.agent.report_metrics(payload) && with_snapshot
|
88
|
-
@last_snapshot = Time.now
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
# Take two hashes and enforce delta reporting.
|
94
|
-
# We only report when values change (instead of reporting all of
|
95
|
-
# the time). This is a recursive method.
|
96
|
-
#
|
97
|
-
# @param [Hash] the payload have delta reporting applied to
|
98
|
-
# @param [Hash] a hash of the last values reported
|
99
|
-
#
|
100
|
-
# @return [Hash] the candidate hash with delta reporting applied
|
101
|
-
#
|
102
|
-
def enforce_deltas(candidate, last)
|
103
|
-
candidate.each do |k,v|
|
104
|
-
if v.is_a?(Hash)
|
105
|
-
last[k] ||= {}
|
106
|
-
candidate[k] = enforce_deltas(candidate[k], last[k])
|
107
|
-
candidate.delete(k) if candidate[k].empty?
|
108
|
-
else
|
109
|
-
if last[k] == v
|
110
|
-
candidate.delete(k)
|
111
|
-
else
|
112
|
-
last[k] = candidate[k]
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
candidate
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
@@ -1,60 +0,0 @@
|
|
1
|
-
# (c) Copyright IBM Corp. 2021
|
2
|
-
# (c) Copyright Instana Inc. 2016
|
3
|
-
|
4
|
-
module Instana
|
5
|
-
module Collectors
|
6
|
-
class GC
|
7
|
-
attr_accessor :payload_key
|
8
|
-
|
9
|
-
def initialize
|
10
|
-
@payload_key = :gc
|
11
|
-
@this_gc = {}
|
12
|
-
@last_major_count = 0
|
13
|
-
@last_minor_count = 0
|
14
|
-
::GC::Profiler.enable
|
15
|
-
end
|
16
|
-
|
17
|
-
##
|
18
|
-
# collect
|
19
|
-
#
|
20
|
-
# To collect garbage collector related metrics.
|
21
|
-
#
|
22
|
-
def collect
|
23
|
-
@this_gc.clear
|
24
|
-
stats = ::GC.stat
|
25
|
-
|
26
|
-
# Time spent in GC. Report in milliseconds
|
27
|
-
@this_gc[:totalTime] = ::GC::Profiler.total_time * 1000
|
28
|
-
::GC::Profiler.clear
|
29
|
-
|
30
|
-
# GC metrics only available on newer Ruby versions
|
31
|
-
if RUBY_VERSION >= '2.1'
|
32
|
-
# GC runs. Calculate how many have occurred since the last call
|
33
|
-
@this_gc[:minorGcs] = stats[:minor_gc_count] - @last_minor_count
|
34
|
-
@this_gc[:majorGcs] = stats[:major_gc_count] - @last_major_count
|
35
|
-
|
36
|
-
# Store these counts so that we have something to compare to next
|
37
|
-
# time around.
|
38
|
-
@last_major_count = stats[:major_gc_count]
|
39
|
-
@last_minor_count = stats[:minor_gc_count]
|
40
|
-
|
41
|
-
@this_gc[:heap_live] = stats[:heap_live_slots] || stats[:heap_live_num]
|
42
|
-
@this_gc[:heap_free] = stats[:heap_free_slots] || stats[:heap_free_num]
|
43
|
-
else
|
44
|
-
@this_gc[:heap_live] = stats[:heap_live_slot] || stats[:heap_live_num]
|
45
|
-
@this_gc[:heap_free] = stats[:heap_free_slot] || stats[:heap_free_num]
|
46
|
-
end
|
47
|
-
|
48
|
-
@this_gc
|
49
|
-
rescue => e
|
50
|
-
::Instana.logger.info "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
|
51
|
-
::Instana.logger.debug { e.backtrace.join("\r\n") }
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
# Register the metrics collector if enabled
|
58
|
-
if ::Instana.config[:metrics][:gc][:enabled]
|
59
|
-
::Instana.collector.register(::Instana::Collectors::GC)
|
60
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
# (c) Copyright IBM Corp. 2021
|
2
|
-
# (c) Copyright Instana Inc. 2016
|
3
|
-
|
4
|
-
require 'get_process_mem'
|
5
|
-
|
6
|
-
module Instana
|
7
|
-
module Collectors
|
8
|
-
class Memory
|
9
|
-
attr_accessor :payload_key
|
10
|
-
|
11
|
-
def initialize
|
12
|
-
@payload_key = :memory
|
13
|
-
@this_mem = {}
|
14
|
-
end
|
15
|
-
|
16
|
-
##
|
17
|
-
# collect
|
18
|
-
#
|
19
|
-
# To collect process memory usage.
|
20
|
-
#
|
21
|
-
# @return [Hash] a collection of metrics (if any)
|
22
|
-
#
|
23
|
-
def collect
|
24
|
-
@this_mem[:rss_size] = ::GetProcessMem.new(Process.pid).kb
|
25
|
-
@this_mem
|
26
|
-
rescue => e
|
27
|
-
::Instana.logger.info "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
|
28
|
-
::Instana.logger.debug { e.backtrace.join("\r\n") }
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
# Register the metrics collector if enabled
|
35
|
-
if ::Instana.config[:metrics][:memory][:enabled]
|
36
|
-
::Instana.collector.register(::Instana::Collectors::Memory)
|
37
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# (c) Copyright IBM Corp. 2021
|
2
|
-
# (c) Copyright Instana Inc. 2016
|
3
|
-
|
4
|
-
module Instana
|
5
|
-
module Collectors
|
6
|
-
class Thread
|
7
|
-
attr_accessor :payload_key
|
8
|
-
|
9
|
-
def initialize
|
10
|
-
@payload_key = :thread
|
11
|
-
@this_count = {}
|
12
|
-
end
|
13
|
-
|
14
|
-
##
|
15
|
-
# collect
|
16
|
-
#
|
17
|
-
# To collect thread count
|
18
|
-
#
|
19
|
-
def collect
|
20
|
-
@this_count[:count] = ::Thread.list.count
|
21
|
-
@this_count
|
22
|
-
rescue => e
|
23
|
-
::Instana.logger.info "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
|
24
|
-
::Instana.logger.debug { e.backtrace.join("\r\n") }
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
# Register the metrics collector if enabled
|
31
|
-
if ::Instana.config[:metrics][:thread][:enabled]
|
32
|
-
::Instana.collector.register(::Instana::Collectors::Thread)
|
33
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
<script>
|
2
|
-
(function(c,e,f,k,g,h,b,a,d){c[g]||(c[g]=h,b=c[h]=function(){
|
3
|
-
b.q.push(arguments)},b.q=[],b.l=1*new Date,a=e.createElement(f),a.async=1,
|
4
|
-
a.src=k,a.setAttribute("crossorigin", "anonymous"),d=e.getElementsByTagName(f)[0],
|
5
|
-
d.parentNode.insertBefore(a,d))})(window,document,"script",
|
6
|
-
"//pink.instana.rocks/eum/eum.min.js","InstanaEumObject","ineum");
|
7
|
-
|
8
|
-
ineum('reportingUrl', 'https://pink.instana.rocks/eum/');
|
9
|
-
ineum('key', '<%=::Instana.config[:eum_api_key]%>');
|
10
|
-
ineum('traceId', '<%=::Instana.tracer.trace_id_header%>');
|
11
|
-
|
12
|
-
<% if !::Instana.config[:eum_baggage].empty? %>
|
13
|
-
<% ::Instana.config[:eum_baggage].each do |k, v| %>
|
14
|
-
ineum('meta', '<%=k%>', '<%=v%>');
|
15
|
-
<% end %>
|
16
|
-
<% end %>
|
17
|
-
</script>
|