atatus 1.0.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.
Files changed (115) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/CHANGELOG.md +11 -0
  4. data/Gemfile +57 -0
  5. data/LICENSE +65 -0
  6. data/LICENSE-THIRD-PARTY +205 -0
  7. data/README.md +13 -0
  8. data/Rakefile +19 -0
  9. data/atatus.gemspec +36 -0
  10. data/atatus.yml +2 -0
  11. data/bench/.gitignore +2 -0
  12. data/bench/app.rb +53 -0
  13. data/bench/benchmark.rb +36 -0
  14. data/bench/report.rb +55 -0
  15. data/bench/rubyprof.rb +39 -0
  16. data/bench/stackprof.rb +23 -0
  17. data/bin/build_docs +5 -0
  18. data/bin/console +15 -0
  19. data/bin/setup +8 -0
  20. data/bin/with_framework +7 -0
  21. data/lib/atatus.rb +325 -0
  22. data/lib/atatus/agent.rb +260 -0
  23. data/lib/atatus/central_config.rb +141 -0
  24. data/lib/atatus/central_config/cache_control.rb +34 -0
  25. data/lib/atatus/collector/base.rb +329 -0
  26. data/lib/atatus/collector/builder.rb +317 -0
  27. data/lib/atatus/collector/transport.rb +72 -0
  28. data/lib/atatus/config.rb +248 -0
  29. data/lib/atatus/config/bytes.rb +25 -0
  30. data/lib/atatus/config/duration.rb +23 -0
  31. data/lib/atatus/config/options.rb +134 -0
  32. data/lib/atatus/config/regexp_list.rb +13 -0
  33. data/lib/atatus/context.rb +33 -0
  34. data/lib/atatus/context/request.rb +11 -0
  35. data/lib/atatus/context/request/socket.rb +19 -0
  36. data/lib/atatus/context/request/url.rb +42 -0
  37. data/lib/atatus/context/response.rb +22 -0
  38. data/lib/atatus/context/user.rb +42 -0
  39. data/lib/atatus/context_builder.rb +97 -0
  40. data/lib/atatus/deprecations.rb +22 -0
  41. data/lib/atatus/error.rb +22 -0
  42. data/lib/atatus/error/exception.rb +46 -0
  43. data/lib/atatus/error/log.rb +24 -0
  44. data/lib/atatus/error_builder.rb +76 -0
  45. data/lib/atatus/instrumenter.rb +224 -0
  46. data/lib/atatus/internal_error.rb +6 -0
  47. data/lib/atatus/logging.rb +55 -0
  48. data/lib/atatus/metadata.rb +19 -0
  49. data/lib/atatus/metadata/process_info.rb +18 -0
  50. data/lib/atatus/metadata/service_info.rb +61 -0
  51. data/lib/atatus/metadata/system_info.rb +35 -0
  52. data/lib/atatus/metadata/system_info/container_info.rb +121 -0
  53. data/lib/atatus/metadata/system_info/hw_info.rb +118 -0
  54. data/lib/atatus/metadata/system_info/os_info.rb +31 -0
  55. data/lib/atatus/metrics.rb +98 -0
  56. data/lib/atatus/metrics/cpu_mem.rb +240 -0
  57. data/lib/atatus/metrics/vm.rb +60 -0
  58. data/lib/atatus/metricset.rb +19 -0
  59. data/lib/atatus/middleware.rb +76 -0
  60. data/lib/atatus/naively_hashable.rb +21 -0
  61. data/lib/atatus/normalizers.rb +68 -0
  62. data/lib/atatus/normalizers/action_controller.rb +27 -0
  63. data/lib/atatus/normalizers/action_mailer.rb +26 -0
  64. data/lib/atatus/normalizers/action_view.rb +77 -0
  65. data/lib/atatus/normalizers/active_record.rb +45 -0
  66. data/lib/atatus/opentracing.rb +346 -0
  67. data/lib/atatus/rails.rb +61 -0
  68. data/lib/atatus/railtie.rb +30 -0
  69. data/lib/atatus/span.rb +125 -0
  70. data/lib/atatus/span/context.rb +40 -0
  71. data/lib/atatus/span_helpers.rb +44 -0
  72. data/lib/atatus/spies.rb +86 -0
  73. data/lib/atatus/spies/action_dispatch.rb +28 -0
  74. data/lib/atatus/spies/delayed_job.rb +68 -0
  75. data/lib/atatus/spies/elasticsearch.rb +36 -0
  76. data/lib/atatus/spies/faraday.rb +70 -0
  77. data/lib/atatus/spies/http.rb +44 -0
  78. data/lib/atatus/spies/json.rb +22 -0
  79. data/lib/atatus/spies/mongo.rb +87 -0
  80. data/lib/atatus/spies/net_http.rb +70 -0
  81. data/lib/atatus/spies/rake.rb +45 -0
  82. data/lib/atatus/spies/redis.rb +27 -0
  83. data/lib/atatus/spies/sequel.rb +47 -0
  84. data/lib/atatus/spies/sidekiq.rb +89 -0
  85. data/lib/atatus/spies/sinatra.rb +41 -0
  86. data/lib/atatus/spies/tilt.rb +27 -0
  87. data/lib/atatus/sql_summarizer.rb +35 -0
  88. data/lib/atatus/stacktrace.rb +16 -0
  89. data/lib/atatus/stacktrace/frame.rb +52 -0
  90. data/lib/atatus/stacktrace_builder.rb +104 -0
  91. data/lib/atatus/subscriber.rb +77 -0
  92. data/lib/atatus/trace_context.rb +85 -0
  93. data/lib/atatus/transaction.rb +100 -0
  94. data/lib/atatus/transport/base.rb +174 -0
  95. data/lib/atatus/transport/connection.rb +156 -0
  96. data/lib/atatus/transport/connection/http.rb +116 -0
  97. data/lib/atatus/transport/connection/proxy_pipe.rb +75 -0
  98. data/lib/atatus/transport/filters.rb +43 -0
  99. data/lib/atatus/transport/filters/secrets_filter.rb +74 -0
  100. data/lib/atatus/transport/serializers.rb +93 -0
  101. data/lib/atatus/transport/serializers/context_serializer.rb +85 -0
  102. data/lib/atatus/transport/serializers/error_serializer.rb +77 -0
  103. data/lib/atatus/transport/serializers/metadata_serializer.rb +70 -0
  104. data/lib/atatus/transport/serializers/metricset_serializer.rb +28 -0
  105. data/lib/atatus/transport/serializers/span_serializer.rb +80 -0
  106. data/lib/atatus/transport/serializers/transaction_serializer.rb +37 -0
  107. data/lib/atatus/transport/worker.rb +73 -0
  108. data/lib/atatus/util.rb +42 -0
  109. data/lib/atatus/util/inflector.rb +93 -0
  110. data/lib/atatus/util/lru_cache.rb +48 -0
  111. data/lib/atatus/util/prefixed_logger.rb +18 -0
  112. data/lib/atatus/util/throttle.rb +35 -0
  113. data/lib/atatus/version.rb +5 -0
  114. data/vendor/.gitkeep +0 -0
  115. metadata +190 -0
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Atatus
4
+ module Util
5
+ # @api private
6
+ class LruCache
7
+ def initialize(max_size = 512, &block)
8
+ @max_size = max_size
9
+ @data = Hash.new(&block)
10
+ @mutex = Mutex.new
11
+ end
12
+
13
+ def [](key)
14
+ @mutex.synchronize do
15
+ val = @data[key]
16
+ return unless val
17
+ add(key, val)
18
+ val
19
+ end
20
+ end
21
+
22
+ def []=(key, val)
23
+ @mutex.synchronize do
24
+ add(key, val)
25
+ end
26
+ end
27
+
28
+ def length
29
+ @data.length
30
+ end
31
+
32
+ def to_a
33
+ @data.to_a
34
+ end
35
+
36
+ private
37
+
38
+ def add(key, val)
39
+ @data.delete(key)
40
+ @data[key] = val
41
+
42
+ return unless @data.length > @max_size
43
+
44
+ @data.delete(@data.first[0])
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Atatus
4
+ # @api private
5
+ class PrefixedLogger < Logger
6
+ def initialize(logdev, prefix: '', **args)
7
+ super(logdev, **args)
8
+
9
+ @prefix = prefix
10
+ end
11
+
12
+ attr_reader :prefix
13
+
14
+ def add(severity, message = nil, progname = nil, &block)
15
+ super(severity, message, format('%s%s', prefix, progname), &block)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Atatus
4
+ module Util
5
+ # @api private
6
+
7
+ # Usage example:
8
+ # Throttle.new(5) { thing to only do once per 5 secs }
9
+ class Throttle
10
+ def initialize(buffer_secs, &block)
11
+ @buffer_secs = buffer_secs
12
+ @block = block
13
+ end
14
+
15
+ def call
16
+ if @last_call && seconds_since_last_call < @buffer_secs
17
+ return @last_result
18
+ end
19
+
20
+ @last_call = now
21
+ @last_result = @block.call
22
+ end
23
+
24
+ private
25
+
26
+ def now
27
+ Process.clock_gettime(Process::CLOCK_MONOTONIC)
28
+ end
29
+
30
+ def seconds_since_last_call
31
+ now - @last_call
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Atatus
4
+ VERSION = '1.0.0'
5
+ end
File without changes
metadata ADDED
@@ -0,0 +1,190 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: atatus
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Atatus
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-10-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: concurrent-ruby
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: http
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ description:
42
+ email: success@atatus.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files:
46
+ - CHANGELOG.md
47
+ - LICENSE
48
+ - LICENSE-THIRD-PARTY
49
+ - README.md
50
+ - atatus.yml
51
+ files:
52
+ - ".gitignore"
53
+ - CHANGELOG.md
54
+ - Gemfile
55
+ - LICENSE
56
+ - LICENSE-THIRD-PARTY
57
+ - README.md
58
+ - Rakefile
59
+ - atatus.gemspec
60
+ - atatus.yml
61
+ - bench/.gitignore
62
+ - bench/app.rb
63
+ - bench/benchmark.rb
64
+ - bench/report.rb
65
+ - bench/rubyprof.rb
66
+ - bench/stackprof.rb
67
+ - bin/build_docs
68
+ - bin/console
69
+ - bin/setup
70
+ - bin/with_framework
71
+ - lib/atatus.rb
72
+ - lib/atatus/agent.rb
73
+ - lib/atatus/central_config.rb
74
+ - lib/atatus/central_config/cache_control.rb
75
+ - lib/atatus/collector/base.rb
76
+ - lib/atatus/collector/builder.rb
77
+ - lib/atatus/collector/transport.rb
78
+ - lib/atatus/config.rb
79
+ - lib/atatus/config/bytes.rb
80
+ - lib/atatus/config/duration.rb
81
+ - lib/atatus/config/options.rb
82
+ - lib/atatus/config/regexp_list.rb
83
+ - lib/atatus/context.rb
84
+ - lib/atatus/context/request.rb
85
+ - lib/atatus/context/request/socket.rb
86
+ - lib/atatus/context/request/url.rb
87
+ - lib/atatus/context/response.rb
88
+ - lib/atatus/context/user.rb
89
+ - lib/atatus/context_builder.rb
90
+ - lib/atatus/deprecations.rb
91
+ - lib/atatus/error.rb
92
+ - lib/atatus/error/exception.rb
93
+ - lib/atatus/error/log.rb
94
+ - lib/atatus/error_builder.rb
95
+ - lib/atatus/instrumenter.rb
96
+ - lib/atatus/internal_error.rb
97
+ - lib/atatus/logging.rb
98
+ - lib/atatus/metadata.rb
99
+ - lib/atatus/metadata/process_info.rb
100
+ - lib/atatus/metadata/service_info.rb
101
+ - lib/atatus/metadata/system_info.rb
102
+ - lib/atatus/metadata/system_info/container_info.rb
103
+ - lib/atatus/metadata/system_info/hw_info.rb
104
+ - lib/atatus/metadata/system_info/os_info.rb
105
+ - lib/atatus/metrics.rb
106
+ - lib/atatus/metrics/cpu_mem.rb
107
+ - lib/atatus/metrics/vm.rb
108
+ - lib/atatus/metricset.rb
109
+ - lib/atatus/middleware.rb
110
+ - lib/atatus/naively_hashable.rb
111
+ - lib/atatus/normalizers.rb
112
+ - lib/atatus/normalizers/action_controller.rb
113
+ - lib/atatus/normalizers/action_mailer.rb
114
+ - lib/atatus/normalizers/action_view.rb
115
+ - lib/atatus/normalizers/active_record.rb
116
+ - lib/atatus/opentracing.rb
117
+ - lib/atatus/rails.rb
118
+ - lib/atatus/railtie.rb
119
+ - lib/atatus/span.rb
120
+ - lib/atatus/span/context.rb
121
+ - lib/atatus/span_helpers.rb
122
+ - lib/atatus/spies.rb
123
+ - lib/atatus/spies/action_dispatch.rb
124
+ - lib/atatus/spies/delayed_job.rb
125
+ - lib/atatus/spies/elasticsearch.rb
126
+ - lib/atatus/spies/faraday.rb
127
+ - lib/atatus/spies/http.rb
128
+ - lib/atatus/spies/json.rb
129
+ - lib/atatus/spies/mongo.rb
130
+ - lib/atatus/spies/net_http.rb
131
+ - lib/atatus/spies/rake.rb
132
+ - lib/atatus/spies/redis.rb
133
+ - lib/atatus/spies/sequel.rb
134
+ - lib/atatus/spies/sidekiq.rb
135
+ - lib/atatus/spies/sinatra.rb
136
+ - lib/atatus/spies/tilt.rb
137
+ - lib/atatus/sql_summarizer.rb
138
+ - lib/atatus/stacktrace.rb
139
+ - lib/atatus/stacktrace/frame.rb
140
+ - lib/atatus/stacktrace_builder.rb
141
+ - lib/atatus/subscriber.rb
142
+ - lib/atatus/trace_context.rb
143
+ - lib/atatus/transaction.rb
144
+ - lib/atatus/transport/base.rb
145
+ - lib/atatus/transport/connection.rb
146
+ - lib/atatus/transport/connection/http.rb
147
+ - lib/atatus/transport/connection/proxy_pipe.rb
148
+ - lib/atatus/transport/filters.rb
149
+ - lib/atatus/transport/filters/secrets_filter.rb
150
+ - lib/atatus/transport/serializers.rb
151
+ - lib/atatus/transport/serializers/context_serializer.rb
152
+ - lib/atatus/transport/serializers/error_serializer.rb
153
+ - lib/atatus/transport/serializers/metadata_serializer.rb
154
+ - lib/atatus/transport/serializers/metricset_serializer.rb
155
+ - lib/atatus/transport/serializers/span_serializer.rb
156
+ - lib/atatus/transport/serializers/transaction_serializer.rb
157
+ - lib/atatus/transport/worker.rb
158
+ - lib/atatus/util.rb
159
+ - lib/atatus/util/inflector.rb
160
+ - lib/atatus/util/lru_cache.rb
161
+ - lib/atatus/util/prefixed_logger.rb
162
+ - lib/atatus/util/throttle.rb
163
+ - lib/atatus/version.rb
164
+ - vendor/.gitkeep
165
+ homepage: https://www.atatus.com
166
+ licenses:
167
+ - Atatus
168
+ metadata:
169
+ changelog_uri: https://docs.atatus.com/docs/release-notes/ruby.html
170
+ documentation_uri: https://docs.atatus.com/docs/application-monitoring/ruby-agent/rails.html
171
+ post_install_message:
172
+ rdoc_options: []
173
+ require_paths:
174
+ - lib
175
+ required_ruby_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: 2.3.0
180
+ required_rubygems_version: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
185
+ requirements: []
186
+ rubygems_version: 3.0.4
187
+ signing_key:
188
+ specification_version: 4
189
+ summary: Atatus Ruby Agent
190
+ test_files: []