Fix job corruption in Que 0.x
Fixed
- Fix Que jobs being corrupted on enqueue when using Que 0.x. This was introduced in version 4.9.0. Que 1 and Que 2 were not affected.
View the Ruby gem v4.9.1 changelog for more information.
Improving AppSignal, one deploy at a time.
View the Ruby gem v4.9.1 changelog for more information.
Improve Faraday support. AppSignal now instruments Faraday requests automatically, without double-instrumenting the underlying HTTP client. Turn it off with the instrument_faraday option. Read more in our Faraday integration docs.
Add config options to turn individual integrations off. Set
instrument_sidekiq, instrument_shoryuken, instrument_que,
instrument_resque, instrument_delayed_job, instrument_active_job,
instrument_excon or instrument_mongo to false to disable that
integration entirely. This turns off both the instrumentation of the jobs or
requests and the enqueue instrumentation for that integration. They all
default to true. Each can also be set through its environment variable, such
as APPSIGNAL_INSTRUMENT_SIDEKIQ.
Instrument background job enqueues. Enqueuing a job now records an enqueue
event on the active transaction, so enqueues made from within a web request or
another job show up in the event timeline. This is recorded for Sidekiq
(enqueue.sidekiq), Que (enqueue.que, plus bulk_enqueue.que for bulk
enqueues on Que 2), Resque (enqueue.resque), Shoryuken (enqueue.shoryuken)
and Delayed Job (enqueue.delayed_job). Each event is titled after the job
being enqueued.
For Active Job, the enqueue.active_job event is now recorded by AppSignal's
own instrumentation rather than by Rails' native enqueue.active_job
notification. The native notification is suppressed so the enqueue is recorded
once, and the event is now titled after the job being enqueued.
These enqueue events can be turned off with the
enable_job_enqueue_instrumentation config option. Set it to false to stop
recording enqueue events across all integrations, without affecting the
instrumentation of the jobs themselves. It defaults to true and can also be
set through the APPSIGNAL_ENABLE_JOB_ENQUEUE_INSTRUMENTATION environment
variable.
Report the grape gem version in the environment metadata. For more information, see our environment metadata docs.
HTTP.follow.get(...), HTTP.headers(...).get(...), and so on -- go
through HTTP::Session rather than HTTP::Client, and were not being recorded.
They now produce a request.http_rb event like any other request.View the Ruby gem v4.9.0 changelog for more information.
Fix host-metrics leaking zombie [timeout] processes in Alpine linux containers.
Before this release AppSignal agent relied on a proper init process that reaps child processes killed by system timeout. Now the agent terminates and reaps unresponsive child processes in host-metrics collection and a subreaper is no longer required.
View the Ruby gem v4.8.6 changelog for more information.
cattr, tags, retry_for and unique_for) from the tags reported for Sidekiq jobs.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.View the Ruby gem v4.8.5 changelog for more information.
http (http.rb) gem version 6.0.0 and higher.View the Ruby gem v4.8.4 changelog for more information.
default_tags configuration option. Tags set in this configuration option will be set for all transactions.View the Ruby gem v4.8.3 changelog for more information.
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.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.View the Ruby gem v4.8.2 changelog for more information.
enable_active_support_event_log_reporter configuration option by default.View the Ruby gem v4.8.1 changelog for more information.
ActiveSupport::EventReporter) as logs.View the Ruby gem v4.8.0 changelog for more information.
config/application.rb or one of the environments in config/environments/.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.View the Ruby gem v4.7.5 changelog for more information.
Handle transactions without errors in CodeOwnership integration. AppSignal will not emit an error log line if a transaction has no error.
Thanks @fatkodima for your contribution!
View the Ruby gem v4.7.4 changelog for more information.
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:
logger = Appsignal::Logger.new("gruop")
logger.info("message")Handle unowned files in CodeOwnership gem integration. AppSignal will not emit an error log line if no Team can be found for a backtrace.
Thanks @fatkodima for your contribution!
View the Ruby gem v4.7.3 changelog for more information.
View the Ruby gem v4.7.2 changelog for more information.
Add support for the CodeOwnership gem, which allows engineering teams to declare ownership of specific parts of a codebase.
When an error is reported, the AppSignal gem will tag the transaction with the owner of the file that caused the error.
This feature is enabled by default. To disable it, set the instrument_code_ownership configuration option to false.
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.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.
View the Ruby gem v4.7.1 changelog for more information.
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.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:
use Rack::Events, [Appsignal::Rack::EventHandler.new]And replace it with the following line:
use Appsignal::Rack::EventMiddlewareAvoid 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.
View the Ruby gem v4.7.0 changelog for more information.
REVISION file in the deployed application, AppSignal will now use that to set the revision config.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.
# Example scenario
Appsignal.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" }
}View the Ruby gem v4.6.0 changelog for more information.
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.
View the Ruby gem v4.5.17 changelog for more information.
View the Ruby gem v4.5.16 changelog for more information.
nginx_port configuration option. This configuration option can be used to customize the port on which the AppSignal integration exposes the NGINX metrics server.View the Ruby gem v4.5.15 changelog for more information.
View the Ruby gem v4.5.14 changelog for more information.
Free for 30 days. No credit card. Two-minute install.
Need help or have a feature request? Talk to a real engineer. Not a bot, not a ticket queue.
AppSignal is built by a small, dedicated team spread across the world. We love stroopwafels. If you do too, let us know. We might send you some.