elastic-apm 3.0.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/.ci/Jenkinsfile +4 -1
  3. data/CHANGELOG.asciidoc +497 -0
  4. data/CHANGELOG.md +1 -359
  5. data/Rakefile +2 -2
  6. data/docs/advanced.asciidoc +0 -2
  7. data/docs/api.asciidoc +12 -1
  8. data/docs/configuration.asciidoc +15 -4
  9. data/docs/custom-instrumentation.asciidoc +2 -2
  10. data/docs/debugging.asciidoc +1 -1
  11. data/docs/getting-started-rack.asciidoc +4 -1
  12. data/docs/getting-started-rails.asciidoc +2 -2
  13. data/docs/index.asciidoc +8 -9
  14. data/docs/introduction.asciidoc +17 -15
  15. data/docs/opentracing.asciidoc +13 -13
  16. data/docs/release-notes.asciidoc +11 -1
  17. data/docs/set-up.asciidoc +16 -0
  18. data/docs/supported-technologies.asciidoc +2 -4
  19. data/lib/elastic_apm.rb +2 -2
  20. data/lib/elastic_apm/agent.rb +4 -4
  21. data/lib/elastic_apm/central_config.rb +7 -3
  22. data/lib/elastic_apm/config.rb +2 -2
  23. data/lib/elastic_apm/config/options.rb +6 -0
  24. data/lib/elastic_apm/context.rb +15 -1
  25. data/lib/elastic_apm/instrumenter.rb +8 -7
  26. data/lib/elastic_apm/normalizers.rb +0 -9
  27. data/lib/elastic_apm/normalizers/rails.rb +10 -0
  28. data/lib/elastic_apm/normalizers/{action_controller.rb → rails/action_controller.rb} +0 -0
  29. data/lib/elastic_apm/normalizers/{action_mailer.rb → rails/action_mailer.rb} +0 -0
  30. data/lib/elastic_apm/normalizers/{action_view.rb → rails/action_view.rb} +0 -0
  31. data/lib/elastic_apm/normalizers/{active_record.rb → rails/active_record.rb} +0 -0
  32. data/lib/elastic_apm/rails.rb +1 -0
  33. data/lib/elastic_apm/sinatra.rb +36 -0
  34. data/lib/elastic_apm/transaction.rb +13 -6
  35. data/lib/elastic_apm/transport/serializers/context_serializer.rb +13 -1
  36. data/lib/elastic_apm/version.rb +1 -1
  37. metadata +10 -6
@@ -1,359 +1 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file.
4
-
5
- This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
-
7
- ## 3.0.0 (2019-10-08)
8
-
9
- ### Breaking Changes
10
-
11
- The following changes are breaking, as they may change the way data is grouped or shown in Kibana or how your app
12
- defines agent settings.
13
-
14
- - Decrease stack_trace_limit to 50 ([#515](https://github.com/elastic/apm-agent-ruby/pull/515))
15
- - Errors' `message` no longer include their `type` ([#323](https://github.com/elastic/apm-agent-ruby/pull/323/files))
16
- - External request spans now have type `external.http.{library}` ([#514](https://github.com/elastic/apm-agent-ruby/pull/514))
17
- - Durations are measured using monotonic time ([#550](https://github.com/elastic/apm-agent-ruby/pull/550))
18
- - Rename set_tag to set_label ([#543](https://github.com/elastic/apm-agent-ruby/pull/543))
19
- - Rename disabled_spies to disabled_instrumentations ([#539](https://github.com/elastic/apm-agent-ruby/pull/539))
20
-
21
- ## 2.12.0 (2019-10-01)
22
-
23
- ### Changed
24
-
25
- - `disabled_spies` renamed to `disabled_instrumentations` with fallback ([#539](https://github.com/elastic/apm-agent-ruby/pull/539))
26
- - Rename `set_tag` to `set_label` and deprecate `set_tag` ([#543](https://github.com/elastic/apm-agent-ruby/pull/543))
27
- - Allow non-String label values ([#543](https://github.com/elastic/apm-agent-ruby/pull/543))
28
-
29
- ### Fixed
30
-
31
- - Handles a case where stacktrace frames are empty ([#538](https://github.com/elastic/apm-agent-ruby/pull/538))
32
-
33
- ### Deprecated
34
-
35
- - Deprecate `set_tag` ([#543](https://github.com/elastic/apm-agent-ruby/pull/543))
36
-
37
- ## 2.11.0 (2019-09-23)
38
-
39
- ### Added
40
-
41
- - Add `Rails` module with `#start` method to run Rails setup explicitly ([#522](https://github.com/elastic/apm-agent-ruby/pull/522))
42
- - Support for log/trace correlation ([#527](https://github.com/elastic/apm-agent-ruby/pull/527))
43
-
44
- ### Changed
45
-
46
- - Split dot-separated `span.type` into `.type`, `.subtype` and `.action` (auto-upgrades dot style) ([#531](https://github.com/elastic/apm-agent-ruby/pull/531))
47
-
48
- ## 2.10.1
49
-
50
- ### Fixed
51
-
52
- - Fixed loading options from a config file specified by `ELASTIC_APM_CONFIG_FILE` ([#518](https://github.com/elastic/apm-agent-ruby/pull/518))
53
- - Fixed an issue with CentralConfig polling not starting ([#525](https://github.com/elastic/apm-agent-ruby/pull/525))
54
-
55
- ### Added
56
-
57
- - Support for chained exceptions ([#488](https://github.com/elastic/apm-agent-ruby/pull/488))
58
-
59
- ## 2.10.0
60
-
61
- ### Added
62
-
63
- - Add Ruby specific metrics ([#437](https://github.com/elastic/apm-agent-ruby/pull/437))
64
- - Support for APM Agent Configuration via Kibana ([#464](https://github.com/elastic/apm-agent-ruby/pull/464))
65
- - Change span name format and add command to context's db.statement for `MongoSpy` ([#488](https://github.com/elastic/apm-agent-ruby/pull/490))
66
-
67
- ### Changed
68
-
69
- - `ElasticAPM.report` and `ElasticAPM.report_message` return the string ID of the generated `Error` objects ([#507](https://github.com/elastic/apm-agent-ruby/pull/507))
70
-
71
- ## 2.9.1 (2019-06-28)
72
-
73
- ### Fixed
74
-
75
- - Use system CA certificate if none is specified ([#460](https://github.com/elastic/apm-agent-ruby/pull/460))
76
-
77
- ## 2.9.0 (2019-06-25)
78
-
79
- ### Security
80
-
81
- - **NB:** If you are using a custom CA cert via `server_ca_cert`, versions of the agent prior to 2.9.0 may not have validated the certificate of APM Server correctly.
82
-
83
- ### Added
84
-
85
- - Add `transaction.type` to errors ([#434](https://github.com/elastic/apm-agent-ruby/pull/434))
86
- - Add cookies to `request.cookies` ([#448](https://github.com/elastic/apm-agent-ruby/pull/448))
87
-
88
- ### Fixed
89
-
90
- - Fix support for older versions of Http.rb ([#438](https://github.com/elastic/apm-agent-ruby/pull/434))
91
- - Strip `Cookie` and `Set-Cookie` from headers ([#448](https://github.com/elastic/apm-agent-ruby/pull/448))
92
- - Fix disabling SSL verification ([#449](https://github.com/elastic/apm-agent-ruby/pull/449))
93
-
94
- ## 2.8.1 (2019-05-29)
95
-
96
- ### Fixed
97
-
98
- - Database statements are properly truncated ([#431](https://github.com/elastic/apm-agent-ruby/pull/431))
99
-
100
- ## 2.8.0 (2019-05-20)
101
-
102
- ### Added
103
-
104
- - The option `stack_trace_limit` ([#424](https://github.com/elastic/apm-agent-ruby/pull/424))
105
-
106
- ### Changed
107
-
108
- - Use standardized User-Agent ([#419](https://github.com/elastic/apm-agent-ruby/pull/419))
109
-
110
- ### Fixed
111
-
112
- - `error.culprit` is properly truncated to 1024 characters ([#418](https://github.com/elastic/apm-agent-ruby/pull/418))
113
- - Force convert `transaction.context.response.status_code` to integer ([#423](https://github.com/elastic/apm-agent-ruby/pull/423))
114
-
115
- ## 2.7.0 (2019-05-07)
116
-
117
- ### Added
118
-
119
- - Added `disable_start_message` for those wanting complete silence on boot ([#397](https://github.com/elastic/apm-agent-ruby/pull/397))
120
-
121
- ### Changed
122
-
123
- - Attempt to strip secrets from `request.env` ([#410](https://github.com/elastic/apm-agent-ruby/pull/410))
124
-
125
- ### Fixed
126
-
127
- - Rewritten most of the internal transport code, streaming events to APM Server ([#372](https://github.com/elastic/apm-agent-ruby/pull/372))
128
- - Re-added `default_tags` ([#395](https://github.com/elastic/apm-agent-ruby/pull/395))
129
- - A bug in the Faraday spy when disabling the Net::HTTP spy ([#396](https://github.com/elastic/apm-agent-ruby/pull/396))
130
- - Fix disabling the ActionDispatch spy ([#399](https://github.com/elastic/apm-agent-ruby/pull/399))
131
-
132
- ## 2.6.1 (2019-03-28)
133
-
134
- ### Fixed
135
-
136
- - Setting `config_file` via `ELASTIC_APM_CONFIG_FILE` ([#363(https://github.com/elastic/apm-agent-ruby/pull/363))
137
- - Stopping the Metrics collector when it is disabled ([#357](https://github.com/elastic/apm-agent-ruby/pull/357))
138
- - HTTP proxy settings can now be set by ENV variable ([#367](https://github.com/elastic/apm-agent-ruby/pull/367))
139
-
140
- ## 2.6.0 (2019-03-19)
141
-
142
- ### Deprecated
143
-
144
- - `ElasticAPM.build_context` now takes two keyword arguments instead of a single, normal argument. [Docs](https://www.elastic.co/guide/en/apm/agent/ruby/2.x/api.html#api-agent-build-context).
145
- - The option `capture_body` has a string value instead of boolean. [Docs](https://www.elastic.co/guide/en/apm/agent/ruby/2.x/configuration.html#config-capture-body).
146
-
147
- Both APIs are backwards compatible with fallbacks and deprecation warnings, scheduled for removal in next major release.
148
-
149
- ### Added
150
-
151
- - Configuration options to use an HTTP proxy ([#352](https://github.com/elastic/apm-agent-ruby/pull/352))
152
-
153
- ### Changed
154
-
155
- - Errors get their own contexts, perhaps leading to slightly different (but more correct) results. ([#335](https://github.com/elastic/apm-agent-ruby/pull/335))
156
- - The agent no longer starts automatically inside Rails' console ([#343](https://github.com/elastic/apm-agent-ruby/pull/343))
157
-
158
- ### Fixed
159
-
160
- - Fixed reading available memory on older Linux kernels ([#351](https://github.com/elastic/apm-agent-ruby/pull/351))
161
- - Don't apply filters to original response headers ([#354](https://github.com/elastic/apm-agent-ruby/pull/354))
162
-
163
- ## 2.5.0 (2019-03-01)
164
-
165
- ### Added
166
-
167
- - Added the option `active` that will prevent the agent from starting if set to `false` ([#338](https://github.com/elastic/apm-agent-ruby/pull/338))
168
-
169
- ### Fixed
170
-
171
- - Fix error with `capture_body` and nested request bodies ([#339](https://github.com/elastic/apm-agent-ruby/pull/339))
172
-
173
- ## 2.4.0 (2019-02-27)
174
-
175
- ### Added
176
-
177
- - Added option to specify a custom server CA certificate ([#315](https://github.com/elastic/apm-agent-ruby/pull/315))
178
-
179
- ### Changed
180
-
181
- - **NB:** Default value of option `capture_body` flipped to `false` to align with other agents. Set `capture_body: true` in your configuration to get them back. ([#324](https://github.com/elastic/apm-agent-ruby/pull/324))
182
-
183
- ### Fixed
184
-
185
- - Reading CPU stats from `/proc/stat` on RHEL ([#312](https://github.com/elastic/apm-agent-ruby/pull/312))
186
- - Change TraceContext to differentiate between `id` and `parent_id` ([#326](https://github.com/elastic/apm-agent-ruby/pull/326))
187
- - `capture_body` will now force encode text bodies to utf-8 when possible ([#332](https://github.com/elastic/apm-agent-ruby/pull/332))
188
-
189
- ## 2.3.1 (2019-01-31)
190
-
191
- ### Added
192
-
193
- - Read container info from Docker or Kupernetes ([#303](https://github.com/elastic/apm-agent-ruby/pull/303))
194
-
195
- ### Fixed
196
-
197
- - Fix logging exceptions when booting via Railtie ([#306](https://github.com/elastic/apm-agent-ruby/pull/306))
198
-
199
- ## 2.3.0 (2019-01-29)
200
-
201
- ### Added
202
-
203
- - Support for Metrics ([#276](https://github.com/elastic/apm-agent-ruby/pull/276))
204
-
205
- ## 2.2.0 (2019-01-22)
206
-
207
- ### Added
208
-
209
- - Support for [OpenTracing](https://opentracing.io) ([#273](https://github.com/elastic/apm-agent-ruby/pull/273))
210
- - Add capture\_\* options ([#279](https://github.com/elastic/apm-agent-ruby/pull/279))
211
- - Evaluate the config file as ERB ([#288](https://github.com/elastic/apm-agent-ruby/pull/288))
212
-
213
- ### Changed
214
-
215
- - Rename `Traceparent` object to `TraceContext` ([#271](https://github.com/elastic/apm-agent-ruby/pull/271))
216
-
217
- ### Fixed
218
-
219
- - An issue where Spans would not get Stacktraces attached ([#282](https://github.com/elastic/apm-agent-ruby/pull/282))
220
- - Skip `caller` unless needed ([#287](https://github.com/elastic/apm-agent-ruby/pull/283))
221
-
222
- ## 2.1.2 (2018-12-07)
223
-
224
- ### Fixed
225
-
226
- - Fix truncation of `transaction.request.url` values ([#267](https://github.com/elastic/apm-agent-ruby/pull/267))
227
- - Fix Faraday calls with `url_prefix` ([#263](https://github.com/elastic/apm-agent-ruby/pull/263))
228
- - Force `span.context.http.status_code` to be an integer
229
-
230
- ## 2.1.1 (2018-12-04)
231
-
232
- ### Fixed
233
-
234
- - Set traceparent span.id to transaction id when span is missing ([#261](https://github.com/elastic/apm-agent-ruby/pull/261))
235
-
236
- ## 2.1.0 (2018-12-04)
237
-
238
- ### Added
239
-
240
- - Support for Faraday ([#249](https://github.com/elastic/apm-agent-ruby/pull/249))
241
-
242
- ### Fixed
243
-
244
- - Truncate keyword fields to 1024 chars ([#240](https://github.com/elastic/apm-agent-ruby/pull/240))
245
- - Lazy boot worker threads on first event. Fixes apps using Puma's `preload_app!` ([#239](https://github.com/elastic/apm-agent-ruby/pull/239))
246
- - Fix missing `disable_send` implementation ([#257](https://github.com/elastic/apm-agent-ruby/pull/257))
247
- - Add warnings for invalid config options ([#254](https://github.com/elastic/apm-agent-ruby/pull/254))
248
-
249
- ## 2.0.1 (2018-11-15)
250
-
251
- ### Fixed
252
-
253
- - Stop sending `span.start` ([#234](https://github.com/elastic/apm-agent-ruby/pull/234))
254
-
255
- ## 2.0.0 (2018-11-14)
256
-
257
- Version adds support for APM Server 6.5 and needs at least that.
258
-
259
- ### Added
260
-
261
- - Support for APM Server 6.5 (Intake v2)
262
- - Support for Distributed Tracing (beta)
263
- - Support for RUM Agent correlation (Distributed Tracing)
264
- - Support for [HTTP.rb](https://github.com/httprb/http) (Instrumentation + Distributed Tracing)
265
-
266
- ### Changed
267
-
268
- - Custom instrumentation APIs ([#209](https://github.com/elastic/apm-agent-ruby/pull/209))
269
- - Tag keys will convert disallowed chars to `_`
270
- - Default log level changed to `info`
271
- - Laxed version requirement of concurrent-ruby
272
- - Change `log_level` to only concern agent log
273
-
274
- ### Deprecated
275
-
276
- #### APIs:
277
-
278
- - `ElasticAPM.transaction`
279
- - `ElasticAPM.span`
280
-
281
- #### Options:
282
-
283
- - `compression_level`
284
- - `compression_minimum_size`
285
- - `debug_http`
286
- - `debug_transactions`
287
- - `flush_interval`
288
- - `http_open_timeout`
289
- - `http_read_timeout`
290
- - `enabled_environments`
291
- - `disable_environment_warning`
292
-
293
- Some options that used to take a certain unit for granted now expects explicit units – but will fall back to old default.
294
-
295
- ### Removed
296
-
297
- - Support for APM Server versions prior to 6.5.
298
- - Support for Ruby 2.2 (eol)
299
-
300
- ## 1.1.0 (2018-09-07)
301
-
302
- ### Added
303
-
304
- - Rake task instrumentation ([#192](https://github.com/elastic/apm-agent-ruby/pull/192))
305
- - `default_tags` option ([#183](https://github.com/elastic/apm-agent-ruby/pull/183))
306
-
307
- ### Fixed
308
-
309
- - Fallback from missing JRUBY_VERSION ([#180](https://github.com/elastic/apm-agent-ruby/pull/180))
310
-
311
- ## 1.0.2 (2018-09-07)
312
-
313
- Should've been a minor release -- see 1.1.0
314
-
315
- ## 1.0.1 (2018-07-30)
316
-
317
- ### Fixed
318
-
319
- - Fixed internal LRU cache to be threadsafe ([#178](https://github.com/elastic/apm-agent-ruby/pull/178))
320
-
321
- ## 1.0.0 (2018-06-29)
322
-
323
- ### Added
324
-
325
- - Added config.disable_send ([#156](https://github.com/elastic/apm-agent-ruby/pull/156))
326
-
327
- ### Changed
328
-
329
- - Set the default `span_frame_min_duration` to 5ms
330
-
331
- ### Fixed
332
-
333
- - Fixed some Elasticsearch spans not validating JSON Schema ([#157](https://github.com/elastic/apm-agent-ruby/pull/157))
334
-
335
- ## 0.8.0 (2018-06-13)
336
-
337
- ### Added
338
-
339
- - Added an option to disable metrics collection ([#145](https://github.com/elastic/apm-agent-ruby/pull/145))
340
- - Filters can cancel the entire payload by returning `nil` ([#148](https://github.com/elastic/apm-agent-ruby/pull/148))
341
- - Added `ENV` version of the logging options ([#146](https://github.com/elastic/apm-agent-ruby/pull/146))
342
- - Added `config.ignore_url_patterns` ([#151](https://github.com/elastic/apm-agent-ruby/pull/151))
343
-
344
- ### Changed
345
-
346
- - Use concurrent-ruby's TimerTask instead of `Thread#sleep`. Adds dependency on `concurrent-ruby`. ([#141](https://github.com/elastic/apm-agent-ruby/pull/141))
347
-
348
- ### Fixed
349
-
350
- - Remove newline on `hostname`
351
- - Fixed ActionMailer spans renaming their transaction
352
-
353
- ## 0.7.4 - 2018-06-07
354
-
355
- Beginning of this document
356
-
357
- ### Fixed
358
-
359
- - Fix overwriting custom logger with Rails'
1
+ Release notes are now available in our documentation at ([elastic.co](https://www.elastic.co/guide/en/apm/agent/ruby/current/release-notes.html))
data/Rakefile CHANGED
@@ -3,9 +3,9 @@
3
3
  require 'bundler/gem_tasks'
4
4
 
5
5
  Rake::Task[:release].enhance do
6
- `git checkout 2.x &&
6
+ `git checkout 3.x &&
7
7
  git rebase master &&
8
- git push origin 2.x &&
8
+ git push origin 3.x &&
9
9
  git checkout master`
10
10
  end
11
11
 
@@ -9,8 +9,6 @@ endif::[]
9
9
 
10
10
  * <<context>>
11
11
  * <<custom-instrumentation>>
12
- * <<opentracing>>
13
12
 
14
13
  include::./context.asciidoc[]
15
14
  include::./custom-instrumentation.asciidoc[]
16
- include::./opentracing.asciidoc[]
@@ -5,7 +5,7 @@ https://www.elastic.co/guide/en/apm/agent/ruby/current/introduction.html[elastic
5
5
  endif::[]
6
6
 
7
7
  [[api]]
8
- == Public API
8
+ == API reference
9
9
 
10
10
  Although most usage is covered automatically, Elastic APM also has a public
11
11
  API that allows custom usage.
@@ -203,6 +203,17 @@ the gem and using the `Railtie`.
203
203
  ElasticAPM::Rails.start(server_url: 'http://localhost:8200')
204
204
  ----
205
205
 
206
+ [float]
207
+ [[sinatra-start]]
208
+ === Sinatra
209
+
210
+ Start the agent and hook into Sinatra.
211
+
212
+ [source,ruby]
213
+ ----
214
+ ElasticAPM::Sinatra.start(MySinatraApp, server_url: 'http://localhost:8200')
215
+ ----
216
+
206
217
  [float]
207
218
  === Errors
208
219
 
@@ -53,6 +53,17 @@ ElasticAPM.start(
53
53
  )
54
54
  ----
55
55
 
56
+ Alternatively, you can use the `ElasticAPM::Sinatra.start` API.
57
+
58
+ [source,ruby]
59
+ ----
60
+ # config.ru or similar
61
+ ElasticAPM::Sinatra.start(
62
+ MyApp,
63
+ service_name: 'SomeOtherName'
64
+ )
65
+ ----
66
+
56
67
  See <<getting-started-rack>>.
57
68
 
58
69
  [float]
@@ -221,7 +232,7 @@ Whether or not to attach `ENV` from Rack to transactions and errors.
221
232
  | `ELASTIC_APM_CENTRAL_CONFIG` | `central_config` | `true`
222
233
  |============
223
234
 
224
- Enable {kibana-ref}/agent-configuration.html[APM Agent Configuration via Kibana].
235
+ Enable {apm-app-ref}/agent-configuration.html[APM Agent Configuration via Kibana].
225
236
  If set to `true`, the client will poll the APM Server regularly for new agent configuration.
226
237
 
227
238
  Usually APM Server determines how often to poll, but if not the default interval is 5 minutes.
@@ -325,13 +336,13 @@ Get an array of enabled instrumentations with `ElasticAPM.agent.config.enabled_i
325
336
  The name of the environment this service is deployed in,
326
337
  e.g. "production" or "staging".
327
338
 
328
- Environments allow you to easily filter data on a global level in the APM UI.
339
+ Environments allow you to easily filter data on a global level in the APM app.
329
340
  It's important to be consistent when naming environments across agents.
330
- See {kibana-ref}/filters.html#environment-selector[environment selector] in the Kibana UI for more information.
341
+ See {apm-app-ref}/filters.html#environment-selector[environment selector] in the APM app for more information.
331
342
 
332
343
  Defaults to `ENV['RAILS_ENV'] || ENV['RACK_ENV']`.
333
344
 
334
- NOTE: This feature is fully supported in the APM UI in Kibana versions >= 7.2.
345
+ NOTE: This feature is fully supported in the APM app in Kibana versions >= 7.2.
335
346
  You must use the query bar to filter for a specific environment in versions prior to 7.2.
336
347
 
337
348
  [float]