tingyun_rpm 1.1.4.2 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/Guardfile +10 -0
  4. data/lib/ting_yun/agent.rb +1 -0
  5. data/lib/ting_yun/agent/agent.rb +16 -27
  6. data/lib/ting_yun/agent/collector/error_collector.rb +7 -18
  7. data/lib/ting_yun/agent/collector/error_collector/noticed_error.rb +26 -21
  8. data/lib/ting_yun/agent/collector/middle_ware_collector/cpu_sampler.rb +4 -9
  9. data/lib/ting_yun/agent/collector/sql_sampler.rb +32 -188
  10. data/lib/ting_yun/agent/collector/sql_sampler/slow_sql.rb +47 -0
  11. data/lib/ting_yun/agent/collector/sql_sampler/sql_trace.rb +73 -0
  12. data/lib/ting_yun/agent/collector/sql_sampler/transaction_sql_data.rb +26 -0
  13. data/lib/ting_yun/agent/collector/stats_engine/metric_stats.rb +6 -5
  14. data/lib/ting_yun/agent/collector/stats_engine/stats_hash.rb +2 -2
  15. data/lib/ting_yun/agent/collector/transaction_sampler.rb +23 -159
  16. data/lib/ting_yun/agent/collector/transaction_sampler/class_method.rb +130 -0
  17. data/lib/ting_yun/agent/collector/transaction_sampler/slowest_sample_buffer.rb +1 -1
  18. data/lib/ting_yun/agent/collector/transaction_sampler/transaction_sample_buffer_base.rb +1 -1
  19. data/lib/ting_yun/agent/cross_app/cross_app_monitor.rb +29 -79
  20. data/lib/ting_yun/agent/cross_app/cross_app_tracing.rb +36 -66
  21. data/lib/ting_yun/agent/database.rb +41 -349
  22. data/lib/ting_yun/agent/database/connection_manager.rb +44 -0
  23. data/lib/ting_yun/agent/database/explain_plan_helpers.rb +173 -0
  24. data/lib/ting_yun/agent/database/obfuscator.rb +151 -0
  25. data/lib/ting_yun/agent/database/statement.rb +70 -0
  26. data/lib/ting_yun/agent/event/event_loop.rb +1 -2
  27. data/lib/ting_yun/agent/instance_methods/connect.rb +8 -20
  28. data/lib/ting_yun/agent/instance_methods/container_data_manager.rb +2 -3
  29. data/lib/ting_yun/agent/instance_methods/handle_errors.rb +6 -1
  30. data/lib/ting_yun/agent/instance_methods/start.rb +13 -81
  31. data/lib/ting_yun/agent/transaction.rb +48 -391
  32. data/lib/ting_yun/agent/transaction/apdex.rb +53 -0
  33. data/lib/ting_yun/agent/transaction/attributes.rb +2 -1
  34. data/lib/ting_yun/agent/transaction/class_method.rb +127 -0
  35. data/lib/ting_yun/agent/transaction/exceptions.rb +42 -0
  36. data/lib/ting_yun/agent/transaction/instance_method.rb +139 -0
  37. data/lib/ting_yun/agent/transaction/request_attributes.rb +9 -39
  38. data/lib/ting_yun/agent/transaction/trace.rb +7 -5
  39. data/lib/ting_yun/agent/transaction/trace_node.rb +1 -3
  40. data/lib/ting_yun/agent/transaction/traced_method_stack.rb +2 -3
  41. data/lib/ting_yun/agent/transaction/transaction_sample_builder.rb +6 -1
  42. data/lib/ting_yun/agent/transaction/transaction_state.rb +59 -17
  43. data/lib/ting_yun/agent/transaction/transaction_timings.rb +72 -0
  44. data/lib/ting_yun/configuration.rb +11 -0
  45. data/lib/ting_yun/configuration/default_source.rb +20 -17
  46. data/lib/ting_yun/configuration/manager.rb +50 -21
  47. data/lib/ting_yun/frameworks.rb +1 -0
  48. data/lib/ting_yun/frameworks/rails.rb +15 -0
  49. data/lib/ting_yun/instrumentation/active_record.rb +12 -18
  50. data/lib/ting_yun/instrumentation/middleware_tracing.rb +8 -14
  51. data/lib/ting_yun/instrumentation/mongo.rb +21 -27
  52. data/lib/ting_yun/instrumentation/mongo_command_log_subscriber.rb +7 -3
  53. data/lib/ting_yun/instrumentation/moped.rb +2 -2
  54. data/lib/ting_yun/instrumentation/net.rb +4 -5
  55. data/lib/ting_yun/instrumentation/rack.rb +1 -2
  56. data/lib/ting_yun/instrumentation/rails4/active_record_subscriber.rb +22 -20
  57. data/lib/ting_yun/instrumentation/redis.rb +2 -2
  58. data/lib/ting_yun/instrumentation/support/controller_instrumentation.rb +1 -1
  59. data/lib/ting_yun/instrumentation/support/external_error.rb +19 -16
  60. data/lib/ting_yun/instrumentation/support/javascript_instrumentor.rb +92 -0
  61. data/lib/ting_yun/instrumentation/support/thrift_helper.rb +73 -0
  62. data/lib/ting_yun/instrumentation/thrift.rb +19 -222
  63. data/lib/ting_yun/logger.rb +1 -0
  64. data/lib/ting_yun/logger/agent_logger.rb +11 -67
  65. data/lib/ting_yun/logger/create_logger_helper.rb +72 -0
  66. data/lib/ting_yun/metrics/metric_data.rb +9 -31
  67. data/lib/ting_yun/metrics/metric_spec.rb +11 -0
  68. data/lib/ting_yun/metrics/stats.rb +24 -1
  69. data/lib/ting_yun/middleware/agent_middleware.rb +28 -0
  70. data/lib/ting_yun/middleware/browser_monitoring.rb +111 -0
  71. data/lib/ting_yun/support/coerce.rb +1 -0
  72. data/lib/ting_yun/support/exception.rb +2 -33
  73. data/lib/ting_yun/support/local_environment.rb +7 -7
  74. data/lib/ting_yun/support/serialize/marshaller.rb +7 -25
  75. data/lib/ting_yun/ting_yun_service.rb +12 -9
  76. data/lib/ting_yun/ting_yun_service/connection.rb +3 -0
  77. data/lib/ting_yun/ting_yun_service/http.rb +4 -1
  78. data/lib/ting_yun/ting_yun_service/request.rb +5 -13
  79. data/lib/ting_yun/ting_yun_service/upload_service.rb +5 -7
  80. data/lib/ting_yun/version.rb +3 -5
  81. data/lib/tingyun_rpm.rb +12 -10
  82. data/tingyun_rpm.gemspec +3 -0
  83. metadata +49 -5
  84. data/.DS_Store +0 -0
  85. data/lib/ting_yun/agent/collector/base_sampler.rb +0 -2
@@ -12,6 +12,7 @@ module TingYun
12
12
  module Coerce
13
13
  module_function
14
14
 
15
+
15
16
  def int(value, context=nil)
16
17
  Integer(value)
17
18
  rescue => error
@@ -6,36 +6,11 @@
6
6
  module TingYun
7
7
  module Support
8
8
  module Exception
9
- # An exception that is thrown by the server if the agent license is invalid.
10
- class LicenseException < StandardError;
11
- end
12
-
13
- # An exception that is thrown by the agent, if server['nbs.agent_enable']==false.
14
- class AgentEnableException <StandardError;
15
- end
16
9
 
17
10
  # An exception that is thrown by the server, drop the data.
18
11
  class UnKnownServerException < StandardError;
19
12
  end
20
13
 
21
- # An exception that forces an agent to stop reporting until its mongrel is restarted.
22
- class ForceDisconnectException < StandardError;
23
- end
24
-
25
- # An exception that forces an agent to restart.
26
- class ForceRestartException < StandardError;
27
- end
28
-
29
- # An exception that forces an agent to restart.
30
- class InvalidDataException < StandardError;
31
- end
32
-
33
- class ExpiredConfigurationException < StandardError;
34
- end
35
-
36
- # An exception that forces an agent to restart initAgentApp.
37
- class InvalidDataTokenException < StandardError;
38
- end
39
14
  # Used to blow out of a periodic task without logging a an error, such as for routine
40
15
  # failures.
41
16
  class ServerConnectionException < StandardError;
@@ -54,15 +29,8 @@ module TingYun
54
29
  class SerializationError < StandardError;
55
30
  end
56
31
 
57
- class BackgroundLoadingError < StandardError;
58
- end
59
-
60
- class UnsupportedMediaType < StandardError
61
- end
62
- # Used to wrap errors reported to agent by the collector
63
- class CollectorError < StandardError;
32
+ class AppSessionKeyError < StandardError;
64
33
  end
65
-
66
34
  #This is the base class for all errors that we want to record , It provides the
67
35
  # standard support text at the front of the message, and is used for flagging
68
36
  # agent errors when checking queue limits.
@@ -74,6 +42,7 @@ module TingYun
74
42
 
75
43
  class InternalServerError < StandardError
76
44
  end
45
+
77
46
  end
78
47
  end
79
48
  end
@@ -23,7 +23,7 @@ module TingYun
23
23
 
24
24
  # Runs through all the objects in ObjectSpace to find the first one that
25
25
  # match the provided class
26
- def find_class_in_object_space(klass)
26
+ def self.find_class_in_object_space(klass)
27
27
  if TingYun::Support::LanguageSupport.object_space_usable?
28
28
  ObjectSpace.each_object(klass) do |x|
29
29
  return x
@@ -53,7 +53,7 @@ module TingYun
53
53
  rainbows
54
54
  unicorn
55
55
  ]
56
- while dispatchers.any? && @discovered_dispatcher.nil?
56
+ while dispatchers.any? && !@discovered_dispatcher
57
57
  send 'check_for_'+(dispatchers.shift)
58
58
  end
59
59
  end
@@ -100,20 +100,20 @@ module TingYun
100
100
 
101
101
  def check_for_unicorn
102
102
  if (defined?(::Unicorn) && defined?(::Unicorn::HttpServer)) && TingYun::Support::LanguageSupport.object_space_usable?
103
- v = find_class_in_object_space(::Unicorn::HttpServer)
104
- @discovered_dispatcher = :unicorn if v
103
+ _v = TingYun::Support::LocalEnvironment.find_class_in_object_space(::Unicorn::HttpServer)
104
+ @discovered_dispatcher = :unicorn if _v
105
105
  end
106
106
  end
107
107
 
108
108
  def check_for_rainbows
109
109
  if (defined?(::Rainbows) && defined?(::Rainbows::HttpServer)) && TingYun::Support::LanguageSupport.object_space_usable?
110
- v = find_class_in_object_space(::Rainbows::HttpServer)
111
- @discovered_dispatcher = :rainbows if v
110
+ _v = TingYun::Support::LocalEnvironment.find_class_in_object_space(::Rainbows::HttpServer)
111
+ @discovered_dispatcher = :rainbows if _v
112
112
  end
113
113
  end
114
114
 
115
115
  def check_for_puma
116
- if defined?(::Puma) && File.basename($0) == 'puma'
116
+ if defined?(::Puma) && $0.include?('puma')
117
117
  @discovered_dispatcher = :puma
118
118
  end
119
119
  end
@@ -7,21 +7,6 @@ module TingYun
7
7
  module Support
8
8
  module Serialize
9
9
  class Marshaller
10
- def parsed_error(error)
11
- error_code = error['errorCode']
12
- error_message = error['errorMessage']
13
- case error_code
14
- when 460
15
- raise TingYun::Support::Exception::LicenseException.new("#{error_code}: #{error_message}")
16
- when 461
17
- raise TingYun::Support::Exception::InvalidDataTokenException.new("#{error_code}: #{error_message}")
18
- when 462
19
- raise TingYun::Support::Exception::InvalidDataException.new("#{error_code}: #{error_message}")
20
- when 470
21
- raise TingYun::Support::Exception::ExpiredConfigurationException.new("#{error_code}: #{error_message}")
22
- end
23
- end
24
-
25
10
  def prepare(data, options={})
26
11
  encoder = options[:encoder] || default_encoder
27
12
  if data.respond_to?(:to_collector_array)
@@ -50,18 +35,15 @@ module TingYun
50
35
  protected
51
36
 
52
37
  def return_value(data)
53
- if data.respond_to?(:has_key?)
54
- if data.has_key?('status') && data.has_key?('result')
55
- if data['status'] =="error"
56
- parsed_error(data['result'])
57
- elsif data['result']['enabled'] == false
58
- raise TingYun::Support::Exception::AgentEnableException.new("sorry,the application is unable to use the tingyun service now ")
59
- else
60
- return data['result']
61
- end
38
+ if data.respond_to?(:has_key?) && data.has_key?('status')
39
+ if data['status'] =="error"
40
+ raise TingYun::Support::Exception::UnKnownServerException.new("sorry,the application is unable to use the tingyun service now, we should reconnect again ")
41
+ else
42
+ return data['result']
62
43
  end
44
+ else
45
+ raise TingYun::Support::Exception::UnKnownServerException.new("sorry,the application is unable to use the tingyun service now, we should reconnect again ")
63
46
  end
64
- data
65
47
  end
66
48
  end
67
49
  end
@@ -31,11 +31,11 @@ module TingYun
31
31
  :ssl_cert_store,
32
32
  :shared_tcp_connection
33
33
 
34
- def initialize(license_key=nil,collector=TingYun::Support.collector)
34
+
35
+ def initialize(license_key=nil)
35
36
 
36
37
  @license_key = license_key || TingYun::Agent.config[:'license_key']
37
38
  @request_timeout = TingYun::Agent.config[:timeout]
38
- @collector = collector
39
39
  @data_version = TingYun::VERSION::STRING
40
40
  @marshaller =TingYun::Support::Serialize::JsonMarshaller.new
41
41
  @metric_id_cache = {}
@@ -53,6 +53,7 @@ module TingYun
53
53
  end
54
54
 
55
55
  def get_redirect_host
56
+ @collector=TingYun::Support.collector
56
57
  invoke_remote(:getRedirectHost)
57
58
  end
58
59
 
@@ -81,25 +82,23 @@ module TingYun
81
82
  handle_serialization_error(method, e)
82
83
  end
83
84
  # serialize_finish_time = Time.now
85
+ uri = remote_method_uri(method)
86
+ full_uri = "#{@collector}#{uri}"
84
87
 
85
- if TingYun::Agent.config[:'nbs.audit_mode']
86
- TingYun::Agent.logger.info("the prepare data: #{data}")
88
+ if audit_mode?
89
+ TingYun::Agent.logger.info("the prepare data: #{data} to url: #{full_uri}")
87
90
  else
88
91
  TingYun::Agent.logger.info("prepare to send data")
89
92
  end
90
93
 
91
94
  data, encoding = compress_request_if_needed(data)
92
- # size = data.size
93
95
 
94
- uri = remote_method_uri(method)
95
- full_uri = "#{@collector}#{uri}"
96
- TingYun::Agent.logger.info("url: #{full_uri}") if TingYun::Agent.config[:'nbs.audit_mode']
97
96
  response = send_request(:data => data,
98
97
  :uri => uri,
99
98
  :encoding => encoding,
100
99
  :collector => @collector)
101
100
 
102
- if TingYun::Agent.config[:'nbs.audit_mode']
101
+ if audit_mode?
103
102
  TingYun::Agent.logger.info("the return data: #{response.body}")
104
103
  else
105
104
  TingYun::Agent.logger.info("the send-process end")
@@ -111,6 +110,10 @@ module TingYun
111
110
  data = nil
112
111
  end
113
112
 
113
+ def audit_mode?
114
+ TingYun::Agent.config[:'nbs.audit_mode']
115
+ end
116
+
114
117
  def handle_serialization_error(method, e)
115
118
  msg = "Failed to serialize #{method} data using #{@marshaller.class.to_s}: #{e.inspect}"
116
119
  error = TingYun::Support::Exception::SerializationError.new(msg)
@@ -8,6 +8,9 @@ module TingYun
8
8
  # Return a Net::HTTP connection object to make a call to the collector.
9
9
  # We'll reuse the same handle for cases where we're using keep-alive, or
10
10
  # otherwise create a new one.
11
+
12
+
13
+
11
14
  def http_connection
12
15
  if @in_session
13
16
  establish_shared_connection
@@ -7,6 +7,7 @@ require 'net/http'
7
7
  require 'ting_yun/ting_yun_service/ssl'
8
8
  require 'ting_yun/ting_yun_service/request'
9
9
  require 'ting_yun/ting_yun_service/connection'
10
+ require 'ting_yun/support/exception'
10
11
 
11
12
  module TingYun
12
13
  class TingYunService
@@ -18,7 +19,9 @@ module TingYun
18
19
 
19
20
  def remote_method_uri(method)
20
21
  params = {'licenseKey'=> @license_key,'version' => @data_version}
21
- params[:appSessionKey] = @appSessionKey if @appSessionKey
22
+ raise ::TingYun::Support::Exception::AppSessionKeyError.new("@appSessionKey is asked when the upload-method happen") if method==:upload && @appSessionKey.nil?
23
+ params[:appSessionKey] = @appSessionKey
24
+
22
25
  uri = "/" + method.to_s
23
26
  uri << '?' + params.map do |k,v|
24
27
  next unless v
@@ -33,18 +33,9 @@ module TingYun
33
33
  end
34
34
  TingYun::Agent.logger.debug "Received response, status: #{response.code}, encoding: '#{response['content-encoding']}'"
35
35
 
36
-
37
36
  case response
38
37
  when Net::HTTPSuccess
39
38
  true # do nothing
40
- when Net::HTTPServiceUnavailable
41
- raise TingYun::Support::Exception::ServerConnectionException, "Service unavailable (#{response.code}): #{response.message}"
42
- when Net::HTTPGatewayTimeOut
43
- raise TingYun::Support::Exception::ServerConnectionException, "Gateway timeout (#{response.code}): #{response.message}"
44
- when Net::HTTPRequestEntityTooLarge
45
- raise TingYun::Support::Exception::UnrecoverableServerException, '413 Request Entity Too Large'
46
- when Net::HTTPUnsupportedMediaType
47
- raise TingYun::Support::Exception::UnsupportedMediaType, '415 Unsupported Media Type'
48
39
  else
49
40
  raise TingYun::Support::Exception::ServerConnectionException, "Unexpected response from server (#{response.code}): #{response.message}"
50
41
  end
@@ -64,8 +55,9 @@ module TingYun
64
55
  end
65
56
 
66
57
  def check_post_size(post)
67
- return if post.size < TingYun::Agent.config[:post_size_limit]
68
- TingYun::Agent.logger.debug "Tried to send too much data: #{post.size} bytes"
58
+ size = post.size
59
+ return if size < TingYun::Agent.config[:post_size_limit]
60
+ TingYun::Agent.logger.debug "Tried to send too much data: #{size} bytes"
69
61
  raise TingYun::Support::Exception::UnrecoverableServerException.new('413 Request Entity Too Large')
70
62
  end
71
63
 
@@ -81,8 +73,8 @@ module TingYun
81
73
  def valid_to_marshal?(data)
82
74
  @marshaller.dump(data)
83
75
  true
84
- rescue StandardError, SystemStackError => e
85
- TingYun::Agent.logger.warn("Unable to marshal environment report on connect.", e)
76
+ rescue StandardError, SystemStackError => error
77
+ TingYun::Agent.logger.warn("Unable to marshal environment report on connect.", error)
86
78
  false
87
79
  end
88
80
  end
@@ -22,15 +22,12 @@ module TingYun
22
22
 
23
23
  def metric_data(stats_hash)
24
24
 
25
- timeslice_start = stats_hash.started_at
26
- timeslice_end = stats_hash.harvested_at || Time.now
27
-
28
25
  action_array, adpex_array, general_array, components_array, errors_array = build_metric_data_array(stats_hash)
29
26
 
30
27
  upload_data = {
31
28
  :type => 'perfMetrics',
32
- :timeFrom => timeslice_start.to_i,
33
- :timeTo => timeslice_end.to_i,
29
+ :timeFrom => stats_hash.started_at.to_i,
30
+ :timeTo => stats_hash.harvested_at.to_i || Time.now.to_i,
34
31
  :interval => 60,
35
32
  :actions => action_array,
36
33
  :apdex => adpex_array,
@@ -43,9 +40,10 @@ module TingYun
43
40
  result
44
41
  end
45
42
 
43
+
46
44
  # The collector wants to recieve metric data in a format that's different
47
- # from how we store it inte -nally, so this method handles the translation.
48
- # It also handles translating metric names to IDs using our metric ID cache.
45
+ # # from how we store it inte -nally, so this method handles the translation.
46
+ # # It also handles translating metric names to IDs using our metric ID cache.
49
47
  def build_metric_data_array(stats_hash)
50
48
  action_array = []
51
49
  adpex_array = []
@@ -6,14 +6,12 @@ module TingYun
6
6
 
7
7
  MAJOR = 1
8
8
 
9
- MINOR = 1
9
+ MINOR = 2
10
10
 
11
- TINY = 4
11
+ TINY = 0
12
12
 
13
- BETA = 2
14
13
 
15
14
 
16
- STRING = [MAJOR, MINOR, TINY, BETA].compact.join('.')
17
-
15
+ STRING = [MAJOR, MINOR, TINY].compact.join('.')
18
16
  end
19
17
  end
data/lib/tingyun_rpm.rb CHANGED
@@ -23,28 +23,30 @@
23
23
 
24
24
  require 'ting_yun/frameworks'
25
25
 
26
-
26
+ # require 'pry'
27
27
  #if the agent had started in manual , then shouldn't start in auto again
28
28
 
29
+
29
30
  if defined?(Rails::VERSION)
30
31
  if Rails::VERSION::MAJOR.to_i >= 3
31
32
  module TingYun
32
33
  class Railtie < Rails::Railtie
33
34
 
34
- initializer "tingyun_rpm.start_plugin" do |app|
35
- TingYun::Agent.logger.info('initialize tingyun_rpm start_plugin')
36
- TingYun::Frameworks.init_start(:config => app.config)
37
- end
35
+ initializer "tingyun_rpm.start_plugin" do |app|
36
+ TingYun::Agent.logger.info('initialize tingyun_rpm start_plugin')
37
+ TingYun::Frameworks.init_start(:config => app.config)
38
+ end
38
39
  end
39
40
  end
40
41
  else
41
- # After version 2.0 of Rails we can access the configuration directly.
42
- # We need it to add dev mode routes after initialization finished.
43
- config = nil
44
- config = Rails.configuration if Rails.respond_to?(:configuration)
45
- TingYun::Frameworks.init_start(:config => config)
42
+ # After version 2.0 of Rails we can access the configuration directly.
43
+ # We need it to add dev mode routes after initialization finished.
44
+ config = nil
45
+ config = Rails.configuration if Rails.respond_to?(:configuration)
46
+ TingYun::Frameworks.init_start(:config => config)
46
47
  end
47
48
  else
48
49
  TingYun::Frameworks.init_start
49
50
  end
50
51
 
52
+
data/tingyun_rpm.gemspec CHANGED
@@ -36,11 +36,14 @@ Gem::Specification.new do |s|
36
36
  s.add_development_dependency 'pry', '~> 0.9.12'
37
37
  s.add_development_dependency 'hometown', '~> 0.2.5'
38
38
  s.add_development_dependency 'yard'
39
+ s.add_development_dependency 'rubycritic'
40
+
39
41
 
40
42
  if RUBY_VERSION >= '1.9.3'
41
43
  s.add_development_dependency 'guard', '= 2.12.5'
42
44
  s.add_development_dependency 'guard-minitest', '= 2.4.4'
43
45
  s.add_development_dependency 'rb-fsevent', '= 0.9.4'
46
+ s.add_development_dependency 'guard-rubycritic'
44
47
  end
45
48
 
46
49
  # compatible with Ruby 1.8.7
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tingyun_rpm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4.2
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - tingyun
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-06 00:00:00.000000000 Z
11
+ date: 2016-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -164,6 +164,20 @@ dependencies:
164
164
  - - ">="
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rubycritic
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
167
181
  - !ruby/object:Gem::Dependency
168
182
  name: guard
169
183
  requirement: !ruby/object:Gem::Requirement
@@ -206,6 +220,20 @@ dependencies:
206
220
  - - '='
207
221
  - !ruby/object:Gem::Version
208
222
  version: 0.9.4
223
+ - !ruby/object:Gem::Dependency
224
+ name: guard-rubycritic
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
209
237
  - !ruby/object:Gem::Dependency
210
238
  name: i18n
211
239
  requirement: !ruby/object:Gem::Requirement
@@ -240,7 +268,6 @@ executables: []
240
268
  extensions: []
241
269
  extra_rdoc_files: []
242
270
  files:
243
- - ".DS_Store"
244
271
  - ".gitignore"
245
272
  - ".travis.yml"
246
273
  - CODE_OF_CONDUCT.md
@@ -252,7 +279,6 @@ files:
252
279
  - lib/ting_yun/agent.rb
253
280
  - lib/ting_yun/agent/agent.rb
254
281
  - lib/ting_yun/agent/class_methods.rb
255
- - lib/ting_yun/agent/collector/base_sampler.rb
256
282
  - lib/ting_yun/agent/collector/error_collector.rb
257
283
  - lib/ting_yun/agent/collector/error_collector/error_trace_array.rb
258
284
  - lib/ting_yun/agent/collector/error_collector/noticed_error.rb
@@ -262,16 +288,24 @@ files:
262
288
  - lib/ting_yun/agent/collector/middle_ware_collector/middle_ware.rb
263
289
  - lib/ting_yun/agent/collector/middle_ware_collector/sampler.rb
264
290
  - lib/ting_yun/agent/collector/sql_sampler.rb
291
+ - lib/ting_yun/agent/collector/sql_sampler/slow_sql.rb
292
+ - lib/ting_yun/agent/collector/sql_sampler/sql_trace.rb
293
+ - lib/ting_yun/agent/collector/sql_sampler/transaction_sql_data.rb
265
294
  - lib/ting_yun/agent/collector/stats_engine.rb
266
295
  - lib/ting_yun/agent/collector/stats_engine/metric_stats.rb
267
296
  - lib/ting_yun/agent/collector/stats_engine/stats_hash.rb
268
297
  - lib/ting_yun/agent/collector/transaction_sampler.rb
298
+ - lib/ting_yun/agent/collector/transaction_sampler/class_method.rb
269
299
  - lib/ting_yun/agent/collector/transaction_sampler/slowest_sample_buffer.rb
270
300
  - lib/ting_yun/agent/collector/transaction_sampler/transaction_sample_buffer_base.rb
271
301
  - lib/ting_yun/agent/cross_app/cross_app_monitor.rb
272
302
  - lib/ting_yun/agent/cross_app/cross_app_tracing.rb
273
303
  - lib/ting_yun/agent/cross_app/inbound_request_monitor.rb
274
304
  - lib/ting_yun/agent/database.rb
305
+ - lib/ting_yun/agent/database/connection_manager.rb
306
+ - lib/ting_yun/agent/database/explain_plan_helpers.rb
307
+ - lib/ting_yun/agent/database/obfuscator.rb
308
+ - lib/ting_yun/agent/database/statement.rb
275
309
  - lib/ting_yun/agent/datastore.rb
276
310
  - lib/ting_yun/agent/datastore/metric_helper.rb
277
311
  - lib/ting_yun/agent/datastore/mongo.rb
@@ -288,7 +322,11 @@ files:
288
322
  - lib/ting_yun/agent/method_tracer_helpers.rb
289
323
  - lib/ting_yun/agent/threading/agent_thread.rb
290
324
  - lib/ting_yun/agent/transaction.rb
325
+ - lib/ting_yun/agent/transaction/apdex.rb
291
326
  - lib/ting_yun/agent/transaction/attributes.rb
327
+ - lib/ting_yun/agent/transaction/class_method.rb
328
+ - lib/ting_yun/agent/transaction/exceptions.rb
329
+ - lib/ting_yun/agent/transaction/instance_method.rb
292
330
  - lib/ting_yun/agent/transaction/request_attributes.rb
293
331
  - lib/ting_yun/agent/transaction/trace.rb
294
332
  - lib/ting_yun/agent/transaction/trace_node.rb
@@ -296,6 +334,7 @@ files:
296
334
  - lib/ting_yun/agent/transaction/transaction_metrics.rb
297
335
  - lib/ting_yun/agent/transaction/transaction_sample_builder.rb
298
336
  - lib/ting_yun/agent/transaction/transaction_state.rb
337
+ - lib/ting_yun/agent/transaction/transaction_timings.rb
299
338
  - lib/ting_yun/configuration.rb
300
339
  - lib/ting_yun/configuration/default_source.rb
301
340
  - lib/ting_yun/configuration/dotted_hash.rb
@@ -340,15 +379,18 @@ files:
340
379
  - lib/ting_yun/instrumentation/support/event_formatter.rb
341
380
  - lib/ting_yun/instrumentation/support/evented_subscriber.rb
342
381
  - lib/ting_yun/instrumentation/support/external_error.rb
382
+ - lib/ting_yun/instrumentation/support/javascript_instrumentor.rb
343
383
  - lib/ting_yun/instrumentation/support/metric_translator.rb
344
384
  - lib/ting_yun/instrumentation/support/mongo_formatter.rb
345
385
  - lib/ting_yun/instrumentation/support/parameter_filtering.rb
346
386
  - lib/ting_yun/instrumentation/support/queue_time.rb
347
387
  - lib/ting_yun/instrumentation/support/split_controller.rb
388
+ - lib/ting_yun/instrumentation/support/thrift_helper.rb
348
389
  - lib/ting_yun/instrumentation/support/transaction_namer.rb
349
390
  - lib/ting_yun/instrumentation/thrift.rb
350
391
  - lib/ting_yun/logger.rb
351
392
  - lib/ting_yun/logger/agent_logger.rb
393
+ - lib/ting_yun/logger/create_logger_helper.rb
352
394
  - lib/ting_yun/logger/log_once.rb
353
395
  - lib/ting_yun/logger/memory_logger.rb
354
396
  - lib/ting_yun/logger/null_logger.rb
@@ -357,6 +399,8 @@ files:
357
399
  - lib/ting_yun/metrics/metric_data.rb
358
400
  - lib/ting_yun/metrics/metric_spec.rb
359
401
  - lib/ting_yun/metrics/stats.rb
402
+ - lib/ting_yun/middleware/agent_middleware.rb
403
+ - lib/ting_yun/middleware/browser_monitoring.rb
360
404
  - lib/ting_yun/support/coerce.rb
361
405
  - lib/ting_yun/support/collector.rb
362
406
  - lib/ting_yun/support/exception.rb
@@ -408,7 +452,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
408
452
  version: 1.3.5
409
453
  requirements: []
410
454
  rubyforge_project:
411
- rubygems_version: 2.6.4
455
+ rubygems_version: 2.5.1
412
456
  signing_key:
413
457
  specification_version: 4
414
458
  summary: TingYun Ruby Agent