instana 0.14.2 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +4 -0
- data/README.md +24 -1
- data/lib/instana/agent.rb +4 -0
- data/lib/instana/base.rb +1 -0
- data/lib/instana/config.rb +4 -0
- data/lib/instana/eum/eum-test.js.erb +16 -0
- data/lib/instana/eum/eum.js.erb +14 -0
- data/lib/instana/helpers.rb +40 -0
- data/lib/instana/util.rb +9 -4
- data/lib/instana/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b08a1d3bea72c56da148e02e24c9095a49d4c0f6
|
4
|
+
data.tar.gz: efcbc529c115a5dba077b4e590528b32c98698ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 72c20b92c83aa59a7e0b21c5eb9127e696f782ddd7b077294adf9185469629e0f7922027e881dd52c717f1ac3c64929ffc04e1bcef2eb2893e59f94ddd2e0e67
|
7
|
+
data.tar.gz: 9d9cd6654f148a0142faeeab2ef9875bdfa2f9d31db700859a1c44e3d3f195c364c99fbc9a0f33342ce8ea4f07c9caf71cb1a63c7100e90f924f471d345cf154
|
data/.travis.yml
CHANGED
@@ -19,3 +19,7 @@ before_install:
|
|
19
19
|
|
20
20
|
script: "bundle exec rake test"
|
21
21
|
|
22
|
+
notifications:
|
23
|
+
slack:
|
24
|
+
rooms:
|
25
|
+
secure: Ae9tJmBO9/sgYWthHRS5uufAf8s6uIMdtmQn+gBkcAXaMWJgt1IAzpIj98Qsg15/lhHS8ezwCe7WIAWC4mM1cnwl/hP195dbgLzF4D2uOjaIXj55ckIIE06jBX1yHapu0vMFSaKwgL4auEEVg4xkehBb9TzLNG/LbExadZQOIkeLdtgU04VrPfDC9pZWPplXT4kzjMZkMESzBYaCfNl6eenu0sHdoxSvngv52MImog6aZQKT+k3ccAa1yzZNhUdy4gSZi1HafXdSCn4UTPDtkNIlsWBW8yprICLxZV/NvgUTEEJYSHO6Ucx9Er22LzKtNbEYlAs1GErGWjDzpqvvXt/5UwNx0rLDrVKI/xMIELEbT047mSgJ8tpVd0ErGA/bnDfbF2oDFTAEXq4jaeAMaVR9Q1CW0ZZF2Jh5jOKc41U+AVGgaMDaBA0ukDSeXvJcnteZ9EllOO8ZAtC2FKtBNnj36W13KTR0TkjMCl+KOiVJXnOyRJIR+CUL9BdDuODBVPZHqZaZ48N+MOG9dRb+fvkdTnwh7hU+UmR08kOsd4x+dDlm4dBrFrB8v8udQ7XuBN9AOZty2CPWFUSJM1BxtetyS3We0L6lQ8o/B9STFNK4KTa/M8wNq1Fm85h3ZKHHIHDpQnXM6vD8SV1p9u91C5UI8rEyxzW5IaT2oqXsCzU=
|
data/README.md
CHANGED
@@ -58,7 +58,30 @@ You can find more documentation covering supported components and minimum versio
|
|
58
58
|
|
59
59
|
## Want End User Monitoring?
|
60
60
|
|
61
|
-
Instana provides deep end user monitoring that links server side traces with browser events.
|
61
|
+
Instana provides deep end user monitoring that links server side traces with browser events.
|
62
|
+
|
63
|
+
For Ruby templates and views, get your EUM API key from your Instana dashboard and you can call `::Instana::Helpers.eum_snippet('example_api_key_string')` from within your layout file. This will output
|
64
|
+
a small javascript snippet of code to instrument browser events. It's based on [Weasel](https://github.com/instana/weasel). Check it out.
|
65
|
+
|
66
|
+
As an example for Haml, you could do the following:
|
67
|
+
|
68
|
+
```ruby
|
69
|
+
%html{ :lang => "en", :xmlns => "http://www.w3.org/1999/xhtml" }
|
70
|
+
%head
|
71
|
+
- if user_signed_in?
|
72
|
+
= raw ::Instana::Helpers.eum_snippet('example_api_key_string', :username => current_user.username)
|
73
|
+
- else
|
74
|
+
= raw ::Instana::Helpers.eum_snippet('example_api_key_string')
|
75
|
+
%body
|
76
|
+
```
|
77
|
+
Make sure to use the `raw` helper so the javascript isn't interpolated with escape strings.
|
78
|
+
|
79
|
+
The optional second argument to `::Instana::Helpers.eum_snippet` is a hash of metadata key/values that will be reported along
|
80
|
+
with the browser instrumentation.
|
81
|
+
|
82
|
+
![Instana EUM example with metadata](https://s3.amazonaws.com/instana/Instana+Gameface+EUM+with+metadata+2016-12-22+at+15.32.01.png)
|
83
|
+
|
84
|
+
See also the [End User Monitoring](https://instana.atlassian.net/wiki/display/DOCS/Web+End-User+Monitoring) in the Instana documentation portal.
|
62
85
|
|
63
86
|
## Development
|
64
87
|
|
data/lib/instana/agent.rb
CHANGED
@@ -63,6 +63,10 @@ module Instana
|
|
63
63
|
def after_fork
|
64
64
|
::Instana.logger.agent "after_fork hook called. Falling back to unannounced state and spawning a new background agent thread."
|
65
65
|
|
66
|
+
# Reseed the random number generator for this
|
67
|
+
# new thread.
|
68
|
+
srand
|
69
|
+
|
66
70
|
# Re-collect process information post fork
|
67
71
|
@process = ::Instana::Util.collect_process_info
|
68
72
|
|
data/lib/instana/base.rb
CHANGED
data/lib/instana/config.rb
CHANGED
@@ -10,6 +10,10 @@ module Instana
|
|
10
10
|
@config[:metrics][:memory] = { :enabled => true }
|
11
11
|
@config[:metrics][:thread] = { :enabled => true }
|
12
12
|
|
13
|
+
# EUM Related
|
14
|
+
@config[:eum_api_key] = nil
|
15
|
+
@config[:eum_baggage] = {}
|
16
|
+
|
13
17
|
# HTTP Clients
|
14
18
|
@config[:excon] = { :enabled => true }
|
15
19
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<script nonce="68afd870-ae85-48c6-9689-9a5c359d5a1f">
|
2
|
+
(function(i,s,o,g,r,a,m){i['InstanaEumObject']=r;i[r]=i[r]||function(){
|
3
|
+
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
4
|
+
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
5
|
+
})(window,document,'script','//internal-eum.instana.io/eum.min.js','ineum');
|
6
|
+
|
7
|
+
ineum('reportingUrl', '//internal-eum.instana.io');
|
8
|
+
ineum('apiKey', '<%=::Instana.config[:eum_api_key]%>');
|
9
|
+
ineum('traceId', '<%=::Instana.tracer.trace_id_header%>');
|
10
|
+
|
11
|
+
<% if !::Instana.config[:eum_baggage].empty? %>
|
12
|
+
<% ::Instana.config[:eum_baggage].each do |k, v| %>
|
13
|
+
ineum('meta', '<%=k%>', '<%=v%>');
|
14
|
+
<% end %>
|
15
|
+
<% end %>
|
16
|
+
</script>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<script>
|
2
|
+
(function(i,s,o,g,r,a,m){i['InstanaEumObject']=r;i[r]=i[r]||function(){
|
3
|
+
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
4
|
+
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
5
|
+
})(window,document,'script','//eum.instana.io/eum.min.js','ineum');
|
6
|
+
ineum('apiKey', '<%=::Instana.config[:eum_api_key]%>');
|
7
|
+
ineum('traceId', '<%=::Instana.tracer.trace_id_header%>');
|
8
|
+
|
9
|
+
<% if !::Instana.config[:eum_baggage].empty? %>
|
10
|
+
<% ::Instana.config[:eum_baggage].each do |k, v| %>
|
11
|
+
ineum('meta', '<%=k%>', '<%=v%>');
|
12
|
+
<% end %>
|
13
|
+
<% end %>
|
14
|
+
</script>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Instana
|
2
|
+
module Helpers
|
3
|
+
EUM_SNIPPET= (File.read(File.dirname(__FILE__) + '/eum/eum.js.erb')).freeze
|
4
|
+
EUM_TEST_SNIPPET= (File.read(File.dirname(__FILE__) + '/eum/eum-test.js.erb')).freeze
|
5
|
+
|
6
|
+
class << self
|
7
|
+
|
8
|
+
# Returns a processed javascript snippet to be placed within the HEAD tag of an HTML page.
|
9
|
+
#
|
10
|
+
def eum_snippet(api_key, kvs = {})
|
11
|
+
return nil if !::Instana.tracer.tracing?
|
12
|
+
|
13
|
+
::Instana.config[:eum_api_key] = api_key
|
14
|
+
::Instana.config[:eum_baggage] = kvs
|
15
|
+
|
16
|
+
ERB.new(EUM_SNIPPET).result
|
17
|
+
rescue => e
|
18
|
+
Instana.logger.error "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
|
19
|
+
Instana.logger.debug e.backtrace.join("\r\n")
|
20
|
+
return nil
|
21
|
+
end
|
22
|
+
|
23
|
+
# Returns a processed javascript snippet to be placed within the HEAD tag of an HTML page.
|
24
|
+
# This one is used for testing only
|
25
|
+
#
|
26
|
+
def eum_test_snippet(api_key, kvs = {})
|
27
|
+
return nil if !::Instana.tracer.tracing?
|
28
|
+
|
29
|
+
::Instana.config[:eum_api_key] = api_key
|
30
|
+
::Instana.config[:eum_baggage] = kvs
|
31
|
+
|
32
|
+
ERB.new(EUM_TEST_SNIPPET).result
|
33
|
+
rescue => e
|
34
|
+
Instana.logger.error "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
|
35
|
+
Instana.logger.debug e.backtrace.join("\r\n")
|
36
|
+
return nil
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/instana/util.rb
CHANGED
@@ -90,10 +90,6 @@ module Instana
|
|
90
90
|
data[:sensorVersion] = ::Instana::VERSION
|
91
91
|
data[:ruby_version] = RUBY_VERSION
|
92
92
|
|
93
|
-
# Since a snapshot is only taken on process boot,
|
94
|
-
# this is ok here.
|
95
|
-
data[:start_time] = Time.now.to_s
|
96
|
-
|
97
93
|
# Framework Detection
|
98
94
|
if defined?(::RailsLts::VERSION)
|
99
95
|
data[:framework] = "Rails on Rails LTS-#{::RailsLts::VERSION}"
|
@@ -111,6 +107,15 @@ module Instana
|
|
111
107
|
data[:framework] = "Sinatra #{::Sinatra::VERSION}"
|
112
108
|
end
|
113
109
|
|
110
|
+
# Report Bundle
|
111
|
+
if defined?(::Gem) && Gem.respond_to?(:loaded_specs)
|
112
|
+
data[:versions] = {}
|
113
|
+
|
114
|
+
Gem.loaded_specs.each do |k, v|
|
115
|
+
data[:versions][k] = v.version.to_s
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
114
119
|
data
|
115
120
|
rescue => e
|
116
121
|
::Instana.logger.error "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
|
data/lib/instana/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: instana
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Giacomo Lombardo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-12-
|
11
|
+
date: 2016-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -136,10 +136,13 @@ files:
|
|
136
136
|
- lib/instana/collectors/memory.rb
|
137
137
|
- lib/instana/collectors/thread.rb
|
138
138
|
- lib/instana/config.rb
|
139
|
+
- lib/instana/eum/eum-test.js.erb
|
140
|
+
- lib/instana/eum/eum.js.erb
|
139
141
|
- lib/instana/frameworks/cuba.rb
|
140
142
|
- lib/instana/frameworks/rails.rb
|
141
143
|
- lib/instana/frameworks/roda.rb
|
142
144
|
- lib/instana/frameworks/sinatra.rb
|
145
|
+
- lib/instana/helpers.rb
|
143
146
|
- lib/instana/instrumentation.rb
|
144
147
|
- lib/instana/instrumentation/excon.rb
|
145
148
|
- lib/instana/instrumentation/net-http.rb
|