elasticsearch-newrelic 0.1.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cedc3dae22fbabd2c863137072370b2586bba6f0
4
+ data.tar.gz: 4b7cd28da57ee9e79bfa3e00b264a3fc6a086e97
5
+ SHA512:
6
+ metadata.gz: 14c8cdfaf1666403c3a28bc225b86553058f9105a4416f83f78cd4ed70116473d18669553dd65bd81cceb478a8467279642fd5ac2d69b05540ff1089769c24fd
7
+ data.tar.gz: 8c4caa87071d2226b921e725fa0c58f15ef717a1c82aa5be315b0619f446e300ac6445df71a070f1f09e563b2235b97d34de38405ec8ade2902d7896726e01ba
@@ -0,0 +1 @@
1
+ require 'elasticsearch_newrelic/instrumentation'
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+ require 'new_relic/agent/method_tracer'
3
+
4
+ DependencyDetection.defer do
5
+ @name = :elasticsearch
6
+
7
+ depends_on do
8
+ defined?(::Elasticsearch::Transport::Client) &&
9
+ !NewRelic::Control.instance['disable_elasticsearch'] &&
10
+ ENV['NEWRELIC_ENABLE'].to_s !~ /false|off|no/i
11
+ end
12
+
13
+ executes do
14
+ NewRelic::Agent.logger.info 'Installing Elasticsearch Instrumentation'
15
+ end
16
+
17
+ executes do
18
+ require 'new_relic/agent/datastores'
19
+
20
+ ::Elasticsearch::Transport::Client.class_eval do
21
+ # Method to hijack
22
+ execute_method = :perform_request
23
+
24
+ def perform_request_with_newrelic_trace(method, path, params={}, body=nil)
25
+ return perform_request_without_newrelic_trace(method, path, params, body) unless method == 'GET'
26
+
27
+ result = nil
28
+ callback = proc do |res, metric, elapsed|
29
+ NewRelic::Agent::Datastores.notice_statement(body.inspect, elapsed)
30
+ result = res
31
+ end
32
+
33
+ NewRelic::Agent::Datastores.wrap("Elasticsearch", "search", __tracepath(path), callback) do
34
+ perform_request_without_newrelic_trace(method, path, params, body)
35
+ end
36
+ result
37
+ end
38
+
39
+ alias_method :perform_request_without_newrelic_trace, execute_method
40
+ alias_method execute_method, :perform_request_with_newrelic_trace
41
+
42
+ def __tracepath(path)
43
+ v = path.split('/')[0]
44
+ (v.nil? || v == '') ? path : v
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,3 @@
1
+ class ElasticsearchNewRelic
2
+ VERSION = '0.0.0'
3
+ end
metadata ADDED
@@ -0,0 +1,75 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: elasticsearch-newrelic
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Liam P. White
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-04-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: elasticsearch
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: newrelic_rpm
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.15'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.15'
41
+ description: Elasticsearch instrumentation for New Relic
42
+ email: example@example.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - lib/elasticsearch-newrelic.rb
48
+ - lib/elasticsearch_newrelic/instrumentation.rb
49
+ - lib/elasticsearch_newrelic/version.rb
50
+ homepage: http://example.com
51
+ licenses:
52
+ - MIT
53
+ metadata: {}
54
+ post_install_message:
55
+ rdoc_options: []
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ requirements: []
69
+ rubyforge_project:
70
+ rubygems_version: 2.5.1
71
+ signing_key:
72
+ specification_version: 4
73
+ summary: Elasticsearch instrumentation for New Relic
74
+ test_files: []
75
+ has_rdoc: