Published on 2024-08-23.
- Do not log a warning for
nil
data being added as sample data, but silently ignore it because we don't support it. (patch 0a658e5e) - Fix Rails session data not being reported. (patch 1565c7f0)
Published on 2024-08-23.
- Do not report
Sidekiq::JobRetry::Skip
errors. These errors would be reported by our Rails error subscriber. This is an internal Sidekiq error we do not need to report. (patch 9ea2d3e8) - Do not report
SystemExit
errors from ourat_exit
error reporter. (patch e9c0cad3)
Published on 2024-08-23.
- Release the final package version. See the pre-release changelog entries for the changes in this version. (major)
- Remove the
Transaction.new
method Transaction ID argument. The Transaction ID will always be automatically generated. (major bb938a9f)
Published on 2024-08-19.
- Add a helper for parameters sample data to be unset. This is a private method until we stabilize it. (patch e9336363)
Published on 2024-08-19.
-
Add an
at_exit
callback error reporter. By default, AppSignal will now report any unhandled errors that crash the process as long as Appsignal started beforehand.require "appsignal" Appsignal.start raise "oh no!" # Will report the error StandardError "oh no!"
To disable this behavior, set the
enable_at_exit_reporter
config option tofalse
.(major 5124b0e9)
-
Report errors from Rails runners. When a Rails runner reports an unhandled error, it will now report the error in the "runner" namespace. (minor 4d6add1d)
-
Support adding multiple errors to a transaction.
Using the
Appsignal.report_error
helper, you can now report more than one error within the same transaction context, up to a maximum of ten errors per transaction. Each error will be reported as a separate sample in the AppSignal UI.Before this change, using
Appsignal.report_error
orAppsignal.set_error
helpers, adding a new error within the same transaction would overwrite the previous one.(patch 70ffc00a)
-
Change the default Rake task namespace to "rake". Previously, Rake tasks were reported in the "background" namespace. (major 7673b13c)
-
Do not start AppSignal when the config file raises an error. Previously, the file source would be ignored. (major 17933fd9)
-
Freeze the config after AppSignal has started. Prevent the config from being modified after AppSignal has started to avoid the expectation that modifying the config after starting AppSignal has any effect. (major 46f23f15)
-
Do not start Appsignal multiple times if
Appsignal.start
is called more than once. The configuration can no longer be modified after AppSignal has started. (major fbc2410a) -
The transaction sample data is now merged by default. Previously, the sample data (except for tags) would be overwritten when a sample data helper was called.
# Old behavior Appsignal.set_params("param1" => "value") Appsignal.set_params("param2" => "value") # The parameters are: # { "param2" => "value" } # New behavior Appsignal.add_params("param1" => "value") Appsignal.add_params("param2" => "value") # The parameters are: # { "param1" => "value", "param2" => "value" }
New helpers have been added:
Appsignal.add_tags
Appsignal.add_params
Appsignal.add_session_data
Appsignal.add_headers
Appsignal.add_custom_data
The old named helpers that start with
set_
will still work. They will also use the new merging behavior.(major 272f18cb)
-
Set the Rails config defaults for
Appsignal.configure
when used in a Rails initializer. Now when usingAppsignal.configure
in a Rails initializer, the Rails env and root path are set on the AppSignal config as default values and do not need to be manually set. (major 378bbc3e) -
Global transaction metadata helpers now work inside the
Appsignal.report_error
andAppsignal.send_error
callbacks. The transaction yield parameter will continue to work, but we recommend using the globalAppsignal.set_*
andAppsignal.add_*
helpers.# Before Appsignal.report_error(error) do |transaction| transaction.set_namespace("my namespace") transaction.set_action("my action") transaction.add_tags(:tag_a => "value", :tag_b => "value") # etc. end Appsignal.send_error(error) do |transaction| transaction.set_namespace("my namespace") transaction.set_action("my action") transaction.add_tags(:tag_a => "value", :tag_b => "value") # etc. end # After Appsignal.report_error(error) do Appsignal.set_namespace("my namespace") Appsignal.set_action("my action") Appsignal.add_tags(:tag_a => "value", :tag_b => "value") # etc. end Appsignal.send_error(error) do Appsignal.set_namespace("my namespace") Appsignal.set_action("my action") Appsignal.add_tags(:tag_a => "value", :tag_b => "value") # etc. end
(major 7ca6ce21)
-
Include the Rails app config in diagnose report. If AppSignal is configured in a Rails initializer, this config is now included in the diagnose report. (minor 5439d5cb)
-
Include the config options from the loaders config defaults and the
Appsignal.configure
helper in diagnose report. The sources for config option values will include the loaders andAppsignal.configure
helper in the output and the JSON report sent to our severs, when opted-in. (patch a7b34110) -
Calculate error rate by transactions with an error, not the number of errors on a transaction. This limits the error rate to a maximum of 100%. (patch da4975cd)
- Remove all deprecated components. Please follow our Ruby gem 4 upgrade guide when upgrading to this version to avoid any errors from calling removed components, methods and helpers. (major f65bee8d)
- Remove the
Appsignal.listen_for_error
helper. Use manual exception handling usingrescue => error
with theAppsignal.report_error
helper instead. (major 7c232925) - Remove (private)
Appsignal::Transaction::FRONTEND
constant. This was previously used for the built-in front-end integration, but this has been absent since version 3 of the Ruby gem. (major c12188e7) - Remove the
Appsignal.config=
writer. Use theAppsignal.configure
helper to configure AppSignal. (major f4fdf91b)
- Fix an issue where, when setting several errors for the same transaction, error causes from a different error would be shown for an error that has no causes. (patch d54ce8b9)
Published on 2024-08-23.
- Release the final package version. See the pre-release changelog entries for the changes in this version. (patch)
Published on 2024-08-22.
- Ignore
Errno::EPIPE
errors when instrumenting response bodies. We've noticed this error gets reported when the connection is broken between server and client. This happens in normal scenarios so we'll ignore this error in this scenario to avoid error reports from errors that cannot be resolved. (patch 8ad8a057)
Published on 2024-08-14.
-
Remove the HTTP gem's exception handling. Errors from the HTTP gem will no longer always be reported. The error will be reported only when an HTTP request is made in an instrumented context. This gives applications the opportunity to add their own custom exception handling.
begin HTTP.get("https://appsignal.com/error") rescue => error # Either handle the error or report it to AppSignal end
(minor 2a452ff0)
-
Rename heartbeats to cron check-ins. Calls to
Appsignal.heartbeat
andAppsignal::Heartbeat
should be replaced with calls toAppsignal::CheckIn.cron
andAppsignal::CheckIn::Cron
, for example:# Before Appsignal.heartbeat("do_something") do do_something end # After Appsignal::CheckIn.cron("do_something") do do_something end
(patch 2f686cd0)
- Calls to
Appsignal.heartbeat
andAppsignal::Heartbeat
will emit a deprecation warning. (patch 2f686cd0)
Published on 2024-08-05.
- Configure AppSignal with the install CLI when no known frameworks is found. Automate the configure step so that this doesn't have to be done manually along with the manual setup for the app. (patch a9c546fa)
-
Deprecate the
Appsignal.listen_for_error
helper. Use a manual error rescue withAppsignal.report_error
. This method allows for more customization of the reported error.# Before Appsignal.listen_for_error do raise "some error" end # After begin raise "some error" rescue => error Appsignal.report_error(error) end
Read our Exception handling guide for more information.
(patch 14bd8882)
-
Deprecate the
Appsignal.configure
'sapp_path
writer. Use theAppsignal.configure
'sroot_path
keyword argument to configure the path. (patch c79f46c3)
- Fix an error on the Padrino require in the installer CLI. The latest Padrino version will crash the installer on load. Ignore the error when it fails to load. (patch dfe23707)
- Fix the
Appsignal.configure
path config not being customizable. It's now possible to pass aroot_path
keyword argument toAppsignal.configure
to customize the path from which AppSignal reads the config file,config/appsignal.yml
. (patch c79f46c3)
Published on 2024-08-01.
-
Improve sanitization of INSERT INTO ... VALUES with multiple groups by removing additional repeated groups.
This makes the query easier to read, and mitigates an issue where processing many events with slightly distinct queries would cause some event details to de discarded.
(patch 45a20433)
- Fix issue sanitizing SQL queries containing TRUE and FALSE values in an INSERT INTO ... VALUES clause. (patch 45a20433)
Published on 2024-08-01.
- Fix an issue where, depending on the relative order of the
appsignal
andview_component
dependencies in the Gemfile, the ViewComponent instrumentation would not load. (patch 0f37fa30)
Published on 2024-07-30.
- Fix the application environment being reported as "[]" when no valid environment could be found. (patch cf081253)
- Fix
Appsignal.configure
call withoutenv
argument not reusing the previously configured configuration. (patch 65d5428c)
Published on 2024-07-25.
- Fix the default env and root path for the integrations using loader mechanism. If
APPSIGNAL_APP_ENV
is set when usingAppsignal.load(...)
, the AppSignal env set inAPPSIGNAL_APP_ENV
is now leading again. (patch b2d1c7ee)
Published on 2024-07-25.
- Fix
Appsignal.monitor_and_stop
block passing. It would error with aLocalJumpError
. Thanks to @cwaider. (patch 150569ff)
Published on 2024-07-22.
-
Add a Rails configuration option to start AppSignal after Rails is initialized. By default, AppSignal will start before the Rails initializers are run. This way it is not possible to configure AppSignal in a Rails initializer using Ruby. To configure AppSignal in a Rails initializer, configure Rails to start AppSignal after it is initialized.
# config/application.rb # ... module MyApp class Application < Rails::Application # Add this line config.appsignal.start_at = :after_initialize # Other config end end
Then, in the initializer:
# config/initializers/appsignal.rb Appsignal.configure do |config| config.ignore_actions = ["My action"] end
Be aware that when
start_at
is set toafter_initialize
, AppSignal will not track any errors that occur when the initializers are run and the app fails to start.See our Rails documentation for more information.
(minor b84a6a36)
-
Add a new method of configuring AppSignal:
Appsignal.configure
. This new method allows apps to configure AppSignal in Ruby.# The environment will be auto detected Appsignal.configure do |config| config.activejob_report_errors = "discard" config.sidekiq_report_errors = :discard config.ignore_actions = ["My ignored action", "My other ignored action"] config.request_headers << "MY_HTTP_HEADER" config.send_params = true config.enable_host_metrics = false end # Explicitly define which environment to start Appsignal.configure(:production) do |config| # Some config end
This new method can be used to update config in Ruby. We still recommend to use the
config/appsignal.yml
file to configure AppSignal whenever possible. Apps that use theAppsignal.config = Appsignal::Config.new(...)
way of configuring AppSignal, should be updated to use the newAppsignal.configure
method. TheAppsignal::Config.new
method would overwrite the given "initial config" with the config file's config and config read from environment variables. TheAppsignal.configure
method is leading. The config file, environment variables andAppsignal.configure
methods can all be mixed.See our configuration guide for more information.
(minor ba60fff9)
-
Update the Sinatra, Padrino, Grape and Hanami integration setup for applications. Before this change a "appsignal/integrations/sinatra" file would need to be required to load the AppSignal integration for Sinatra. Similar requires exist for other libraries. This has changed to a new integration load mechanism.
This new load mechanism makes starting AppSignal more predictable when loading multiple integrations, like those for Sinatra, Padrino, Grape and Hanami.
# Sinatra example # Before require "appsignal/integrations/sinatra" # After require "appsignal" Appsignal.load(:sinatra) Appsignal.start
The
require "appsignal/integrations/sinatra"
will still work, but is deprecated in this release.See the documentation for the specific libraries for the latest on how to integrate AppSignal.
When using a combination of the libraries listed above, read our integration guide on how to load and configure AppSignal for multiple integrations at once.
(minor 35fff8cb)
-
Disable the AppSignal Rack EventHandler when AppSignal is not active. It would still trigger our instrumentation when AppSignal is not active. This reduces the instrumentation overhead when AppSignal is not active. (patch 03e7c1b2)
- Deprecate the
Appsignal.config = Appsignal::Config.new(...)
method of configuring AppSignal. See the changelog entry aboutAppsignal.configure { ... }
for the new way to configure AppSignal in Ruby. (minor ba60fff9) - Deprecate the Hanami integration require:
require "appsignal/integrations/hanami"
. Use the newAppsignal.load(:hanami)
method instead. Read our Hanami docs for more information. (patch) - Deprecate the Padrino integration require:
require "appsignal/integrations/padrino"
. Use the newAppsignal.load(:padrino)
method instead. Read our Padrino docs for more information. (patch) - Deprecate the Sinatra integration require:
require "appsignal/integrations/sinatra"
. Use the newAppsignal.load(:sinatra)
method instead. Read our Sinatra docs for more information. (patch) - Deprecate the Grape integration require:
require "appsignal/integrations/grape"
. Use the newAppsignal.load(:grape)
method instead. Read our Grape docs for more information. (patch)
- Fix instrumentation events for response bodies appearing twice. When multiple instrumentation middleware were mounted in an application, it would create duplicate
process_response_body.rack
events. (patch 24b16517)
Published on 2024-07-15.
-
Add
Appsignal.monitor
andAppsignal.monitor_and_stop
instrumentation helpers. These helpers are a replacement for theAppsignal.monitor_transaction
andAppsignal.monitor_single_transaction
helpers.Use these new helpers to create an AppSignal transaction and track any exceptions that occur within the instrumented block. This new helper supports custom namespaces and has a simpler way to set an action name. Use this helper in combination with our other
Appsignal.set_*
helpers to add more metadata to the transaction.# New helper Appsignal.monitor( :namespace => "my_namespace", :action => "MyClass#my_method" ) do # Track an instrumentation event Appsignal.instrument("my_event.my_group") do # Some code end end # Old helper Appsignal.monitor_transaction( "process_action.my_group", :class_name => "MyClass", :action_name => "my_method" ) do # Some code end
The
Appsignal.monitor_and_stop
helper can be used in the same scenarios as theAppsignal.monitor_single_transaction
helper is used. One-off Ruby scripts that are not part of a long running process.Read our instrumentation documentation for more information about using the
Appsignal.monitor
helper.(minor f38f0cff)
-
Add
Appsignal.set_session_data
helper. Set custom session data on the current transaction with theAppsignal.set_session_data
helper. Note that this will overwrite any request session data that would be set automatically on the transaction. When this method is called multiple times, it will overwrite the previously set value.Appsignal.set_session_data("data1" => "value1", "data2" => "value2")
(patch 48c76635)
-
Add
Appsignal.set_headers
helper. Set custom request headers on the current transaction with theAppsignal.set_headers
helper. Note that this will overwrite any request headers that would be set automatically on the transaction. When this method is called multiple times, it will overwrite the previously set value.Appsignal.set_headers("PATH_INFO" => "/some-path", "HTTP_USER_AGENT" => "Firefox")
(patch 7d82dffd)
-
Report request headers for webmachine apps. (patch fcfb7a0d)
-
Allow tags to have boolean (true/false) values.
Appsignal.set_tags("my_tag_is_amazing" => true) Appsignal.set_tags("my_tag_is_false" => false)
(patch 1b8e86cb)
-
Optimize Sidekiq job arguments being recorded. Job arguments are only fetched and set when we sample the job transaction, which should decrease our overhead for all jobs we don't sample. (patch 3f957301)
-
Deprecate Transaction sample helpers:
Transaction#set_sample_data
andTransaction#sample_data
. Please use one of the other sample data helpers instead. See our sample data guide. (patch 2d2e0e43) -
Deprecate the
Appsignal::Transaction#set_http_or_background_queue_start
method. Use theAppsignal::Transaction#set_queue_start
helper instead. (patch d93e0370) -
Deprecate the
Appsignal.without_instrumentation
helper. Use theAppsignal.ignore_instrumentation_events
helper instead. (patch 7cc3c0e4) -
Deprecate the
Appsignal::Transaction::GenericRequest
class. Use theAppsignal.set_*
helpers to set metadata on the Transaction instead. Read our sample data guide for more information. (patch 1c69d3fd) -
Deprecate the 'ID', 'request', and 'options' arguments for the
Transaction.create
andTransaction.new
methods. To add metadata to the transaction, use theAppsignal.set_*
helpers. Read our sample data guide for more information on how to set metadata on transactions.# Before Appsignal::Transaction.create( SecureRandom.uuid, "my_namespace", Appsignal::Transaction::GenericRequest.new(env) # env is a request env Hash ) # After Appsignal::Transaction.create("my_namespace")
(patch 2fc2c617)
-
Deprecate the
Appsignal.monitor_transaction
andAppsignal.monitor_single_transaction
helpers. See the entry about the replacement helpersAppsignal.monitor
andAppsignal.monitor_and_stop
. (patch 470d5813)
Published on 2024-07-08.
-
Add our new recommended Rack instrumentation middleware. If an app is using the
Appsignal::Rack::GenericInstrumentation
middleware, please update it to useAppsignal::Rack::InstrumentationMiddleware
instead.This new middleware will not report all requests under the "unknown" action if no action name is set. To set an action name, call the
Appsignal.set_action
helper from the app.# config.ru # Setup AppSignal use Appsignal::Rack::InstrumentationMiddleware # Run app
(minor f2596781)
-
Add Rake task performance instrumentation. Configure the
enable_rake_performance_instrumentation
option totrue
to enable Rake task instrumentation for both error and performance monitoring. To ignore specific Rake tasks, configureignore_actions
to include the name of the Rake task. (minor 63c9aeed) -
Add instrumentation to Rack responses, including streaming responses. New
process_response_body.rack
andclose_response_body.rack
events will be shown in the event timeline. These events show how long it takes to complete responses, depending on the response implementation, and when the response is closed.This Sinatra route with a streaming response will be better instrumented, for example:
get "/stream" do stream do |out| sleep 1 out << "1" sleep 1 out << "2" sleep 1 out << "3" end end
(minor bd2f037b)
-
Add the
Appsignal.report_error
helper to report errors. If you unsure whether to use theAppsignal.set_error
orAppsignal.send_error
helpers in what context, useAppsignal.report_error
to always report the error. (minor 1502ea14) -
Support nested webmachine apps. If webmachine apps are nested in other AppSignal instrumentation it will now report the webmachine instrumentation as part of the parent transaction, reporting more runtime of the request. (patch 243d20ac)
-
Report the response status for Padrino requests as the
response_status
tag on samples, e.g. 200, 301, 500. This tag is visible on the sample detail page. Report the response status for Padrino requests as theresponse_status
metric.(patch 9239c26b)
-
Add support for nested Padrino apps. When a Padrino app is nested in another Padrino app, or another framework like Sinatra or Rails, it will now report the entire request. (patch 9239c26b)
-
Add
Appsignal.set_params
helper. Set custom parameters on the current transaction with theAppsignal.set_params
helper. Note that this will overwrite any request parameters that would be set automatically on the transaction. When this method is called multiple times, it will overwrite the previously set value.Appsignal.set_params("param1" => "value1", "param2" => "value2")
(patch e8d73e8d)
-
Add
Appsignal.set_custom_data
helper to set custom data on the transaction. Previously, this could only be set withAppsignal::Transaction.current.set_custom_data("custom_data", ...)
. This helper makes setting the custom data more convenient. (patch 875e4435) -
Add
Appsignal.set_tags
helper as an alias forAppsignal.tag_request
. This is a context independent named alias available on the Transaction class as well. (patch 1502ea14) -
Add a block argument to the
Appsignal.set_params
andAppsignal::Transaction#set_params
helpers. Whenset_params
is called with a block argument, the block is executed when the parameters are stored on the Transaction. This block is only called when the Transaction is sampled. Use this block argument to avoid having to parse parameters for every transaction, to speed things up when the transaction is not sampled.Appsignal.set_params do # Some slow code to parse parameters JSON.parse('{"param1": "value1"}') end
(patch 1502ea14)
-
Deprecate the
appsignal.action
andappsignal.route
request env methods to set the transaction action name. Use theAppsignal.set_action
helper instead.# Before env["appsignal.action"] = "POST /my-action" env["appsignal.route"] = "POST /my-action" # After Appsignal.set_action("POST /my-action")
(patch 1e6d0b31)
-
Deprecate the
Appsignal::Rack::StreamingListener
middleware. Use theAppsignal::Rack::InstrumentationMiddleware
middleware instead. (patch 57d6fa33) -
Deprecate the
Appsignal::Rack::GenericInstrumentation
middleware. Use theAppsignal::Rack::InstrumentationMiddleware
middleware instead. See also the changelog entry about theInstrumentationMiddleware
. (patch 1502ea14)
-
Fix issue with AppSignal getting stuck in a boot loop when loading the Padrino integration with:
require "appsignal/integrations/padrino"
This could happen in nested applications, like a Padrino app in a Rails app. AppSignal will now use the first config AppSignal starts with.(patch 10722b60)
-
Fix the deprecation warning of
Bundler.rubygems.all_specs
usage. (patch 1502ea14)
Published on 2024-07-02.
- 0230ab4d patch - Track error response status for web requests. When an unhandled exception reaches the AppSignal EventHandler instrumentation, report the response status as
500
for theresponse_status
tag on the transaction and on theresponse_status
metric.
- b3a80038 patch - Require the AppSignal gem in the Grape integration file. Previously
require "appsignal"
had to be called beforerequire "appsignal/integrations/grape"
. Thisrequire "appsignal"
is no longer required. - e9aa0603 patch - Report Global VM Lock metrics per process. In addition to the existing
hostname
tag, addprocess_name
andprocess_id
tags to thegvl_global_timer
andgvl_waiting_threads
metrics emitted by the GVL probe, allowing these metrics to be tracked in a per-process basis.
-
844aa0af patch - Deprecate
Appsignal::Grape::Middleware
constant in favor ofAppsignal::Rack::GrapeMiddleware
constant.To fix this deprecation warning, update the usage of
Appsignal::Grape::Middleware
like this:# Grape only apps insert_before Grape::Middleware::Error, Appsignal::Rack::GrapeMiddleware # or use Appsignal::Rack::GrapeMiddleware # Grape on Rails app use Appsignal::Rack::GrapeMiddleware
-
1f648ab4 patch - Deprecate the
Appsignal.start_logger
method. Remove this method call from apps if it is present. CallingAppsignal.start
will now initialize the logger.
- 0bb29809 patch - Fix an issue with invalid request methods raising an error in the GenericInstrumentation middleware when using a request class that throws an error when calling the
request_method
method, likeActionDispatch::Request
. - 66bb7a60 patch - Support Grape apps that are nested in other apps like Sinatra and Rails, that also include AppSignal middleware for instrumentation.
- a7b056bd patch - Support Hanami version 2.1. On older versions of our Ruby gem it would error on an unknown keyword argument "sessions_enabled".
- 00b7ac6a patch - Fix issue with AppSignal getting stuck in a boot loop when loading the Hanami integration with:
require "appsignal/integrations/hanami"
This could happen in nested applications, like a Hanami app in a Rails app. It will now use the first config AppSignal starts with.
Published on 2024-06-26.
-
Improve instrumentation of Hanami requests by making sure the transaction is always closed. It will also report a
response_status
tag and metric for Hanami requests.(patch e79d4277)
- Instrument the entire Sinatra request. Instrumenting Sinatra apps using
require "appsignal/integrations/sinatra"
will now report more of the request, if previously other middleware were not instrumented. It will also report the response status with theresponse_status
tag and metric. (patch 15b3390b)
- Fix deprecation warnings about
Transacation.params=
usage by updating how we record parameters in our instrumentations. (patch b65d6674) - Fix error reporting for requests with an error that use the AppSignal EventHandler. (patch 0e48f19b)
Published on 2024-06-24.
- 0a253aa1 patch - Fix parameter reporting for Rack and Sinatra apps, especially POST payloads.
Published on 2024-06-21.
- 500b2b4b minor - Report Sidekiq errors when a job is dead/discarded. Configure the new
sidekiq_report_errors
config option to "discard" to only report errors when the job is not retried further.
- c76952ff patch - Improve instrumentation for mounted Sinatra apps in Rails apps. The sample reported for the Sinatra request will now include the time spent in Rails and its middleware.
- 661b8e08 patch - Support apps that have multiple Appsignal::Rack::EventHandler-s in the middleware stack.
- 7382afa3 patch - Improve support for instrumentation of nested pure Rack and Sinatra apps. It will now report more of the request's duration and events. This also improves support for apps that have multiple Rack GenericInstrumentation or SinatraInstrumentation middlewares.
- 2478eb19 patch - Fix issue with AppSignal getting stuck in a boot loop when loading the Sinatra integration with:
require "appsignal/integrations/sinatra"
This could happen in nested applications, like a Sinatra app in a Rails app. It will now use the first config AppSignal starts with.
Published on 2024-06-17.
-
5459a021 patch - Report the response status for Rails requests as the
response_status
tag on samples, e.g. 200, 301, 500. This tag is visible on the sample detail page.The response status is also reported as the
response_status
metric.
Published on 2024-06-17.
- ca53b043 minor - Report the time spent in Rails middleware as part of the request duration. The AppSignal Rack middleware is now higher in the middleware stack and reports more time of the request to give insights in how long other middleware took. This is reported under the new
process_request.rack
event in the event timeline.
-
37fbae5a patch - Fix ArgumentError being raised on Ruby logger and Rails.logger error calls. This fixes the error from being raised from within the AppSignal Ruby gem. Please do not use this for error reporting. We recommend using our error reporting feature instead to be notified of new errors. Read more on exception handling in Ruby with our Ruby gem.
# No longer raises an error Rails.logger.error StandardError.new("StandardError log message")
Published on 2024-06-11.
- 704a7d29 patch - When the minutely probes thread takes more than 60 seconds to run all the registered probes, log an error. This helps find issues with the metrics reported by the probes not being accurately reported for every minute.
- 5f4cc8be patch - Internal agent changes for the Ruby gem.
Published on 2024-05-14.
-
bf81e165 patch - Support events emitted by ViewComponent. Rendering of ViewComponent-based components will appear as events in your performance samples' event timeline.
For AppSignal to instrument ViewComponent events, you must first configure ViewComponent to emit those events:
# config/application.rb module MyRailsApp class Application < Rails::Application config.view_component.instrumentation_enabled = true config.view_component.use_deprecated_instrumentation_name = false end end
Thanks to Trae Robrock (@trobrock) for providing a starting point for this implementation!
-
ad5c9955 patch - Support Kamal-based deployments. Read the
KAMAL_VERSION
environment variable, which Kamal exposes within the deployed container, if present, and use it as the application revision if it is not set. This will automatically report deploy markers for applications using Kamal.
- 30bb675f patch - Fix an issue where an error about the AppSignal internal logger is raised when sending a heartbeat.
Published on 2024-05-09.
- 4f12684b patch - Fix LocalJumpError in Active Job instrumentation initialization for Active Job < 7.1.
Published on 2024-05-08.
-
28a36ba1 patch - Add option to
activejob_report_errors
option to only report errors when a job is discard by Active Job. In the example below the job is retried twice. If it fails with an error twice the job is discarded. Ifactivejob_report_errors
is set todiscard
, you will only get an error reported when the job is discarded. This newdiscard
value only works for Active Job 7.1 and newer.class ExampleJob < ActiveJob::Base retry_on StandardError, :attempts => 2 # ... end
-
d6d233de patch - Track Active Job executions per job. When a job is retried the "executions" metadata for Active Job jobs goes up by one for every retry. We now track this as the
executions
tag on the job sample.
Published on 2024-05-06.
- b6e8ebe2 patch - Fix deprecation warnings for Probes.probes introduced in 3.7.1 for internally registered probes.
Published on 2024-04-29.
- 226a8f51 patch - If the gem can't find a valid log path in the app's
log/
directory, it will no longer print the warning more than once. - 5f97aa29 patch - Stop the minutely probes when
Appsignal.stop
is called. WhenAppsignal.stop
is called, the probes thread will no longer continue running in the app process. - ccfa3572 patch - Listen to the
APPSIGNAL_HTTP_PROXY
environment variable in the extension installer. WhenAPPSIGNAL_HTTP_PROXY
is set duringgem instal appsignal
orbundle install
, it will use the proxy specified in theAPPSIGNAL_HTTP_PROXY
environment variable to download the extension and agent. - 123c7108 patch - Allow unregistering minutely probes. Use
Appsignal::Probes.unregister
to unregister probes registered withAppsignal::Probes.register
if you do not need a certain probe, including default probes. - 12305025 patch - Add
Appsignal::Probes.register
method as the preferred method to register probes. TheAppsignal::Probes.probes.register
andAppsignal::Minutely.probes.register
methods are now deprecated. - 12305025 patch - Automatically start new probes registered with
Appsignal::Probes.register
when the gem has already started the probes thread. Previously, the late registered probes would not be run. - 12305025 patch - Rename the Minutely constant to Probes so that the API is the same between AppSignal integrations. If your apps calls
Appsignal::Minutely
, please update it toAppsignal::Probes
. If your app callsAppsignal::Minutely
after this upgrade without the name change, the gem will print a deprecation warning for each time theAppsignal::Minutely
is called. - ee08eed2 patch - Log debug messages when metrics are received for easier debugging.
- a2f4b313 patch - Clear the AppSignal in memory logger, used during the gem start, after the file/STDOUT logger is started. This reduces memory usage of the AppSignal Ruby gem by a tiny bit, and prevent stale logs being logged whenever a process gets forked and starts AppSignal.
Published on 2024-04-22.
-
5b0eb9b2 minor - Heartbeats are currently only available to beta testers. If you are interested in trying it out, send an email to support@appsignal.com!
Add heartbeats support. You can send heartbeats directly from your code, to track the execution of certain processes:
def send_invoices() # ... your code here ... Appsignal.heartbeat("send_invoices") end
You can pass a block to
Appsignal.heartbeat
, to report to AppSignal both when the process starts, and when it finishes, allowing you to see the duration of the process:def send_invoices() Appsignal.heartbeat("send_invoices") do # ... your code here ... end end
If an exception is raised within the block, the finish event will not be reported to AppSignal, triggering a notification about the missing heartbeat. The exception will bubble outside of the heartbeat block.
-
5fc83cc1 patch - Implement the
ignore_logs
configuration option, which can also be configured as theAPPSIGNAL_IGNORE_LOGS
environment variable.The value of
ignore_logs
is a list (comma-separated, when using the environment variable) of log line messages that should be ignored. For example, the value"start"
will cause any message containing the word "start" to be ignored. Any log line message containing a value inignore_logs
will not be reported to AppSignal.The values can use a small subset of regular expression syntax (specifically,
^
,$
and.*
) to narrow or expand the scope of lines that should be matched.For example, the value
"^start$"
can be used to ignore any message that is exactly the word "start", but not messages that merely contain it, like "Process failed to start". The value"Task .* succeeded"
can be used to ignore messages about task success regardless of the specific task name.
Published on 2024-04-17.
- 83004ae5 patch - Check the redis-client gem version before installing instrumentation. This prevents errors from being raised on redis-client gem versions older than 0.14.0.
Published on 2024-03-25.
- 09b9aa41 patch - Fix CPU
user
/system
usage measurements, as to take into account the amount of CPUs available.
Published on 2024-03-20.
-
e50433fb patch - Implement CPU count configuration option. Use it to override the auto-detected, cgroups-provided number of CPUs that is used to calculate CPU usage percentages.
To set it, use the the
cpu_count
configuration option or theAPPSIGNAL_CPU_COUNT
environment variable.
- c6dd9779 patch - Add request parameters, path and method tags to errors reported in controllers via the Rails error reporter.
Published on 2024-03-08.
- c3921865 patch - Revert Rack middleware changes (see changelog) to fix issues relating to Unicorn broken pipe errors and multiple requests merging into a single sample.
Published on 2024-03-05.
- 8974d201 patch - Add
activejob_report_errors
config option. When set to"none"
, ActiveJob jobs will no longer report errors. This can be used in combination with custom exception reporting. By default, the config option has the value"all"
, which reports all errors.
Published on 2024-02-26.
-
9984156f minor - Add instrumentation for all Rack responses, including streaming responses. New
response_body_each.rack
,response_body_call.rack
andresponse_body_to_ary.rack
events will be shown in the event timeline. This will show how long it takes to complete responses, depending on the response implementation.This Sinatra route with a streaming response will be better instrumented, for example:
get "/stream" do stream do |out| sleep 1 out << "1" sleep 1 out << "2" sleep 1 out << "3" end end
-
e7706038 patch - Add histogram support to the OpenTelemetry HTTP server. This allows OpenTelemetry-based instrumentations to report histogram data to AppSignal as distribution metrics.
- 11220302 minor - Breaking change: Normalize CPU metrics for cgroups v1 systems. When we can detect how many CPUs are configured in the container's limits, we will normalize the CPU percentages to a maximum of 100%. This is a breaking change. Triggers for CPU percentages that are configured for a CPU percentage higher than 100% will no longer trigger after this update. Please configure triggers to a percentage with a maximum of 100% CPU percentage.
- 11220302 patch - Support fractional CPUs for cgroups v2 metrics. Previously a CPU count of 0.5 would be interpreted as 1 CPU. Now it will be correctly seen as half a CPU and calculate CPU percentages accordingly.
- 14aefc35 patch - Update bundled trusted root certificates.
- f2abbd6a patch - Fix (sub)traces not being reported in their entirety when the OpenTelemetry exporter sends one trace in multiple export requests. This would be an issue for long running traces, that are exported in several requests.
- c76a3293 patch - Default headers don't contain
REQUEST_URI
anymore as query params are not filtered. NowREQUEST_PATH
is sent instead to avoid any PII filtering.
Published on 2024-02-01.
- d44f7092 patch - Add support for the
redis-client
gem, which is used by the redis gem since version 5.
- 6b9b814d patch - Make the debug log message for OpenTelemetry spans from libraries we don't automatically recognize more clear. Mention the span id and the instrumentation library.
- 6b9b814d patch - Fix an issue where queries containing a MySQL leading type indicator would only be partially sanitised.
- e0f7b0e5 patch - Add more testing to JRuby extension installation to better report the installation result and any possible failures.
- 1a863490 patch - Fix disk usage returning a Vec with no entries on Alpine Linux when the
df --local
command fails.
- bb98744b patch - Deprecate the
Appsignal.set_host_gauge
andAppsignal.set_process_gauge
helper methods in the Ruby gem. These methods would already log deprecation warnings in theappsignal.log
file, but now also as a Ruby warning. These methods will be removed in the next major version. These methods already did not report any metrics, and still do not.
- 1a863490 patch - Remove the
appsignal_set_host_gauge
andappsignal_set_process_gauge
extension functions. These functions were already deprecated and did not report any metrics.
- 0637b71d patch - Fix the Makefile log path inclusion in the diagnose report. The diagnose tool didn't look in the correct gem extension directory for this log file.
- fe71d78b patch - Fix reporting of the Ruby syntax version and JRuby version in install report better.
- 50708677 patch - Log a warning when no mountpoints are found to report the disk usage metrics. This scenario shouldn't happen (it should log an error, message about skipping a mountpoint or log the disk usage). Log a warning to detect if this issue really occurs.
- a5963f65 patch - Fix Ruby Logger 1.6.0 compatibility
- 2e93182b patch - Fix an error in the diagnose report when reading a file's contents results in an "Invalid seek" error. This could happen when the log path is configured to
/dev/stdout
, which is not supported. - ae0b779b patch - Fix logger compatibility with Ruby 3.3
- cee1676f minor - Nested errors are now supported. The error causes are stored as sample data on the transaction so they can be displayed in the UI.
-
2149c064 patch - Filter more disk mountpoints for disk usage and disk IO stats. This helps reduce noise in the host metrics by focussing on more important mountpoints.
The following mountpoint are ignored. Any mountpoint containing:
/etc/hostname
/etc/hosts
/etc/resolv.conf
/snap/
/proc/
- 2149c064 patch - - Support disk usage reporting (using
df
) on Alpine Linux. This host metric would report an error on Alpine Linux.- When a disk mountpoint has no inodes usage percentage, skip the mountpoint, and report the inodes information successfully for the inodes that do have an inodes usage percentage.
-
3fe0fa7a patch - Bump agent to eec7f7b
Updated the probes dependency to 0.5.2. CPU usage is now normalized to the number of CPUs available to the container. This means that a container with 2 CPUs will have its CPU usage reported as 50% when using 1 CPU instead of 100%. This is a breaking change for anyone using the cpu probe.
If you have CPU triggers set up based on the old behaviour, you might need to update those to these new normalized values to get the same behaviour. Note that this is needed only if the AppSignal integration package you're using includes this change.
-
bd15ec20 patch - Bump agent to e8207c1.
- Add
memory_in_percentages
andswap_in_percentages
host metrics that represents metrics in percentages. - Ignore
/snap/
disk mountpoints. - Fix issue with the open span count in logs being logged as a negative number.
- Fix agent's TCP server getting stuck when two requests are made within the same fraction of a second.
- Add
-
09b45c80 patch - Bump agent to b604345.
- Add an exponential backoff to the retry sleep time to bind to the StatsD, NGINX and OpenTelemetry exporter ports. This gives the agent a longer time to connect to the ports if they become available within a 4 minute window.
- Changes to the agent logger:
- Logs from the agent and extension now use a more consistent format in logs for spans and transactions.
- Logs that are for more internal use are moved to the trace log level and logs that are useful for debugging most support issues are moved to the debug log level. It should not be necessary to use log level 'trace' as often anymore. The 'debug' log level should be enough.
- Add
running_in_container
to agent diagnose report, to be used primarily by the Python package as a way to detect if an app's host is a container or not.
-
1945d613 patch - Bump agent to 1dd2a18.
- When adding an SQL body attribute via the extension, instead of truncating the body first and sanitising it later, sanitise it first and truncate it later. This prevents an issue where queries containing very big values result in truncated sanitisations.
- c8698dca patch - Fix a deprecation warning for Sidekiq 7.1.6+ when an error is reported to AppSignal. (Thanks @bdewater-thatch!)
- 1c606c6a patch - Fix an internal error when some Redis info keys we're expecting are missing. This will fix the Sidekiq dashboard showing much less data than we can report when Redis is configured to not report all the data points we expect. You'll still miss out of metrics like used memory, but miss less data than before.
- 29970d93 patch - Events from
dry-monitor
are now supported. There's also native support forrom-sql
instrumentation events if they're configured. - 27656744 patch - Support Rails 7.1 ActiveSupport Notifications handler.
- 6932bb3f patch - Add configuration load modifiers to diagnose report. Track if the
APPSIGNAL_INACTIVE_ON_CONFIG_FILE_ERROR
environment variable was set.
-
441de353 patch - Add an option to not start AppSignal on config file errors. When the
config/appsignal.yml
file raises an error (due to ERB syntax issues or ERB errors), it will currently ignore the config file and try to make a configuration work from the other config sources (default, auto detection and system environment variables). This can cause unexpected behavior, because the config from the config file is not part of the loaded config.In future versions of the Ruby gem, AppSignal will not start when the config file contains an error. To opt-in to this new behavior, set the
APPSIGNAL_INACTIVE_ON_CONFIG_FILE_ERROR
system environment variable to either1
ortrue
.
- a42da92b patch - Log an error when sample data is of an invalid type. Accepted types are Array and Hash. If any other types are given, it will log an error to the
appsignal.log
file.
-
8e636323 patch - Bump agent to 6133900.
- Fix
disk_inode_usage
metric name format to not be interpreted as a JSON object.
- Fix
- 4722292d patch - Re-add support for Ruby 2.7.
- d782f9a6 patch - Add the
host_role
config option. This config option can be set per host to generate some metrics automatically per host and possibly do things like grouping in the future.
-
f61f4f68 patch - Bump agent to version d789895.
- Increase short data truncation from 2000 to 10000 characters.
-
61e093b8 patch - Bump agent to 6bec691.
- Upgrade
sql_lexer
to v0.9.5. It adds sanitization support for theTHEN
andELSE
logical operators.
- Upgrade
-
d048c778 patch - Allow passing custom data using the
appsignal
context via the Rails error reporter:custom_data = { :hash => { :one => 1, :two => 2 }, :array => [1, 2] } Rails.error.handle(:context => { :appsignal => { :custom_data => custom_data } }) do raise "Test" end
- 5ddde58b patch - Allow configuration of the agent's TCP and UDP servers using the
bind_address
config option. This is by default set to127.0.0.1
, which only makes it accessible from the same host. If you want it to be accessible from other machines, use0.0.0.0
or a specific IP address. - 74583d26 patch - Report total CPU usage host metric for VMs. This change adds another
state
tag value on thecpu
metric calledtotal_usage
, which reports the VM's total CPU usage in percentages.
- 46735abb patch - Use
RENDER_GIT_COMMIT
environment variable as revision if no revision is specified.
-
86856aae patch - Bump agent to 32590eb.
- Only ignore disk metrics that start with "loop", not all mounted disks that end with a number to report metrics for more disks.
- 85c155a0 patch - When sanitizing an array or hash, replace recursively nested values with a placeholder string. This fixes a SystemStackError issue when sanitising arrays and hashes.
- e5e79d9a patch - Add
filter_metadata
config option to filter metadata set on Transactions set by default. Metadata likepath
, (request)method
,request_id
,hostname
, etc. This can be useful if there's PII or other sensitive data in any of the app's metadata.
-
5a4797c8 patch - Fix Sinatra request custom request parameters method. If the Sinatra option
params_method
is set, a different method thanparams
will be called on the request object to fetch the request parameters. This can be used to add custom filtering to parameters recorded by AppSignal. -
9cdee8aa patch - Log error when the argument type of the breadcrumb metadata is invalid. This metadata argument should be a Hash, and other values are not supported. More information can be found in the Ruby gem breadcrumb documentation.
Appsignal.add_breadcrumb( "breadcrumb category", "breadcrumb action", "some message", { :metadata_key => "some value" } # This needs to be a Hash object )
-
17500724 patch - Fixed a bug that prevented log messages from getting to AppSignal when using the convenience methods as in:
Rails.logger.warn("Warning message")
- 8e54a894 patch - Allow configuration of the agent's StatsD server port through the
statsd_port
option.
-
b9a8effe patch - Update bundled trusted root certificates.
-
d03735c7 patch - Bump agent to fd8ee9e.
- Rely on APPSIGNAL_RUNNING_IN_CONTAINER config option value before other environment factors to determine if the app is running in a container.
- Fix container detection for hosts running Docker itself.
- Add APPSIGNAL_STATSD_PORT config option.
-
645d749f patch - Update agent to version 6f29190.
- Log revision config in boot debug log.
- Update internal agent CLI start command.
- Rename internal
_APPSIGNAL_ENVIRONMENT
variable to_APPSIGNAL_APP_ENV
to be consistent with the public version.
- 4cd1601e patch - Do not run minutely probes on Rails console
-
77ce4e39 patch - Add Rails error reporter support. Errors reported using
Rails.error.handle
are tracked as separate errors in AppSignal. We rely on our other Rails instrumentation to report the errors reported withRails.error.record
.The error is reported under the same controller/job name, on a best effort basis. It may not be 100% accurate. If
Rails.error.handle
is called within a Rails controller or Active Job job, it will copy the AppSignal transaction namespace, action name and tags from the current transaction to the transaction for theRails.error.handle
reported error. If you callAppsignal.set_namespace
,Appsignal.set_action
orAppsignal.tag_request
afterRails.error.handle
, those changes will not be reflected up in the already reported error.It is also possible to customize the AppSignal namespace and action name for the reported error using the
appsignal
context:Rails.error.handle(:context => { :appsignal => { :namespace => "context", :action => "ContextAction" } }) do raise "Test" end
All other key-values are reported as tags:
Rails.error.handle(:context => { :tag_key => "tag value" }) do raise "Test" end
Integration with the Rails error reporter is enabled by default. Disable this feature by setting the
enable_rails_error_reporter
config option tofalse
. -
b4f58afd patch - Support Sidekiq in Rails error reporter. Track errors reported using
Rails.error.handle
in Sidekiq jobs, in the correct action. Previously it would report no action name for the incident, now it will use the worker name by default.
- e0332791 patch - Set the AppSignal transaction namespace, action name and some tags, before Active Job jobs are performed. This allows us to check what the namespace, action name and some tags are during the instrumentation itself.
- 4a40699a patch - The AppSignal gem requires Ruby 3 or higher to run. Remove unnecessary Ruby version checks that query Ruby 2.7 or lower.
- da7d1c76 patch - Internal refactor of Ruby code due to RuboCop upgrade. Use the public
prepend
method to prepend AppSignal instrumentation modules.
- 009d533f patch - Fix a bug when using ActiveSupport::TaggedLogging calling the
silence
method.
- 6f9b7a4d minor - Remove support for Ruby versions in that are end of life, following our maintenance policy. Please upgrade your Ruby version to a supported version before upgrading AppSignal.
- 5b7735ac patch - Fix Logger add method signature error
- 48389475 patch - The
Appsignal::Logger
is now compatible withActiveSupport::Logger.broadcast
.
- a6db61b9 patch - Fixed an error when using our Logging feature with Ruby's default logger formatter.
- 2fc6ba85 patch - Support "warning" value for
log_level
config option. This option was documented, but wasn't accepted and fell back on the "info" log level if used. Now it works to configure it to the "warn"/"warning" log level. - c04f7783 patch - Add global VM lock metrics. If the
gvltools
library is installed, AppSignal for Ruby will report metrics on the global VM lock and the number of waiting threads in your application.
- a815b298 patch - Support cgroups v2. Used by newer Docker engines to report host metrics. Upgrade if you receive no host metrics for Docker containers.
- 8e67159e patch - Configure AppSignal with the RACK_ENV or RAILS_ENV environment variable in diagnose CLI, if present. Makes it easier to run the diagnose CLI in production, without having to always specify the environment with the
--environment
CLI option. - a815b298 patch - Allow transaction events to have a duration up to 48 hours before being discarded.
- a815b298 patch - Remove trailing comments in SQL queries, ensuring queries are grouped consistently.
- a815b298 patch - Fix an issue where events longer than forty-eight minutes would be shown as having a zero-second duration.
-
962d069c patch - Bump agent to 8d042e2.
- Support multiple log formats.
-
fc85adde patch - Bump agent to 0d593d5.
- Report shared memory metric state.
- 75e29895 patch - Add NGINX metrics support. See our documentation for details.
- b2f872bc patch - Fix the T_DATA warning originating from the AppSignal C extension on Ruby 3.2.
- d1b960f0 patch - Reduce our dependency on YAML during installation. Instead of a YAML file with details about the extension download location, use a pure Ruby file. This is a partial fix for the installation issue involving psych version 5.
- e1e598ae patch - Skip the
.gemrc
config during installation if it raises an error loading it. This can be caused when the psych gem version 5 is installed on Ruby < 3.2. Use theHTTP_PROXY
environment variable instead to configure the HTTP proxy that should be used during installation.
- 7f62ada8 patch - Track the Operating System release/distro in the diagnose report. This helps us with debugging what exact version of Linux an app is running on, for example.
- 1443e05f patch - Attempt to load C extension from lib/ directory. Fixes an issue where JRuby would fail to load the extension from the ext/ directory, as the directory is cleaned after installation when using RubyGems 3.4.0.
- e4314b5b minor - Hanami 2 is now supported. Requests will now appear as performance measurements.
- 2b1964d9 patch - Track new Ruby 3.2 VM cache metrics. In Ruby 3.2 the
class_serial
andglobal_constant_state
metrics are no longer reported for the "Ruby (VM) metrics" magic dashboard, because Ruby 3.2 removed these metrics. Instead we will now report the newconstant_cache_invalidations
andconstant_cache_misses
metrics reported by Ruby 3.2. - 6804e898 patch - Use log formatter if set in logger
- 5e87aa34 patch - Support the http.rb gem's URI argument using objects with the
#to_s
method. A Ruby URI object is no longer required.
- 199d05c0 minor - Support the http.rb gem. Any outgoing requests will be tracked as events on the incident event timeline. This instrumentation is activated automatically, but can be disable by setting the
instrumentation_http_rb
option tofalse
. - 9bcd107d minor - Support log collection from Ruby apps using the new AppSignal Logging feature. Learn more about AppSignal's Logging on our docs.
- a03b7246 patch - Support Sidekiq 7 in the Sidekiq minutely probe. It will now report metrics to Sidekiq magic dashboard for Sidekiq version 7 and newer.
-
4035c3c2 patch - Bump agent to version 813a59b
- Fix http proxy config option parsing for port 80.
- Fix the return value for appsignal_import_opentelemetry_span extension
function in
appsignal.h
.
- feb60fb8 patch - Fix NoMethodError for AppSignal Puma plugin for Puma 6. Puma 5 is also still supported.
- ffe49cfe patch - Support temporarily disabling GC profiling without reporting inaccurate
gc_time
metric durations. The MRI probe'sgc_time
will not report any value when theGC::Profiler.enabled?
returnsfalse
.
- af7e666c patch - Listen if the Ruby Garbage Collection profiler is enabled and collect how long the GC is running for the Ruby VM magic dashboard. An app will need to call
GC::Profiler.enable
to enable the GC profiler. Do not enable this in production environments, or at least not for long, because this can negatively impact performance of apps.
- b3a163be patch - Fix the MRI probe using the Garbage Collection profiler instead of the NilProfiler when garbage collection instrumentation is not enabled for MRI probe. This caused unnecessary overhead.
- 811a1082 patch - Add the
Transaction.current?
helper to determine if any Transaction is currently active or not. AppSignalNilTransaction
s are not considered active transactions.
- dc50d889 patch - Rename the (so far privately reported)
gc_total_time
metric togc_time
. It no longer reports the total time of Garbage Collection measured, but only the time between two (minutely) measurements.
- 7cfed987 patch - Fix error on unknown HTTP request method. When a request is made with an unknown request method, triggering and
ActionController::UnknownHttpMethod
, it will no longer break the AppSignal instrumentation but omit the request method in the sample data.
-
1b95bb4c patch - Report Garbage Collection total time metric as the delta between measurements. This reports a more user friendly metric that doesn't always goes up until the app restarts or gets a new deploy. This metric is reported 0 by default without
GC::Profiler.enable
having been called. -
61a78fb0 patch - Bump agent to 06391fb
- Accept "warning" value for the
log_level
config option. - Add aarch64 Linux musl build.
- Improve debug logging from the extension.
- Fix high CPU issue for appsignal-agent when nothing could be read from the socket.
- Accept "warning" value for the
- e225c798 patch - Report all Ruby VM metrics as gauges. We previously reported some metrics as distributions, but all fields for those distributions would report the same values.
- 31fd19c6 patch - Add hostname tag for Ruby VM metrics. This allows us to graph every host separately and multiple hosts won't overwrite each other metrics.
- d10c3f32 minor - Add tracking of thread counts, garbage collection runs, heap slots and other garbage collection stats to the default MRI probe. These metrics will be shown in AppSignal.com in a new Ruby VM Magic Dashboard.
-
114fe4f9 patch - Bump agent to v-d573c9b
- Display unsupported OpenTelemetry spans in limited form.
- Clean up payload storage before sending. Should fix issues with locally queued payloads blocking data from being sent.
- Add
appsignal_create_opentelemetry_span
function to create spans for further modification, rather than only import them.
-
dd803449 patch - Report gauge delta value for allocated objects. This reports a more user friendly metric we can graph with a more stable continuous value in apps with stable memory allocation.
-
547f925e patch - Report gauge delta value for Garbage Collection counts. This reports a more user friendly metric that doesn't always goes up until the app restarts or gets a new deploy.
- e555a81a patch - Fix FFI function calls missing arguments for
appsignal_free_transaction
andappsignal_free_data
extension functions. This fixes a high CPU issue when these function calls would be retried indefinitely.
- 7032dc4b patch - Use
Dir.pwd
to determine the current directory in the Capistrano 3 integration. It previously relied onENV["pwd"]
which returnednil
in some scenarios.
- 56ec42ae patch - Remove Moped support as it is no longer the official Ruby Mongo driver and it's been unmaintained for 7 years.
- 991ca18d patch - Fix runtime errors on YAML load with older psych versions (
< 4
) used in combination with newer Ruby version (3.x
).
- 399cf790 patch - Sanitize
ActiveRecord::RecordNotUnique
error messages to not include any database values that is not unique in the database. This ensures no personal information is sent to AppSignal through error messages from this error.
-
964861f7 patch - Bump agent to v-f57e6cb
- Enable process metrics on Heroku and Dokku
- d73905d3 patch - Fix sanitized values wrapped in Arrays. When a value like
[{ "foo" => "bar" }]
was sanitized it would be stored as{ "foo" => "?" }
, omitting the parent value's Array square brackets. Now values will appear with the same structure as they were originally sanitized. This only applies to certain integrations like MongoDB, moped and ElasticSearch. - 096d3cdf patch - Fix the ActiveJob
default_queue_name
config option issue being reset to "default". When ActiveJobdefault_queue_name
was set in a Rails initializer it would reset on load todefault
. Now thedefault_queue_name
can be set in an initializer as well.
-
9762e79d patch - Bump agent to v-bbc830a
- Support batched statsd messages
- Set start times for spans with traceparents
- Check duration in transactions for negative and too high value
- 548dd6f4 patch - Add config override source. Track final decisions made by the Ruby gem in the configuration in the
override
config source. This will help us track new config options which are being set by their deprecated predecessors in the diagnose report.
- 3f503ade patch - Remove internal
Appsignal.extensions
system. It was unused.
- f19d9dcc patch - The MongoDB query sanitization now shows all the attributes in the query at all levels.
Only the actual values are filtered with a
?
character. Less MongoDB queries are now marked as N+1 queries when they weren't the exact same query. This increases the number of unique events AppSignal tracks for MongoDB queries.
- 35bd83b8 patch - Add
send_session_data
option to configure if session data is automatically included transactions. By default this is turned on. It can be disabled by configuringsend_session_data
tofalse
.
- 35bd83b8 patch - Deprecate
skip_session_data
option in favor of the newly introducedsend_session_data
option. If it is configured it will print a warning on AppSignal load, but will also retain its functionality until the config option is fully removed in the next major release. - e51a8fb6 patch - Warn about the deprecated
working_dir_path
option from all config sources. It previously only printed a warning when it was configured in theconfig/appsignal.yml
file, but now also prints the warning if it's set via the Config class initialize options and environment variables. Please use theworking_directory_path
option instead.
- c9000eee patch - Fix reported Ruby version in diagnose report. It would report only the first major release of the series, e.g. 2.6.0 for 2.6.1.
- 2587eae3 patch - Store the extension install report as JSON, instead of YAML. Reduces internal complexity.
- 243c1ed4 patch - Improve compatibility with the sequel-rails gem by tracking the performed SQL query in instrumentation events.
- d7bfcdf1 patch - Add Ruby 3.1.0 support. There was an issue with
YAML.load
arguments when parsing theappsignal.yml
config file.
- f9d57752 patch - Use the
log_level
option for the Ruby gem logger. Previously it only configured the extension and agent loggers. Also fixes thedebug
andtransaction_debug_mode
option if nolog_level
is configured by the app.
-
fe226e99 patch - Add experimental Span API. This is not loaded by default and we do not recommend using it yet.
-
84b1ba18 patch - Add "log_level" config option. This new option allows you to define the kind of messages AppSignal's will log and up. The "debug" option will log all "debug", "info", "warning" and "error" log messages. The default value is: "info"
The allowed values are:
- error
- warning
- info
- debug
-
6b2ecca2 patch - Clean up index values in error messages from PG index violation errors.
-
25bde454 patch - Order the config options alphabetically in diagnose report output.
-
fe226e99 patch - Use the
filter_parameters
andfilter_session_data
options to filter out specific parameter keys or session data keys for the experimental Span API. Previously only the (undocumented)filter_data_keys
config option was available to filter out all kinds of app data. -
fe226e99 patch - Standardize diagnose validation failure message. Explain the diagnose request failed and why.
-
fe226e99 patch - Bump agent to v-5b63505
- Only filter parameters with the
filter_parameters
config option. - Only filter session data with the
filter_session_data
config option.
- Only filter parameters with the
-
3ad95ea5 patch - Bump agent to v-0db01c2
- Add
log_level
config option in extension. - Deprecate
debug
andtransaction_debug_mode
option in extension.
- Add
- 84b1ba18 patch - Deprecate "debug" and "transaction_debug_mode" config options in favor of the new "log_level" config option.
-
b40b3b4f patch - Print String values in the diagnose report surrounded by quotes. Makes it more clear that it's a String value and not a label we print.
-
fd6faf16 patch - Bump agent to 09308fb
- Update sql_lexer dependency with support for reversed operators in queries.
- Add debug level logging to custom metrics in transaction_debug_mode.
- Add hostname config option to standalone agent.
-
c40f6d75 patch - Add minutely probe that collects metrics for :class_serial and :global_constant_state from RubyVM.
-
7c18fb6d patch - Bump agent to 7376537
- Support JSON PostgreSQL operator in sql_lexer.
- Do not strip comments from SQL queries.
-
8d7b80ea patch - Add configuration option for the AppSignal agent StatsD server. This is on by default, but you can disable it with
enable_statsd: false
.
-
5c202185 patch - Bump agent to v-0318770.
- Improve Dokku platform detection. Do not disable host metrics on Dokku.
- Report CPU steal metric.
-
7f3af841 patch - Bump agent to 0f40689
- Add Apple Darwin ARM alias.
- Improve appsignal.h documentation.
- Improve transaction debug log for errors.
- Fix agent zombie/defunct issue on containers without process reaping.
- 8e3ec789 patch - Bump agent to v-891c6b0. Add experimental Apple Silicon M1 ARM64 build.
- 88f7d585 patch - Bump agent to c2024bf with appsignal-agent diagnose timing issue fix when reading the report and improved filtering for HTTP request transmission logs.
- 44dd4bdc patch - Check Rails.backtrace_cleaner method before calling the method. This prevents a NoMethodError from being raised in some edge cases.
- 5f94712d patch - Add the
APPSIGNAL_BUILD_FOR_LINUX_ARM
flag to allow users to enable the experimental Linux ARM build for 64-bit hosts. Usage:export APPSIGNAL_BUILD_FOR_LINUX_ARM=1 bundle install
. Please be aware this is an experimental build. Please report any issue you may encounter at our support email.
-
27f9b178 patch - Bump agent to 6caf6d0. Replaces curl HTTP client and includes various other maintenance updates.
-
665d883a patch - Improve Puma plugin stats collection. Instead of starting the AppSignal gem in the main process we send the stats to the AppSignal agent directly using StatsD. This should improve compatibility with phased restarts. If you use
prune_bundler
, you will need to add AppSignal to the extraextra_runtime_dependencies
list.# config/puma.rb plugin :appsignal extra_runtime_dependencies ["appsignal"]
- d354d79b patch - Add Excon integration. Track requests and responses from the Excon gem.
- 4c32e818 patch - Support Redis eval statements better by showing the actual script that was performed. Instead of showing
eval ? ? ?
(for a script with 2 arguments), show<script> ? ?
, where<script>
is whatever script was sent toRedis.new.eval("<script>")
.
- 4bddac36 patch - Skip empty HTTP proxy config. When any of the HTTP proxy config returns an empty string, skip this config. This fixes installation issues where an empty String is used as a HTTP proxy, causing a RuntimeError upon installation.
- 6338e822 patch - Drop logger level to debug. Reduce the output on the "info" level and only show these messages in debug mode. This should reduce the noise for users running AppSignal with the STDOUT logger, such as is the default on Heroku.
- Fix deprecation message for set_error namespace argument. PR #712
- Fix example code for Transaction#set_namespace method. PR #713
- Fix extension fallbacks on extension installation failure, that caused
- NoMethodErrors. PR #720
- Bump agent to v-75e76ad. PR #721
- Fix error on Rails boot when
enable_frontend_error_catching
istrue
. PR #711
- Fix error occurring on APPSIGNAL_DNS_SERVER environment variable option parsing. PR #709
Please read our upgrade from version 2 to 3 guide before upgrading.
- Drop Ruby 1.9 support. PR #683, #682, #688, #694
- Require Ruby 2.0 or newer for gem. PR #701
- Use Module.prepend for all gem integrations. Fixes #603 in combination with other gems that provide instrumentation for gems. PR #683
- Remove deprecated integrations, classes, methods and arguments. PR #685, #686
- Deprecate
set_error
andsend_error
error helperstags
andnamespace
arguments. PR #702 - Add Sidekiq error handler. Report more Sidekiq errors that happen around job execution. PR #699
- Backport extension fallbacks on extension installation failure, that caused NoMethodErrors. PR #736
- Fix and simplify Ruby method delegation for object method instrumentation in the different Ruby versions. PR #706
- Mark minutely probe thread as fork-safe by @pixeltrix. PR #704
- Fix ActionCable integration in test environment using
stub_connection
. PR #705
- Prepend Sidekiq middleware to wrap all Sidekiq middleware. Catches more errors and provide more complete performance measurements. PR #698
- Add more detailed logging to finish_event calls when the event is unknown, so we know what event is being tried to finish. Commit c888a04d1b9ac947652b29c111c650fb5a5cf71c
- Support Ruby 3.0 for Object method instrumentation with keyword arguments (https://docs.appsignal.com/ruby/instrumentation/method-instrumentation.html) PR #693
- Support Shoryuken batch workers. PR #687
- Support Ruby 3.0. PR #681
- Support breadcrumbs. PR #666
- Log Ruby errors on extension download. PR #679
- Fix Ruby 1.9 build. PR #680
- Support AS notifications instrumenters that use
start
andfinish
. - Updated agent with better logging and an IO stats fix.
- ActionMailer magic dashboard
- Track queue time regardless of namespace. Support custom namespaces. PR #602
- Improve deprecation message from frontend error middleware. PR #620
- Report Ruby environment metadata. PR #621, #627, #619, #618
- Refactor: Move minutely probes to their own files and modules. PR #623
- Allow custom action names in Que integration. Needed for Active Job integration. PR #628
- Add Active Job support. Support Active Job without separate AppSignal integration of the background job library. Add support for previously unsupported Active Job adapters. Adapters that were previously already supported (Sidekiq, DelayedJob and Resque) still work in this new setup. PR #629
- Add automatic Resque integration. Remove manual Resque and Resque Active Job integrations. PR #630
- Fix issue with unknown events from being reported as often for long running agents. Commit ba9afb538f44c68b8035a8cf40a39d89bc77b021
- Add support for Active Job priority. PR #632
- Track Active Job job metrics for magic dashboard. PR #633
- Report Sidekiq
jid
(job id) as transaction id, reported as "request_id" on AppSignal.com. PR #640 - Always report Active Job ID, an internal ID used by Active Job. PR #639
- Support Delayed::Job jobs without specific method name, using
Delayed::Job.enqueue
. PR #642 - Print warnings using Kernel.warn. PR #648
- Update AuthCheck class to use DeprecationMessage helper. PR #649
- Print extension load error when AppSignal is loaded. PR #651
- Fix
working_directory_path
config option loaded from environment variables. PR #653
- Fix extension install report status output in
appsignal diagnose
. PR #636 - Support setting a specific configuration file to load with the
Appsignal::Config
initializer. PR #638
- Bump agent to v-4548c88. PR #634
- Fix issue with host metrics values being reported as "Infinity".
- Use http proxy if configured when downloading agent. PR #606
- Clear event details cache every 48 hours. Commit eb5e899db69fcd7cfa221567bfd6ac04f2654c9c
- Add support for Resque ActiveJob queue time reporting. PR #616
- Fix failed checksum error log. PR #609
- Fix DelayedJob action name detection for objects that listen to the
[]
method and return a non-String value. #611 - CI test build improvements. PR #607, #608, #614
- Revert fix for compatibility with the
http_logger
gem. PR #604. For more information, see issue #603 about our reasoning and discussion.
- Check if queued payloads are for correct app and not expired
- Improve Ruby 1.9 compatibility. PR #591
- Add grape.skip_appsignal_error request env. PR #588 More information: https://docs.appsignal.com/ruby/integrations/grape.html
- Fix compatibility with the
http_logger
gem. FixSystemStackError
. PR #597
- Fix
Appsignal::Transaction#set_http_or_background_action
helper (used byAppsignal.monitor_transaction
), to allow overwriting the action name of aTransaction
withAppsignal.set_action
. PR #594 - Move build to Semaphore. PR #587, #590 and #592
- Only warn about reused transactions once. Repeated occurrences are logged as debug messages. PR #585
- Fix wait_for test suite helper. PR #581
- Fix exception handling of config file issues. PR #582
- The improvement introduced in #517 didn't fetch the class name correctly causing an error on most scenarios.
- Update to more recent bundled SSL CA certificates. PR #577
- Remove TLS version lock from transmitter used by diagnose command, preventing it from sending the report. Was locked to TLS v1, now uses the Ruby default. PR #580
- Rescue errors while parsing
appsignal.yml
file. It will prints a warning instead. PR #517 - Refactoring: Reduce class variable usage. PR #520
- Bump log level about starting new transactions while a transaction is already active from debug to a warning. PR #525
- Refactoring: Add internal AppSignal test helpers and other test suite refactorings. PR #536, #537, #538, #539
- Fix internal Rakefile loading on Ruby 1.9.3. PR #541
- Add a
--no-color
option to theappsignal install
command. PR #550 - Add output coloring to
appsignal diagnose
warnings. PR #551 - Add validation for empty Push API key. Empty Push API key values will no longer start AppSignal. PR #569
- Deprecate the JSExceptionCatcher middleware in favor of our new front-end JavaScript integration (https://docs.appsignal.com/front-end/). PR #572
- Bump agent to v-c348132
- Improve transmitter logging on timeout
- Improve queued payloads transmitter. Should prevent payloads being sent multiple times.
- Add transaction debug mode
- Wrap Option in Mutex in TransactionInProgess
- Handle missing file and load errors from
application.rb
inappsignal install
for Rails apps. PR #568 - Support minutely probes for Puma in clustered mode. PR #570 See the installation instructions for the Puma plugin: https://docs.appsignal.com/ruby/integrations/puma.html
- Check set_error arguments for Exceptions. PR #565
- Bump agent to v-1d8917f - commit 737d6b1b8fc9cd2c0564050bb04246d9267dceb7
- Only attempt to send queued payloads if we have a successful transmission.
- Bump agent to v-690f4b8 - commit cf4f3787395c8524079f3bed3b2c2367296482a9
- Validate transmission_interval option.
- Support mirrors when downloading the agent & extension. PR #558
- Support Que's upcoming 1.0.0 release. PR #557
- Bump agent to v-e1c9363
- Detect revision from Heroku dynos automatically when Dyno Metadata is turned on.
- Bump agent to v-a3e0f83 - commit 3d94dd42645922214fc2f5bc09cfa7c597323198
- Better detect zombie/defunct processes on containers and consider the processes dead. This should improve the appsignal-agent start behavior.
- Fix Sequel install hook version detection mismatch. PR #553
- Improve support for older Sidekiq versions. PR #555
- Bump agent to v-a718022
- Fix container CPU runtime metrics. See appsignal/probes-rs#38 for more information.
- Improve host metrics calculations accuracy for counter metrics. See appsignal/probes-rs#40 for more information.
- Support Kernel 4.18+ format of /proc/diskstats file parsing. See appsignal/probes-rs#39 for more information.
- Fix Puma minutely probe start where
daemonize
is set totrue
. PR #548
- Fix error in the ActiveSupport::Notifications integration when a transaction gets completed during event instrumentation. PR #532
- Fix Redis constant load error. PR #543
- Add more logging for errors in debug mode. PR #544
- Deprecate notify_of_deploy command. PR #545
- Always call the block given to
Appsignal.monitor_transaction
and log errors from the helper even when AppSignal is not active. PR #547
- Fix Ruby 1.9 compatibility in extension installation. PR #531
- Fix minutely probes not being loaded from Rails initializers. PR #528
- Print link to diagnose docs on unsuccessful demo command. PR #512
- Add support for minutely probe
.dependencies_present?
check. PR #523 - Do not activate Sidekiq minutely probe on unsupported Redis gem versions. PR #523.
- Improve logging in minutely probes. PR #508
- Delay the first minutely probe for a bit, since it might take some time for dependencies to initialize. PR #511
- Log error backtraces in minutely probes as debug messages. PR #495
- Don't add cluster behavior in Puma single mode. PR #504
- Only register ActionView event formatter in Rails. PR #503
- Convert Sidekiq latency from seconds to ms. PR #505
- Remove GCProbe. PR #501
- Fix Puma.stats calls. PR #496
- Only send Puma metrics if available. PR #497
- Track memory metrics of the current process. PR #499
- Fix memory leak in custom metrics key names. Commit 9064e2ccfd19ee05c333d0ecda4deafdd743629e
- Fix installations using git source. PR #455
- Track installation results in installation report. PR #450
- Fix Rails 6 deprecation warnings. PR #460, PR #478, PR #483
- Improve error handling in minutely probes mechanism. PR #467
- Only allow one minutely probe thread to run at a time. PR #469
- Change minutely probes register method to use a key for every probe. PR #473
- Send Sidekiq metrics by default. PR #471
- Send MongoDB metrics by default. PR #472
- Fix Ruby 2.6 deprecation warnings. PR #479
- Support blocks for
Appsignal.send_error
to add more metadata to the AppSignal transaction. PR #481 - Move instrumentation & metrics helpers to modules. PR #487
- Add Puma minutely probe. PR #488
- Log invalid EventFormatter registrations as errors. PR #491
- Support container CPU host metrics. Commit f2fca1ec5a850cd84fbc8cefe63af8f039ebb155
- Support StatsD server in agent. Commit f2fca1ec5a850cd84fbc8cefe63af8f039ebb155
- Fix samples being reported for multiple namespaces. Commit f2fca1ec5a850cd84fbc8cefe63af8f039ebb155
- Report memory and swap usage in percent using the memory_usage and swap_usage metrics. Commit f2fca1ec5a850cd84fbc8cefe63af8f039ebb155
- Log memory usage of agent if high. Commit 46cf3770e13eff9f5fccbf8a4525a8dbfd8eeaad
- Fix
Appsignal::Transaction.pause!
. PR #482
- Fix multi user permission issue for agent directories and files. Commit ab1b35f850777d5999b41627d75be0b3904bc0a1
- Remove Bundler requirement from diagnose command. PR #451
- Fix Delayed::Job action name reporting for structs. PR #463
- Fix installation on Ruby 2.6 for libc and musl library builds. PR #453
- Group extension and agent tests in diagnose output. PR #437
- Add diagnose --[no-]send-report option. PR #438
- Print deprecation warnings to STDOUT as well. PR #439
- Diagnose command starts the AppSignal logger. PR #440
- Send appsignal.log file contents with diagnose report. PR #442
- Track source of config option for diagnose report. PR #444
- Link back to AppSignal diagnose report page. Claim you reports. PR #445
- Print only last 10 lines of files in diagnose report output. PR #442 & #447
- Support container memory host metrics better. PR #448
- Build dynamic musl extension library. Supports JRuby for musl builds. PR #448
- Change
files_world_accessible
permissions to not make files executable. PR #448 - Make agent debug logging for disk IO metrics more robust. PR #448
- Add user and group context to diagnose report. PR #436
- Add user and group context to agent logs. PR #436
- Fixes for running with multiple users
- Change the order of instructions in the install script for Rails. PR #433
- Fix linking issues on multi-stage build setups. PR #434
- Improve error log on unsupported architecture and build combination on install. PR #426
- Improve performance when garbage collection profiling is disabled. PR #429
- Detect Kubernetes containers as containers for
running_in_container
config option. Commit 60822aac24ccc394df073091c64f05096455942d. - Fix in memory logger initialization. PR #416
- Organize classes in their own files. PR #417
- Move tag value limit handling to extension. PR #418
- Add working_directory_path config option. PR #421
- Use doubles values in custom metrics functions. PR #422
- Bump agent to e41c3c0. Commit 8056af037f82eda156c5946911012e5c742b5664
- Remove request_headers warning and use sane default. PR #410
- Fix metrics format for internal agent metrics. PR #411
- Enable frozen strings by default. PR #384
- Add
revision
config option. PR #388 - Avoid generating unique action names for Padrino. PR #393
- Add
request_headers
filter configuration. PR #395 - Support tags for custom metrics. PR #398
- Add filter_session_data config option. PR #402 & #409
- Move default hostname behavior to extension. PR #404
- Add
request_headers
config to installation step. PR #406 - Rename ParamsSanitizer to HashSanitizer. PR #408
- Fix empty action name issue. Commit b292c2c93c8935ab54fc4d16598fa534c9cc9c90
- Fix Sidekiq action names containing arguments. PR #401
- Support Sidekiq delay extension for ActiveRecord instances. If using this feature in your app, an update is strongly recommended! PR #387
- Improve custom event formatter registration. An event formatter can now be registered in a Rails initializer after AppSignal has been loaded/started. PR #397
- Improve internal sample storage in agent. Commit 2c8eae26685c7a1517cf2e57b44edd1557a502f2
- No longer set _APPSIGNAL_AGENT_VERSION environment variable. PR #385
- Fix Capistrano config overrides. PR #375
- Add JRuby beta support. PR #376
- Fix locking issue on diagnose mode run. Commit e6c6de811f8115a73050fc865e89dd4945ddec57
- Increase stored length of error messages. Commit e6c6de811f8115a73050fc865e89dd4945ddec57
- Store more details for Redis events. PR #374
- Store agent architecture rather than platform. PR #367
- Improve documentation for
Appsignal.monitor_transaction
better. Commit e53987ba36a79fc8883f2e59322946297ddee773 - Change log level from info to debug for value comparing failures. Commit ecef28b28edaff46b95f53a916c93021dc763160
- Collect free memory host metric. Commit ecef28b28edaff46b95f53a916c93021dc763160
- Fix crashes when Set wasn't required before AppSignal, such as in the CLI. PR #373
- Add Que integration. PR #361
- Support Sidekiq delayed extension job action names better. Now action names
are reported as their class and class method name (
MyClass.method
), rather thanSidekiq::Extensions::DelayedClass#perform
for all jobs through that extension. PR #362 - Support Sidekiq Enterprise encrypted values. PR #365
- Use musl build for older libc systems. PR #366
- Add separate GNU linux build. PR #351 and Commit d1763f4dcb685608468a73f3192226f60f66b217
- Add separate FreeBSD build Commit d1763f4dcb685608468a73f3192226f60f66b217
- Fix crashes when using a transaction from multiple processes in an unsupported way. Commit d1763f4dcb685608468a73f3192226f60f66b217
- Auto restart agent when none is running Commit d1763f4dcb685608468a73f3192226f60f66b217
- Add
appsignal_user
Capistrano config option. PR #355 - Track Exception-level exceptions. PR #356
- Add tags and namespace arguments to
Appsignal.listen_for_error
. PR #357 - Revert Sidekiq delayed extension job action names fix. Commit 9b84a098604de5ef5e52645ba7fcb09d84f66eaa
- Support Sidekiq delayed extension job action names better. Now action names
are reported as their class and class method name (
MyClass.method
), rather thanSidekiq::Extensions::DelayedClass#perform
for all jobs through that extension. PR #348
- Allow configuration of permissions of working directory. PR #336
- Fix locking bug that delayed extension shutdown. Commit 51d90bb1207affc2c88f7cff5035a2c36acf9784
- Log extension start with app revision if present Commit 51d90bb1207affc2c88f7cff5035a2c36acf9784
Yanked
- Fix naming for ActiveJob integration with DelayedJob. PR #345
- Accept mixed case env variable values for the
true
value. PR #333 - Don't record sensitive HTTP_X_AUTH_TOKEN header. PR #334
- Support dry run option for Capistrano 3.5.0 and higher. PR #339
- Agent and extension update. Improve agent connection handling. Commit e75d2f9b520d46f6cd0266b484b2c26c3bdc8882
- Improve Rake argument handling. Allow for more detailed view of which arguments a tasks receives. PR #328
- Fix ActiveSupport::Notifications hook not supporting non-string names for events. PR #324
- Fix Shoryuken instrumentation when body is a string. PR #266
- Enable ActiveSupport instrumentation at all times. PR #274
- Add parameter filtering for background jobs. Automatically uses the AppSignal parameter filtering. PR #280
- Improve log messages for transactions. PR #293
- Remove thread_safe dependency. PR #294
- Add
Transaction#params
attribute for custom parameters. PR #295 - Fix queue time on DelayedJob integration. PR #297
- Add ActionCable support. PR #309
- Finish ActiveSupport notifications events when they would encounter a
raise
or athrow
. PR #310 - Add
ignore_namespaces
option. PR #312 - Truncate lengthy parameter values to 2000 characters. Commit 65de1382f5f453b624781cde6e0544c89fdf89ef and d3ca2a545fb22949f3369692dd57d49b4936c739.
- Disable gracefully on Microsoft Windows. PR #313
- Add tags and namespace arguments to
Appsignal.set_error
. PR #317
- Fix support for Rails 5.1. PR #286
- Fix instrumentation that would report a duration of
0ms
for all DataMapper queries. PR #290 - Finish events when
Appsignal.instrument
encounters araise
or athrow
. PR #292
- Support Ruby 2.4 better. PR #234
- Initial setup for documenting the Ruby gem's code. PR #243
- Move
running_in_container
auto detection to extension for easy reuse. PR #249 - Allow overriding of action and namespace for a transaction. PR #254
- Prefix all agent configuration environment variables with an underscore to separate the two usages. PR #258
- Force agent to run in diagnostic mode even when the user config is set to
active: false
. PR #260 - Stub JS error catching endpoint when not active. PR #263
- Use better event names for Padrino integration. PR #265
- No longer gzip payloads send by the Ruby gem transmitter. PR #269
- Send diagnostics data report to AppSignal on request. PR #270
- When JS exception endpoint payload is empty return 400 code. PR #271
- Remove hardcoded DNS servers from agent and add config option. PR #278
- Fix error with Grape request methods defined with symbols. PR #259
- Fix DNS issue related to the musl build. Commit 732c877de8faceabe8a977bf80a82a6a89065c4d and 84e521d20d4438f7b1dda82d5e9f1f533ae27c4b
- Update benchmark and add load test. PR #248
- Fix configuring instrument Redis and Sequel from env. PR #257
- Add support for musl based libc (Alpine Linux). PR #229
- Implement
Appsignal.is_ignored_error?
andAppsignal.is_ignored_action?
logic in the AppSignal extension. PR #224 - Deprecate
Appsignal.is_ignored_error?
. PR #224 - Deprecate
Appsignal.is_ignored_action?
. PR #224 - Enforce a coding styleguide with RuboCop. PR #226
- Remove unused
Appsignal.agent
attribute. PR #244 - Deprecate unused
Appsignal::AuthCheck
logger argument. PR #245
- Fix
Appsignal::Transaction#record_event
method call. PR #240
- Improved logging for agent connection issues. Commit cdf9d3286d704e22473eb901c839cab4fab45a6f
- Handle nil request/environments in transactions. PR #231
- Use consistent log format for both file and STDOUT logs. PR #203
- Fix log path in
appsignal diagnose
for Rails applications. PR #218, #222 - Change default log path to
./log
rather than project root for all non-Rails applications. PR #222 - Load the
APPSIGNAL_APP_ENV
environment configuration option consistently for all integrations. PR #204 - Support the
--environment
option on theappsignal diagnose
command. PR #214 - Use the real system
/tmp
directory, not a symlink. PR #219 - Run the AppSignal agent in diagnose mode in the
appsignal diagnose
command. PR #221 - Test for directory and file ownership and permissions in the
appsignal diagnose
command. PR #216 - Test if current user is
root
in theappsignal diagnose
command. PR #215 - Output last couple of lines from
appsignal.log
on agent connection failures. - Agent will no longer fail to start if no writable log path is found. Commit 8920865f6158229a46ed4bd1cc98d99a849884c0, change in agent.
- Internal refactoring of the test suite and the
appsignal install
command. PR #200, #205
- Fix JavaScript exception catcher throwing an error on finishing a transaction. PR #210
- Fix Sequel instrumentation overriding existing logic from extensions. PR #209
- Fix configuration load order regression for the
APPSIGNAL_PUSH_API_KEY
environment variable's activation behavior. PR #208
- Add
Appsignal.instrument_sql
convenience methods. PR #136 - Use
Appsignal.instrument
internally instead of ActiveSupport instrumentation. PR #142 - Override ActiveSupport instrument instead of subscribing. PR #150
- Remove required dependency on ActiveSupport. Recommended you use
Appsignal.instrument
if you don't needActiveSupport
. PR #150 #142 - Use have_library to link the AppSignal extension
libappsignal
. PR #148 - Rename
appsignal_extension.h
toappsignal.h
. Commit 9ed7c8d83f622d5a79c5c21d352b3360fd7e8113 - Refactor rescuing of Exception. PR #173
- Use GC::Profiler to track garbage collection time. PR #134
- Detect if AppSignal is running in a container or Heroku. PR #177 #178
- Change configuration load order to load environment settings after
appsignal.yml
. PR #178 - Speed up payload generation by letting the extension handle it. PR #175
- Improve
appsignal diagnose
formatting and output more data. PR #187 - Remove outdated
appsignal:diagnose
rake tasks. Useappsignal diagnose
instead. PR #193 - Fix JavaScript exception without names resulting in errors themselves. PR #188
- Support namespaces in Grape routes. PR #189
- Change STDOUT output to always mention "AppSignal", not "Appsignal". PR #192
appsignal notify_of_deploy
refactor.--name
will override any othername
config.--environment
is only required if it's not set in the environment. PR #194- Allow logging to STDOUT. Available for the Ruby gem and C extension. The
appsignal-agent
process will continue log to file. PR #190 - Remove deprecated methods. PR #191
- Send "ruby" implementation name with version number for better identifying different language implementations. PR #198
- Send demonstration samples to AppSignal using the
appsignal install
command instead of asking the user to start their app. PR #196 - Add
appsignal demo
command to test the AppSignal demonstration samples instrumentation manually and not just during the installation. PR #199
- Support blocks arguments on method instrumentation. PR #163
- Support
APPSIGNAL_APP_ENV
for Sinatra. PR #164 - Remove Sinatra install step from "appsignal install". PR #165
- Install Capistrano integration in
Capfile
instead ofdeploy.rb
. #166 - More robust handing of non-writable log files. PR #160 #158
- Cleaner internal exception handling. PR #169 #170 #171 #172 #173
- Support for mixed case keywords in sql lexing. appsignal/sql_lexer#8
- Support for inserting multiple rows in sql lexing. appsignal/sql_lexer#9
- Add session_overview to JS transaction data. Commit af2d365bc124c01d7e9363e8d825404027835765
- Fix SSL certificate config in appsignal-agent. PR #151
- Remove mounted_at Sinatra middleware option. Now detected by default. PR #146
- Sinatra applications with middleware loading before AppSignal's middleware would crash a request. Fixed in PR #156
- Fix argument order for
record_event
in the AppSignal extension
- Output AppSignal environment on
appsignal diagnose
- Prevent transaction crashes on Sinatra routes with optional parameters
- Listen to
stage
option to Capistrano 2 for automatic environment detection - Add
appsignal_env
option to Capistrano 2 to set a custom environment
- Add method to discard a transaction
- Run spec suite with warnings, fixes for warnings
- Bugfix for problem when requiring config from installer
- Host metrics is now enabled by default
- Beta of minutely probes including GC metrics
- Refactor of param sanitization
- Param filtering for non-Rails frameworks
- Support for modular Sinatra applications
- Add Sinatra middleware to
Sinatra::Base
by default - Allow a new transaction to be forced by sinatra instrumentation
- Allow hostname to be set with environment variable
- Helpers for easy method instrumentation
Appsignal.instrument
helper to easily instrument blocks of coderecord_event
method to instrument events without a start hooksend_params
is now configurable via the environment- Add DataMapper integration
- Add webmachine integration
- Allow overriding Padrino environment with APPSIGNAL_APP_ENV
- Add mkmf.log to diagnose command
- Allow for local install with bundler
bundle exec rake install
- Listen to
stage
option to Capistrano 3 for automatic environment detection - Add
appsignal_env
option to Capistrano 3 to set a custom environment
- Bugfix in CPU utilization calculation for host metrics
- Support for adding a namespace when mounting Sinatra apps in Rails
- Support for negative numbers and ILIKE in the sql lexer
- Catch nil config for installer and diag
- Minor performance improvements
- Support for arrays, literal value types and function arguments in sql lexer
- Handle out of range numbers in queue length and metrics api
- Use Dir.pwd in CLI install wizard
- Support bignums when setting queue length
- Support for Sequel 4.35
- Add env option to skip errors in Sinatra
- Fix for queue time calculation in Sidekiq (by lucasmazza)
- Restart background thread when FD's are closed
- Beta version of collecting host metrics (disabled by default)
- Hooks for Shuryoken
- Don't add errors from env if raise_errors is off for Sinatra
- Fix for race condition when creating working dir exactly at the same time
- Make diag Rake task resilient to missing config
- Require json to fix problem with using from Capistrano
- Make logging resilient for closing FD's (daemons gem does this)
- Add support for using Resque through ActiveJob
- Rescue more exceptions in json generation
- Generic Rack instrumentation middleware
- Event formatter for Faraday
- Rescue and log errors in transaction complete and fetching params
- Support for null in sql sanitization
- Add require to deploy.rb if present on installation
- Warn when overwriting already existing transaction
- Support for x86-linux
- Some improvements in debug logging
- Check of log file path is writable
- Use bundled CA certs when installing agent
- Better debug logging for agent issues
- Fix for exception with nil messages
- Fix for using structs as job params in Delayed Job
- Fix for issue where Appsignal.send_exception clears the current transaction if it is present
- Rails 3.0 compatibility fix
- Bug fix in notify of deploy cli
- Better support for nil, true and false in sanitization
- Collect global metrics for GC durations (in beta, disabled by default)
- Collect params from Delayed Job in a reliable way
- Collect perams for Delayed Job and Sidekiq when using ActiveJob
- Official Grape support
- Easier installation using
bundle exec appsignal install
Yanked
- Another multibyte bugfix in sql sanizitation
- Bugfix in sql sanitization when using multibyte utf-8 characters
- Improved sql sanitization
- Improved mongoid/mongodb sanitization
- Minor performance improvements
- Better handling for non-utf8 convertible strings
- Make gem installable (but not functional) on JRuby
- Make working dir configurable using
APPSIGNAL_WORKING_DIR_PATH
or:working_dir_path
- Fix bug in completing JS transactions
- Make Resque integration robust for bigger payloads
- Message in logs if agent logging cannot initialize
- Call
to_s
on DJ id to see the id when using MongoDB
- Bug fix in format of process memory measurements
- Event formatter for
instantiation.active_record
- Rake integration file for backwards compatibility
- Don't instrument mongo-ruby-driver when transaction is not present
- Accept method calls on extension if it's not loaded
- Fix for duplicate notifications subscriptions when forking
- Fix for bug in gem initialization when using
safe_yaml
gem
- New version of event formatting and collection
- Use native library and agent
- Use API V2
- Support for Mongoid 5
- Integration into other gems with a hooks system
- Lots of minor bug fixes and improvements
- Improve Sinatra support
- Support ActiveJob wrapped jobs
- Improve proxy support
- Improve rake support
- Add Padrino support
- Add Rake task monitoring
- Add http proxy support
- Configure Net::HTTP to only use TLS
- Don't send queue if there is no content
- Don't retry transmission when response code is 400 (no content)
- Don't start Resque IPC server when AppSignal is not active
- Display warning message when attempting to send a non-exception to
send_exception
- Fix capistrano 2 detection
- Fix issue with Sinatra integration attempting to attach an exception to a transaction that doesn't exist.
- Sanitizer will no longer inspect unknown objects, since implementations of inspect sometimes trigger unexpected behavior.
- Reliably get errors in production for Sinatra
- Fix for binding bug in exceptions in Resque
- Handle invalidly encoded characters in payload
- Fix for infinite attempts to transmit if there is no valid api key
- Add frontend error catcher
- Add background job metadata (queue, priority etc.) to transaction overview
- Add APPSIGNAL_APP_ENV variable to Rails config, so you can override the environment
- Handle http queue times in microseconds too
- Add option to override Job name in Delayed Job
- Use
APPSIGNAL_APP_NAME
andAPPSIGNAL_ACTIVE
env vars in config - Better Sinatra support: Use route as action and set session data for Sinatra
- Add Sequel gem support (https://github.com/jeremyevans/sequel)
- Make
without_instrumentation
thread safe
- Support Ruby 1.9 and up instead of 1.9.3 and up
- If APP_REVISION environment variable is set, send it with the log entry.
- Allow a custom request_class and params_method on Rack instrumentation
- Loop through env methods instead of env
- Add HTTP_CLIENT_IP to env methods
- Improved inter process communication
- Retry sending data when the push api is not reachable
- Our own event handling to allow for more flexibility and reliability when using a threaded environment
- Resque officially supported!
- Add config option to skip session data
- Don't shutdown in
at_exit
- Debug log about missing name in config
- Add REQUEST_URI and PATH_INFO to env params allowlist
- Shut down all operations when agent is not active
- Separately rescue OpenSSL::SSL::SSLError
- Bugfix in event payload sanitization
- Bugfix in event payload sanitization
- Remove ActiveSupport dependency
- Use vendored notifications if ActiveSupport is not present
- Update bundled CA certificates
- Fix issue where backtrace can be nil
- Use Appsignal.monitor_transaction to instrument and log errors for custom actions
- Add option to ignore a specific action
- Convert to primitives before sending through pipe
Yanked
- Log Rails and Sinatra version
- Resubscribe to notifications after fork
- Log if appsignal is not active for an environment
- Log Ruby version and platform on startup
- Log reason of shutting down agent
- Some debug logging tweaks
- Add option to override Capistrano revision
- Expanded deploy message in Capistrano
- Refactor of usage of Thread.local
- Net::HTTP instrumentation
- Capistrano 3 support
- Exception logging in agent thread
- Few tweaks in logging
- Clarify Appsignal::Transaction.complete! code
- Random sleep time before first transmission of queue
- Workaround for frozen string in Notification events
- Require ActiveSupport::Notifications to be sure it's available
- Skip enqueue, send_exception and add_exception if not active
- Bugfix: Don't pause agent when it's not active
Yanked
- Explicitly require securerandom
- Dup process action event to avoid threading issue
- Rescue failing inspects in param sanitizer
- Add option to pause instrumentation
- Resque support (beta)
- Support tags in Appsignal.send_exception
- Alias tag_request to tag_job, for background jobs
- Skip sanitization of env if env is nil
- Small bugfix in forking logic
- Don't send params if send_params is off in config
- Remove --repository option in CLI
- Name option in appsignal notify_of_deploy CLI
- Don't call to_hash on ENV
- Get error message in CLI when config is not active
- Don't require revision in CLI notify_of_deploy
- Skip session sanitize if not a http request
- Use appsignal_config in Capistrano as initial config
- Restart thread when we've been forked
- Only notify of deploy when active in capistrano
- Make sure env is a string in config
- Bugfix in Delayed Job integration
- appsignal prefix when logging to stdout
- Log to stdout on Shelly Cloud
- Fix in monitoring of queue times
- Support for background processors (Delayed Job and Sidekiq)
- Better support for forking webservers
- Mayor refactor and cleanup
- New easier onboarding process
- Support for Rack apps, including experimental Sinatra integration
- Monitor HTTP queue times
- Always log to stdout on Heroku
- Send HTTP_X_FORWARDED_FOR env var
- Add Appsignal.add_exception
- Fix bug where fast requests are tracked with wrong action
- More comprehensive debug logging
- Use a mutex around access to the aggregator
- Bugfix for accessing connection config in Rails 3.0
- Add Appsignal.tag_request
- Only warn if there are duplicate push keys
- Bugfix in backtrace cleaner usage for Rails 4
- Bugfix in Capistrano integration
- Support for Rails 4
- Data that's posted to AppSignal is now gzipped
- Add Appsignal.send_exception and Appsignal.listen_for_exception
- We now us the Rails backtrace cleaner
- Fix minor bug
- Debug option in config to get detailed logging
- Fix minor bug
- General improvements to the Rails generator
- Log to STDOUT if writing to log/appsignal.log is not possible (Heroku)
- Handle the last transactions before the rails process shuts down
- Require 'erb' to enable dynamic config