forked from newrelic/newrelic-ruby-agent
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
1547 lines (1126 loc) · 60.7 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# New Relic Ruby Agent Release Notes #
## v3.8.1 ##
* Better handling for Rack applications implemented as middlewares
When using a Sinatra application as a middleware around another app (for
example, a Rails app), or manually instrumenting a Rack middleware wrapped
around another application, the agent would previously generate two separate
transaction names in the New Relic UI (one for the middleware, and one for
the inner application).
As of this release, the agent will instead unify these two parts into a single
transaction in the UI. The unified name will be the name assigned to the
inner-most traced transaction by default. Calls to
NewRelic::Agent.set_transaction_name will continue to override the default
names assigned by the agent's instrumentation code.
This change also makes it possible to run X-Ray sessions against transactions
of the 'inner' application in cases where one instrumented app is wrapped in
another that's implemented as a middleware.
* Support for mongo-1.10.0
The Ruby agent now instruments version 1.10.0 of the mongo gem (versions 1.8.x
and 1.9.x were already supported, and continue to be).
* Allow setting configuration file path via an option to manual_start
Previously, passing the :config_path option to NewRelic::Agent.manual_start
would not actually affect the location that the agent would use to look for
its configuration file. This has been fixed, and the log messages emitted when
a configuration file is not found should now be more helpful.
## v3.8.0 ##
* Better support for forking and daemonizing dispatchers (e.g. Puma, Unicorn)
The agent should now work out-of-the box with no special configuration on
servers that fork or daemonize themselves (such as Unicorn or Puma in some
configurations). The agent's background thread will be automatically restarted
after the first transaction processed within each child process.
This change means it's no longer necessary to set the
'restart_thread_in_children setting' in your agent configuration file if you
were doing so previously.
* Rails 4.1 support
Rails 4.1 has shipped, and the Ruby agent is ready for it! We've been running
our test suites against the release candidates with no significant issues, so
we're happy to announce full compatibility with this new release of Rails.
* Ruby VM measurements
The Ruby agent now records more detailed information about the performance and
behavior of the Ruby VM, mainly focused around Ruby's garbage collector. This
information is exposed on the new 'Ruby VM' tab in the UI. For details about
what is recorded, see:
http://docs.newrelic.com/docs/ruby/ruby-vm-stats
* Separate in-transaction GC timings for web and background processes
Previously, an application with GC instrumentation enabled, and both web and
background processes reporting in to it would show an overly inflated GC band
on the application overview graph, because data from both web and non-web
transactions would be included. This has been fixed, and GC time during web
and non-web transactions is now tracked separately.
* More accurate GC measurements on multi-threaded web servers
The agent could previously have reported inaccurate GC times on multi-threaded
web servers such as Puma. It will now correctly report GC timings in
multi-threaded contexts.
* Improved ActiveMerchant instrumentation
The agent will now trace the store, unstore, and update methods on
ActiveMerchant gateways. In addition, a bug preventing ActiveMerchant
instrumentation from working on Ruby 1.9+ has been fixed.
Thanks to Troex Nevelin for the contribution!
* More robust Real User Monitoring script injection with charset meta tags
Previous versions of the agent with Real User Monitoring enabled could have
injected JavaScript code into the page above a charset meta tag. By the HTML5
spec, the charset tag must appear in the first 1024 bytes of the page, so the
Ruby agent will now attempt to inject RUM script after a charset tag, if one
is present.
* More robust connection sequence with New Relic servers
A rare bug that could cause the agent's initial connection handshake with
New Relic servers to silently fail has been fixed, and better logging has been
added to the related code path to ease diagnosis of any future issues.
* Prevent over-counting of queue time with nested transactions
When using add_transaction_tracer on methods called from within a Rails or
Sinatra action, it was previously possible to get inflated queue time
measurements, because queue time would be recorded for both the outer
transaction (the Rails or Sinatra action) and the inner transaction (the
method given to add_transaction_tracer). This has been fixed, so only the
outermost transaction will now record queue time.
## v3.7.3 ##
* Obfuscation for PostgreSQL explain plans
Fixes an agent bug with PostgreSQL where parameters from the original query
could appear in explain plans sent to New Relic servers, even when SQL
obfuscation was enabled. Parameters from the query are now masked in explain
plans prior to transmission when transaction_tracer.record_sql is set to
'obfuscated' (the default setting).
For more information, see:
https://docs.newrelic.com/docs/traces/security-for-postgresql-explain-plans
* More accurate categorization of SQL statements
Some SQL SELECT statements that were previously being mis-categorized as
'SQL - OTHER' will now correctly be tagged as 'SQL - SELECT'. This
particularly affected ActiveRecord users using PostgreSQL.
* More reliable Typhoeus instrumentation
Fixed an issue where an exception raised from a user-specified on_complete
block would cause our Typhoeus instrumentation to fail to record the request.
* Fix for Puma 2.8.0 cluster mode (3.7.3.204)
Puma's 2.8.0 release renamed a hook New Relic used to support Puma's cluster
mode. This resulted in missing data for users running Puma. Thanks Benjamin
Kudria for the fix!
* Fix for deployment command bug (3.7.3.204)
Problems with file loading order could result in `newrelic deployments`
failing with an unrecognized command error. This has been fixed.
## v3.7.2 ##
* Mongo instrumentation improvements
Users of the 'mongo' MongoDB client gem will get more detailed instrumentation
including support for some operations that were not previously captured, and
separation of aggregate metrics for web transactions from background jobs.
An issue with ensure_index when passed a symbol or string was also fixed.
Thanks Maxime RETY for the report!
* More accurate error tracing in Rails 4
Traced errors in Rails 4 applications will now be correctly associated with
the transaction they occurred in, and custom attributes attached to the
transaction will be correctly attached to the traced error as well.
* More accurate partial-rendering metrics for Rails 4
View partials are now correctly treated as sub-components of the containing
template render in Rails 4 applications, meaning that the app server breakdown
graphs for Rails 4 transactions should be more accurate and useful.
* Improved Unicorn 4.8.0 compatibility
A rare issue that could lead to spurious traced errors on app startup for
applications using Unicorn 4.8.0 has been fixed.
* meta_request gem compatibility
An incompatibility with the meta_request gem has been fixed.
* Typhoeus 0.6.4+ compatibility
A potential crash with Typhoeus 0.6.4+ when passing a URI object instead of a
String instance to one of Typhoeus's HTTP request methods has been fixed.
* Sequel single threaded mode fix
The agent will no longer attempt to run EXPLAIN queries for slow SQL
statements issued using the Sequel gem in single-threaded mode, since
doing so could potentially cause crashes.
* Additional functionality for add_custom_parameters
Calling add_custom_parameters adds parameters to the system codenamed
Rubicon. For more information, see http://newrelic.com/software-analytics
* Update gem signing cert (3.7.2.195)
The certificate used to sign newrelic_rpm expired in February. This patch
updates that for clients installing with verification.
## v3.7.1 ##
* MongoDB support
The Ruby agent provides support for the mongo gem, versions 1.8 and 1.9!
Mongo calls are captured for transaction traces along with their parameters,
and time spent in Mongo shows up on the Database tab.
Support for more Mongo gems and more UI goodness will be coming, so watch
http://docs.newrelic.com/docs/ruby/mongo for up-to-date status.
* Harvest thread restarts for forked and daemonized processes
Historically framework specific code was necessary for the Ruby agent to
successfully report data after an app forked or daemonized. Gems or scripts
with daemonizing modes had to wait for agent support or find workarounds.
With 3.7.1 setting `restart_thread_in_children: true` in your newrelic.yml
automatically restarts the agent in child processes without requiring custom
code. For now the feature is opt-in, but future releases may default it on.
* Fix for missing HTTP time
The agent previously did not include connection establishment time for
outgoing Net::HTTP requests. This has been corrected, and reported HTTP
timings should now be more accurate.
* Fix for Mongo ensure_index instrumentation (3.7.1.182)
The Mongo instrumentation for ensure_index in 3.7.1.180 was not properly
calling through to the uninstrumented version of this method. This has been
fixed in 3.7.1.182. Thanks to Yuki Miyauchi for the fix!
* Correct first reported metric timespan for forking dispatchers (3.7.1.188)
The first time a newly-forked process (in some configurations) reported metric
data, it would use the startup time of the parent process as the start time
for that metric data instead of its own start time. This has been fixed.
## v3.7.0 ##
* Official Rubinius support (for Rubinius >= 2.2.1)
We're happy to say that all known issues with the Ruby agent running on
Rubinius have been resolved as of Rubinius version 2.2.1! See
http://docs.newrelic.com/docs/ruby/rubinius for the most up-to-date status.
* RUM injection updates
The Ruby agent's code for both automatic and manual injection of Real User
Monitoring scripts has been improved. No application changes are required, but
the new injection logic is simpler, faster, more robust, and paves the way for
future improvements to Real User Monitoring.
* More robust communication with New Relic
Failures when transmitting data to New Relic could cause data to be held over
unnecessarily to a later harvest. This has been improved both to handle
errors more robustly and consistently, and to send data as soon as possible.
* Fix for agent not restarting on server-side config changes
A bug in 3.6.9 caused the agent to not reset correctly after server-side
config changes. New settings would not be received without a full process
restart. This has been fixed.
* Blacklisting rake spec tasks
A blacklist helps the agent avoid starting during rake tasks. Some default
RSpec tasks were missing. Thanks for the contribution Kohei Hasegawa!
## v3.6.9 ##
* Experimental Rubinius 2.x support
The agent is now being tested against the latest version of Rubinius. While
support is still considered experimental, you can track the progress at
http://docs.newrelic.com/docs/ruby/rubinius for up to date status.
* Capture arguments for Resque and Sidekiq jobs
The agent can optionally record arguments for your Resque and Sidekiq jobs on
transaction traces and traced errors. This is disabled by default, but may be
enabled by setting resque.capture_params or sidekiq.capture_params.
Thanks to Juan Ignacio Pumarino, Ken Mayer, Paul Henry, and Eric Saxby for
their help with this feature!
* Supported versions rake task and documentation
We've improved our documentation for what Ruby and gem versions we support.
Run `rake newrelic:supported_versions` or see the latest agent's versions at
https://docs.newrelic.com/docs/ruby/supported-frameworks.
* ActiveRecord 4.0 explain plans for JRuby and Rubinius
The agent's ActiveRecord 4.0 instrumentation could not gather SQL explain
plans on JRuby by default because of a dependency on ObjectSpace, which isn't
avialable by default. This has been fixed.
* Fix for Curb http_put_with_newrelic
A bug in the agent caused PUT calls in the Curb gem to crash. This has been
fixed. Thanks to Michael D'Auria and Kirk Diggler for the contributions!
* Fix for head position on RUM injection
Certain unusual HTML documents resulted in browser monitoring injecting
incorrect content. Thanks Alex McHale for the contribution!
* Specify the Content-Type header in developer mode
Thanks Jared Ning for the contribution!
## v3.6.8 ##
* X-Ray Sessions support
X-Ray Sessions provide more targeted transaction trace samples and thread
profiling for web transactions. For full details see our X-Ray sessions
documentation at https://newrelic.com/docs/site/xray-sessions.
* Percentiles and Histograms
The Ruby Agent now captures data that provides percentile and histogram views
in the New Relic UI.
* CPU metrics re-enabled for JRuby >= 1.7.0
To work around a JRuby bug, the Ruby agent stopped gathering CPU metrics on
that platform. With the bug fixed, the agent can gather those metrics again.
Thanks Bram de Vries for the contribution!
* Missing Resque transaction traces (3.6.8.168)
A bug in 3.6.8.164 prevented transaction traces in Resque jobs from being
communicated back to New Relic. 3.6.8.168 fixes this.
* Retry on initial connect (3.6.8.168)
Failure to contact New Relic on agent start-up would not properly retry. This
has been fixed.
* Fix potential memory leak on failure to send to New Relic (3.6.8.168)
3.6.8.164 introduced a potential memory leak when transmission of some kinds
of data to New Relic servers failed. 3.6.8.168 fixes this.
## v3.6.7 ##
* Resque-pool support
Resque processes started via the resque-pool gem weren't recognized by the
Ruby agent. The agent now starts correctly in those worker processes.
* Environment-based configuration
All settings in newrelic.yml can now be configured via environment variables.
See https://newrelic.com/docs/ruby/ruby-agent-configuration for full details.
* Additional locking option for Resque (3.6.7.159)
There have been reports of worker process deadlocks in Resque when using the
Ruby agent. An optional lock is now available to avoid those deadlocks. See
https://newrelic.com/docs/ruby/resque-instrumentation for more details.
* HTTP connection setup timeout (3.6.7.159)
HTTP initialization in the agent lacked an appropriate timeout,
leading to dropouts in reporting under certain network error conditions.
* Unnecessary requests from Resque jobs (3.6.7.159)
An issue causing Resque jobs to unnecessarily make requests against New Relic
servers was fixed.
* Fix compatibility issues with excon and curb instrumentation
This release of the agent fixes a warning seen under certain circumstances
with the excon gem (most notably, when excon was used by fog), as well as
a bug with the curb instrumentation that conflicted with the feedzirra gem.
* Allow license key to be set by Capistrano variables
A license key can be passed via a Capistrano variable where previously it
could only be in newrelic.yml. Thanks Chris Marshall for the contribution!
* Make HTTP client instrumentation aware of "Host" request header
If a "Host" header is set explicitly on an HTTP request, that hostname will
be used for external metrics. Thanks Mislav Marohnić for the contribution!
* Fix ActiveSupport::Concern warnings with MethodTracer
Including NewRelic::Agent::MethodTracer in a class using Concerns could cause
deprecation warnings. Thanks Mike Połtyn for the contribution!
* Fix Authlogic constant name
Code checking for the Authlogic module was using in the wrong case. Thanks
Dharam Gollapudi for the contribution!
## v3.6.6 ##
* HTTPClient and Curb support
The Ruby agent now supports the HTTPClient and Curb HTTP libraries! Cross
application tracing and more is fully supported for these libraries. For more
details see https://newrelic.com/docs/ruby/ruby-http-clients.
* Sinatra startup improvements
In earlier agent versions, newrelic_rpm had to be required after Sinatra to
get instrumentation. Now the agent should start when your Sinatra app starts
up in rackup, thin, unicorn, or similar web servers.
* Puma clustered mode support
Clustered mode in Puma was not reporting data without manually adding a hook
to Puma's configuration. The agent will now automatically add this hook.
* SSL certificate verification
Early versions of the agent's SSL support provided an option to skip
certificate verification. This option has been removed.
## v3.6.5 ##
* Rails 4.0 Support
The Ruby agent is all set for the recent general release of Rails 4.0! We've
been tracking the RC's, and that work paid off. Versions 3.6.5 and 3.6.4 of
the Ruby agent should work fine with Rails 4.0.0.
* Excon and Typhoeus support
The Ruby agent now supports the Excon and Typhoeus HTTP libraries! For more
details see https://newrelic.com/docs/ruby/ruby-http-clients.
## v3.6.4 ##
* Exception Whitelist
We've improved exception message handling for applications running in
high security mode. Enabling 'high_security' now removes exception messages
entirely rather than simply obfuscating any SQL.
By default this feature affects all exceptions, though you can configure a
whitelist of exceptions whose messages should be left intact.
More details: https://newrelic.com/docs/ruby/ruby-agent-configuration
* Fix a race condition affecting some Rails applications at startup
Some Rails applications using newrelic_rpm were affected by a race condition
at startup that manifested as an error when model classes with associations
were first loaded. The cause of these errors has been addressed by moving the
generation of the agent's EnvironmentReport on startup from a background
thread to the main thread.
## v3.6.3 ##
* Better Sinatra Support
A number of improvements have been made to our Sinatra instrumentation.
More details: https://newrelic.com/docs/ruby/sinatra-support-in-the-ruby-agent
Sinatra instrumentation has been updated to more accurately reflect the final
route that was actually executed, taking pass and conditions into account.
New Relic middlewares for error collection, real user monitoring, and cross
application tracing are automatically inserted into the middleware stack.
Ignoring routes, similar to functionality available to Rails controllers, is
now available in Sinatra as well.
Routes in 1.4 are properly formatting in transaction names. Thanks Zachary
Anker for the contribution!
* Padrino Support
Along with improving our support of Sinatra, we've also extended that to
supporting Padrino, a framework that builds on Sinatra. Web transactions
should show up in New Relic now for Padrino apps automatically. The agent has
been tested against the latest Padrino in versions 0.11.x and 0.10.x.
* Main overview graph only shows web transactions
In the past database times from background jobs mixed with other web transaction
metrics in the main overview graph. This often skewed graphs. A common workaround
was to send background jobs to a separate application, but that should no longer
be necessary as the overview graphs now only represent web transactions.
## v3.6.2 ##
* Sequel support
The Ruby agent now supports Sequel, a database toolkit for Ruby. This
includes capturing SQL calls and model operations in transaction traces, and
recording slow SQL calls. See https://newrelic.com/docs/ruby/sequel-instrumentation
for full details.
* Thread profiling fix
The prior release of the agent (version 3.6.1) broke thread profiling. A
profile would appear to run, but return no data. This has been fixed.
* Fix for over-counted Net::HTTP calls
Under some circumstances, calls into Net::HTTP were being counted twice in
metrics and transaction traces. This has been fixed.
* Missing traced errors for Resque applications
Traced errors weren't displaying for some Resque workers, although the errors
were factored into the overall count graphs. This has been fixed, and traced
errors should be available again after upgrading the agent.
## v3.6.1 ##
* Full URIs for HTTP requests are recorded in transaction traces
When recording a transaction trace node for an outgoing HTTP call via
Net::HTTP, the agent will now save the full URI (instead of just the hostname)
for the request. Embedded credentials, the query string, and the fragment will
be stripped from the URI before it is saved.
* Simplify Agent Autostart Logic
Previously the agent would only start when it detected a supported
"Dispatcher", meaning a known web server or background task framework. This
was problematic for customers using webservers that the agent was not
configured to detect (e.g. Puma). Now the agent will attempt to report any
time it detects it is running in a monitored environment (e.g. production).
There are two exceptions to this. The agent will not autostart in a rails
console or irb session or when the process was invoked by a rake task (e.g.
rake assets:precompile). The NEWRELIC_ENABLE environment variable can be set
to true or false to force the agent to start or not start.
* Don't attempt to resolve collector hostname when proxy is in use
When a proxy is configured, the agent will not attempt to lookup and cache the
IP address of New Relic server to which it is sending data, since DNS may not
be available in some environments. Thanks to Bill Kirtley for the contribution
* Added NewRelic::Agent.set_transaction_name and NewRelic::Agent.get_transaction_name
Ordinarily the name of your transaction is defined up-front, but if you'd like to
change the name of a transaction while it is still running you can use
**NewRelic::Agent.set_transaction_name()**. Similarly, if you need to know the name
of the currently running transaction, you can use **NewRelic::Agent.get_transaction_name()**.
## v3.6.0 ##
* Sidekiq support
The Ruby agent now supports the Sidekiq background job framework. Traces from
Sidekiq jobs will automatically show up in the Background tasks on New Relic
similar to Resque and Delayed::Job tasks.
* Improved thread safety
The primary metrics data structures in the Ruby agent are now thread safe.
This should provide better reliability for the agent under JRuby and threaded
scenarios such as Sidekiq or Puma.
* More robust environment report
The agent's analysis of the local environment (e.g. OS, Processors, loaded
gems) will now work in a wider variety of app environments, including
Sinatra.
* Experimental Rainbows! support
The Ruby agent now automatically detects and instruments the Rainbows! web
server. This support is considered experimental at present, and has not been
tested with all dispatch modes.
Thanks to Joseph Chen for the contribution.
* Fix a potential file descriptor leak in Resque instrumentation
A file descriptor leak that occurred when DontPerform exceptions were used to
abort processing of a job has been fixed. This should allow the Resque
instrumentation work correctly with the resque-lonely_job gem.
## v3.5.8 ##
* Key Transactions
The Ruby agent now supports Key Transactions! Check out more details on the
feature at https://newrelic.com/docs/site/key-transactions
* Ruby 2.0
The Ruby agent is compatible with Ruby 2.0.0 which was just released.
* Improved Sinatra instrumentation
Several cases around the use of conditions and pass in Sinatra are now
better supported by the Ruby agent. Thanks Konstantin for the help!
* Outbound HTTP headers
Adds a 'X-NewRelic-ID' header to outbound Net::HTTP requests. This change
helps improve the correlation of performance between services in a service-
oriented architecture for a forthcoming feature. In the meantime, to disable
the header, set this in your newrelic.yml:
cross_application_tracer:
enabled: false
* Automatically detect Resque dispatcher
The agent does better auto-detection for the Resque worker process.
This should reduce the need to set NEW_RELIC_DISPATCHER=resque directly.
## v3.5.7 ##
* Resolved some issues with tracking of frontend queue time, particularly
when the agent is running on an app hosted on Heroku. The agent will now
more reliably parse the headers described in
https://newrelic.com/docs/features/tracking-front-end-time and will
automatically detect whether the times provided are in seconds,
milliseconds or microseconds.
## v3.5.6 ##
* Use HTTPS by default
The agent now defaults to using SSL when it communicates with New Relic's
servers. By default is already configured New Relic does not transmit any
sensitive information (e.g. SQL parameters are masked), but SSL adds an
additional layer of security. Upgrading customers may need to remove the
"ssl: false" directive from their newrelic.yml to enable ssl. Customers on
Jruby may need to install the jruby-openssl gem to take advantage of this
feature.
* Fix two Resque-related issues
Fixes a possible hang on exit of an instrumented Resque master process
(https://github.com/defunkt/resque/issues/578), as well as a file descriptor
leak that could occur during startup of the Resque master process.
* Fix for error graph over 100%
Some errors were double counted toward the overall error total. This
resulted in graphs with error percentages over 100%. This duplication did
not impact the specific error traces captured, only the total metric.
* Notice gracefully handled errors in Sinatra
When show_exceptions was set to false in Sinatra, errors weren't caught
by New Relic's error collector. Now handled errors also have the chance
to get reported back.
* Ruby 2.0 compatibility fixes
Ruby 2.0 no longer finds protected methods by default, but will with a flag.
http://tenderlovemaking.com/2012/09/07/protected-methods-and-ruby-2-0.html
Thanks Ravil Bayramgalin and Charlie Somerville for the fixes.
* Auto-detect Trinidad as dispatcher
Code already existing for detecting Trinidad as a dispatcher, but was only
accessible via an ENV variable. This now auto-detects on startup. Thanks
Robert Rasmussen for catching that.
* Coercion of types in collector communication
Certain metrics can be recorded with a Ruby Rational type, which JSON
serializes as a string rather than a floating point value. We now treat
coerce each outgoing value, and log issues before sending the data.
* Developer mode fix for chart error
Added require to fix a NameError in developer mode for summary page. Thanks
to Ryan B. Harvey.
* Don't touch deprecated RAILS_ROOT if on Rails 3
Under some odd startup conditions, we would look for the RAILS_ROOT constant
after failing to find the ::Rails.root in a Rails 3 app, causing deprecation
warnings. Thanks for Adrian Irving-Beer for the fix.
## v3.5.5 ##
* Add thread profiling support
Thread profiling performs statistical sampling of backtraces of all threads
within your Ruby processes. This feature requires MRI >= 1.9.2, and is
controlled via the New Relic web UI. JRuby support (in 1.9.x compat mode) is
considered experimental, due to issues with JRuby's Thread#backtrace.
* Add audit logging capability
The agent can now log all of the data it sends to the New Relic servers to
a special log file for human inspection. This feature is off by default, and
can be enabled by setting the audit_log.enabled configuration key to true.
You may also control the location of the audit log with the audit_log.path key.
* Use config system for dispatcher, framework, and config file detection
Several aspects of the agent's configuration were not being handled by the
configuration system. Detection/configuration of the dispatcher (e.g. passenger,
unicorn, resque), framework (e.g. rails3, sinatra), and newrelic.yml
location are now handled via the Agent environment, manual, and default
configuration sources.
* Updates to logging across the agent
We've carefully reviewed the logging messages that the agent outputs, adding
details in some cases, and removing unnecessary clutter. We've also altered
the startup sequence to ensure that we don't spam STDOUT with messages
during initialization.
* Fix passing environment to manual_start()
Thanks to Justin Hannus. The :env key, when passed to Agent.manual_start,
can again be used to specify which section of newrelic.yml is loaded.
* Rails 4 support
This release includes preliminary support for Rails 4 as of 4.0.0.beta.
Rails 4 is still in development, but the agent should work as expected for
people who are experimenting with the beta.
## v3.5.4 ##
* Add queue time support for sinatra apps
Sinatra applications can now take advantage of front end queue time
reporting. Thanks to Winfield Peterson for this contribution.
* Simplify queue time configuration for nginx 1.2.6+
Beginning in version 1.2.6, recently released as a development version, the
$msec variable can be used to set an http header. This change allows front
end queue time to be tracked in New Relic simply by adding this line to the
nginx config:
proxy_set_header X-Queue-Start "t=${msec}000"
It will no longer be necessary to compile a patched version of nginx or
compile in the perl or lua module to enable this functionality.
Thanks to Lawrence Pit for the contribution.
* Report back build number and stage along with version info
In the 3.5.3 series the agent would fail to report its full version number
to NewRelic's environment report. For example it would report its version
as 3.5.3 instead of 3.5.3.25 or 3.5.3.25.beta. The agent will now report
its complete version number as defined in newrelic_rpm.gemspec.
* The host and the port that the agent reports to can now be set from environment vars
The host can be set with NEW_RELIC_HOST and the port with NEW_RELIC_PORT. These setting
will override any other settings in your newrelic.yml.
* Fix RUM reporting to multiple applications
When the agent is configured to report to multiple "roll up" applications
RUM did not work correctly.
## v3.5.3 ##
* Update the collector protocol to use JSON and Ruby primitives
The communication between the agent and the NewRelic will not longer be
marshaled Ruby objects, but rather JSON in the case of Ruby 1.9 and marshaled
Ruby primitives in the case of 1.8. This results in greater harvest efficiency
as well as feature parity with other New Relic agents.
* Fix incorrect application of conditions in sinatra instrumentation
The agent's sinatra instrumentation was causing sinatra's conditions to
be incorrectly applied in some obscure cases. The bug was triggered
when a condition was present on a lower priority route that would match
the current request, except for the presence of a higher priority route.
## v3.5.2 ##
* Simplified process of running agent test suite and documented code
contribution process in GUIDELINES_FOR_CONTRIBUTING.
## v3.5.1 ##
* Enabling Memory Profiling on Lion and Mountain Lion
The agent's list of supported platforms for memory profiling wasn't correctly checking
for more recent versions of OS X.
* Fixed an arity issue encountered when calling newrelic_notice_error from Rails applications.
* End user queue time was not being properly reported, works properly now.
* Server-side configuration for ignoring errors was not being heeded by agent.
* Better handling of a thread safety issue.
Some issues may remain, which we are working to address, but they should be gracefully handled
now, rather than crashing the running app.
* Use "java_import" rather than "include_class" when require Java Jars into a JRuby app.
Thanks to Jan Habermann for the pull request
* Replaced alias_method mechanism with super call in DataMapper instrumentation.
Thanks to Michael Rykov for the pull request
* Fixed the Rubinius GC profiler.
Thanks to Dirkjan Bussink
* Use ActiveSupport.on_load to load controller instrumentation Rails 3.
Thanks to Jonathan del Strother
* Reduce the number of thread local reference in a particular high traffic method
Thanks to Jeremy Kemper
## v3.5.0.1 ##
* (Fix) Due to a serious resource leak we have ended support for versions of Phusion Passenger
older than 2.1.1. Users of older versions are encouraged upgrade to a more recent version.
## v3.5.0 ##
* (Fix) RUM Stops Working After 3.4.2.1 Agent Upgrade
v3.4.2.1 introduced a bug that caused the browser monitor auto instrumentation
(for RUM) default to be false. The correct value of true is now used
* When the Ruby Agent detects Unicorn as the dispatcher it creates an INFO level log message
with additional information
To help customers using Unicorn, if the agent detects it (Unicorn) is being used as the
dispatcher an INFO level log message it created that includes a link to New Relic
online doc that has additional steps that may be required to get performance data reporting.
* (Fix) In version 3.4.2 of the Ruby Agent the server side value for Apdex T was disregarded
With version 3.4.2 of the agent, the value set in the newrelic.yml file took precedence over the
value set in the New Relic UI. As of version 3.5.0 only the value for Apdex T set in the
New Relic UI will be used. Any setting in the yaml file will be ignored.
* Improved Error Detection/Reporting capabilities for Rails 3 apps
Some errors are missed by the agent's exception reporting handlers because they are
generated in the rails stack, outside of the instrumented controller action. A Rack
middleware is now included that can detect these errors as they bubble out of the middleware stack.
Note that this does not include Routing Errors.
* The Ruby Agent now logs certain information it receives from the New Relic servers
After connecting to the New Relic servers the agent logs the New Relic URL
of the app it is reporting to.
* GC profiling overhead for Ruby 1.9 reduced
For Ruby 1.9 the amount of time spent in GC profiling has been reduced.
* Know issue with Ruby 1.8.7-p334, sqlite3-ruby 1.3.0 or older, and resque 1.23.0
The Ruby Agent will not work in conjunction with Ruby 1.8.7-p334, sqlite3-ruby 1.3.3
or earlier, and resque 1.23.0. Your app will likely stop functioning. This is a known problem
with Ruby versions up to 1.8.7-p334. Upgrading to the last release of Ruby 1.8.7
is recommended. This issue has been present in every version of the agent we've tested
going back for a year.
### previous versions ###
## v3.4.2.1 ##
* Fix issue when app_name is nil
If the app_name setting ends up being nil an exception got generated and the application
wouldn't run. This would notably occur when running a Heroku app locally without the
NEW_RELIC_APP_NAME environment variable set. A nil app_name is now detected and an
error logged specifying remediation.
## v3.4.2 ##
* The RUM NRAGENT tk value gets more robustly sanitized to prevent potential XSS vulnerabilities
The code that scrubs the token used in Real User Monitoring has been enhanced to be
more robust.
* Support for Apdex T in server side configuration
For those using server side configuration the Ruby Agent now supports setting
the Apdex T value via the New Relic UI.
* Refactoring of agent config code
The code that reads the configuration information and configures the agent
got substantially reorganized, consolidated, simplified, and made more robust.
## v3.4.1 ##
#### Bug Fixes ####
* Fix edge case in RUM auto instrumentation where X-UA-Compatible meta tag is
present but </head> tag is missing.
There is a somewhat obscure edge case where RUM auto instrumentation will
crash a request. The issue seems to be triggered when the X-UA-Compatible
meta tag is present and the </head> tag is missing.
* Fixed reference to @service.request_timeout to @request_timeout in
new_relic_service.rb. (Thanks to Matthew Savage)
When a timeout occurred during connection to the collector an "undefined
method `request_timeout' for nil:NilClass'" would get raised.
* preserve visibility on traced methods.
Aliased methods now have the same visibility as the original traced method.
A couple of the esoteric methods created in the process weren't getting the
visibility set properly.
* Agent service does not connect to directed shard collector after connecting
to proxy
After connecting to collector proxy name of real collector was updated, but
ip address was not being updated causing connections to go to the proxy.
Agent now looks up ip address for real collector.
* corrupt marshal data from pipe children crashing agent
If the agent received corrupted data from the Reqsue worker child agent
it could crash the agent itself. fixed.
* should reset RubyBench GC counter between polls
On Ruby REE, the GC profiler does not reset the counter between polls. This
is only a problem if GC could happen *between* transactions, as in, for
example, out-of-band GC in Unicorn. fixed.
v3.4.0.1
* Prevent the agent from resolving the collector address when disabled.
* Fix for error collector configuration that was introduced during beta.
* Preserve method visibility when methods are traced with #add_method_tracer and #add_transaction_tracer
v3.4.0
* Major refactor of data transmission mechanism. This enabled child processes to send data to parent processes, which then send the data to the New Relic service. This should only affect Resque users, dramatically improving their experience.
* Moved Resque instrumentation from rpm_contrib to main agent. Resque users should discontinue use of rpm_contrib or upgrade to 2.1.11.
* Resolve issue with configuring the Error Collector when using server-side configuration.
v3.3.5
* [FIX] Allow tracing of methods ending in ! and ?
* [PERF] Give up after scanning first 50k of the response in RUM
auto-instrumentation.
* [FIX] Don't raise when extracting metrics from SQL queries with non UTF-8 bytes.
* Replaced "Custom/DJ Locked Jobs" metric with new metrics for
monitoring DelayedJob: queue_length, failed_jobs, and locked_jobs, all under
Workers/DelayedJob. queue_length is also broken out by queue name or priority
depending on the version of DelayedJob deployed.
v3.3.4.1
* Bug fix when rendering empty collection in Rails 3.1+
v3.3.4
* Rails 3 view instrumentation
v3.3.3
* Improved Sinatra instrumentation
* Limit the number of nodes collected in long running transactions to prevent leaking memory
v3.3.2.1
* [SECURITY] fix for cookie handling by End User Monitoring instrumentation
v3.3.2
* deployments recipe change: truncate git SHAs to 7 characters
* Fixes for obfuscation of PostgreSQL and SQLite queries
* Fix for lost database connections when using a forking framework
* Workaround for RedHat kernel bug which prevented blocking reads of /proc fs
* Do not trap signals when handling exceptions
v3.3.1
* improved Ruby 1.8.6 support
* fix for issues with RAILS_ROOT deprecation warnings
* fixed incorrect 1.9 GC time reporting
* obfuscation for Slow SQL queries respects transaction trace config
* fix for RUM instrumentation repoting bad timing info in some cases
* refactored ActiveRecord instrumentation, no longer requires Rails
v3.3.0
* fix for GC instrumentation when using Ruby 1.9
* new feature to correlate browser and server transaction traces
* new feature to trace slow sql statements
* fix to help cope with malformed rack responses
* do not try to instrument versions of ActiveMerchant that are too old
v3.2.0.1
* Updated LICENSE
* Updated links to support docs
v3.2.0
* Fix over-detection of mongrel and unicorn and only start the agent when
actual server is running
* Improve developer mode backtraces to support ruby 1.9.2, windows
* Fixed some cases where Memcache instrumentation was failing to load