PlainApm for Ruby

PlainAPM monitors your Rails application and helps you understand changes in its performance.

Installation

Add this line to your application's Gemfile:

gem 'plain_apm'

And then execute:

bundle install

Or install it yourself as:

gem install plain_apm

Ractor and TracePoint issues on Ruby 3.0

PlainAPM extension to track object allocation on a per-thread basis is built on top of Ruby's TracePoint API.

However, Rubies 3.0, 3.1, 3.2 and 3.3 as of January 2024 contain bugs which, when Tracepoints are used in together with Ractors, can cause crashes or inconsistent tracing results.

Build process for the native extension contains checks for presence of these bugs and disables object allocation tracing accordingly.

If you are sure your app is not using Ractors, you can override this by installing plain_apm with --enable-object-tracing-override flag:

gem install plain_apm -- --enable-object-tracing-override

When using bundler, you can configure it to pass this flag to gem install by running:

bundle config set --global build.plain_apm --enable-object-tracing-override

See also:

Usage

To be able to use the gem, collect, and view your app's performance metrics, request an APP key on plainapm web site and follow the installation instructions.

Contributing

Bug reports and pull requests are welcome on GitHub.

Alternatively, feel free to send questions, suggestions, and feedback to PlainAPM support.