Exclude more Sidekiq internal job attributes (cattr, tags, retry_for and unique_for) from the tags reported for Sidekiq jobs.
Fixed
Continue reporting non-disk host metrics when a mount is frozen.
Prevent a NoMethodError in the Active Job, Rake, Sidekiq, Delayed Job, and WebMachine instrumentations when the creation of an AppSignal transaction is interrupted by process shutdown signals.
Log where Appsignal.configure is called. When a warning is emitted about Appsignal.configure being called from an application where config/appsignal.yml or config/appsignal.rb exist, log the location from which Appsignal.configure was called alongside the location of the configuration file.
Fixed
Fix the bundle exec appsignal install CLI command on Ruby 4 by removing the dependency on the ostruct gem, which is no longer part of the standard library.
Fix an issue with loggers not supporting a formatter on Rails boot. This will prevent the AppSignal logger config from running into an error if the logger configuration is added to config/application.rb or one of the environments in config/environments/.
Do not log long (error) messages to the internal AppSignal log. If an error like ActionController::BadRequest occurred and the error message contained the entire file upload, this would grow the appsignal.log file quickly if the error happens often. Internal log messages are now truncated by default.
Detect the log format automatically. We now detect if a log line is in the JSON, Logfmt or plaintext formats. No further config needed when calling our logger, like so:
Fix sample data not being reported for JRuby applications. Data like tags, parameters, session data, etc. would not be set if a transaction was sampled.
Do not patch Rack::Events when using recent Rack versions. When using versions 3.2.1 and above,
which contain a fix for the bug where using Rack::Events breaks requests with streaming bodies,
use Rack::Events directly, instead of our patched subclass.
Fixed
Fix Rails version detection when only one of Rails's gems is present.
This prevents loading errors when non-Rails code defines a Rails constant without the full Rails framework.
Add Sidekiq worker-level job status metric: worker_job_count. This new counter metric's status tag will be processed for each job that's processed and reports another counter with the failure status if the job encountered an error.
Fixed
Support streaming bodies. AppSignal's Rack instrumentation now supports streaming bodies in responses, such as those produced by Async::Cable. This fixes an issue where AppSignal's Rack instrumentation would cause requests with streaming bodies to crash.
If you use our Rack instrumentation through a framework that is automatically instrumented by AppSignal, such as Rails, Hanami, Padrino or Sinatra, this fix is applied automatically.
If your application instruments Rack manually, you must remove the following line from your application's initial setup:
Ruby
use Rack::Events, [Appsignal::Rack::EventHandler.new]
And replace it with the following line:
Ruby
use Appsignal::Rack::EventMiddleware
Avoid instrumenting Rails when AppSignal is not active. If AppSignal is configured to start when the Rails application loads, rather than after it has initialised, only add Rails' instrumentation middlewares if AppSignal was actually started.
Add Sorbet and RBS type signatures for the gem's public APIs. If your editor supports showing type signatures, they will now show up in for the AppSignal Ruby gem.
When a deployment tool (Capistrano, Hatchbox.io) provides the REVISION file in the deployed application, AppSignal will now use that to set the revision config.
Changed
Improve the YARD documentation for public APIs. This will make the documentation clearer and more useful for developers using the Ruby gem. Private APIs have been hidden from the generated output.
When an error occurs while initializing AppSignal or when running a probe, use the error log level to log the error's backtrace.
Fixed
When a Hash-like value (such as ActiveSupport::HashWithIndifferentAccess or Sinatra::IndifferentHash) is passed to a transaction helper (such as add_params, add_session_data, ...) it is now converted to a Ruby Hash before setting it as the value or merging it with the existing value. This allows Hash-like objects to be merged, instead of logging a warning and only storing the new value.
Ruby
# Example scenarioAppsignal.add_params(:key1 => { :abc => "value" })Appsignal.add_params(ActiveSupport::HashWithIndifferentAccess.new(:key2 => { :def => "value" }))# Params{ :key1 => { :abc => "value" }, # Keys from HashWithIndifferentAccess are stored as Strings "key2" => { "def" => "value" }}
When an Appsignal::Logger uses .broadcast_to to broadcast messages to other loggers, broadcast those messages even if the log level of those messages is lower than the logger's threshold. This allows other loggers to set their own logging thresholds.
When the logger is silenced, messages below the silencing threshold are not broadcasted to other loggers.
When an Appsignal::Logger uses .broadcast_to to broadcast messages to other loggers, broadcast the original message received by the logger, without formatting it or converting it to a string.
Call the Appsignal::Logger formatter with the original message object given, rather than converting it to a string before calling the formatter.
When an error is passed to an Appsignal::Logger as the message, format it regardless of the logging level. Previously it would only be formatted when passed to #error.
Ignore Errno::ECONNRESET errors in the Rack wrapper.
Add nginx_port configuration option. This configuration option can be used to customize the port on which the AppSignal integration exposes the NGINX metrics server.
Resolve problems with transactions not being properly closed when using libraries that change Fibers during the transactions. Previously, completed transactions would be attempted to be reused when creating a transaction, when the Fiber would be switched during a transaction.
Fix a config error log message when the config is not active and should not validate the config.
Don’t let the bad bugs bite. Try AppSignal for free.
AppSignal offers a 30-day free trial, no credit card is required. All features are available in all plans. Start monitoring your application in just a few clicks!