elasticsearch-newrelic 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: