Python Application Monitoring: comparing New Relic and Opbeat

December 03 Bullet_white By Derek Bullet_white

There are several options for monitoring Python web apps (New Relic, Opbeat, AppDynamics, and DataDog to name a few). Let's take a look at two with a contrasting approach: New Relic and Opbeat. I'll focus on the 2 highly-used areas of an APM solution: the app overview and transaction details.

Sidenote: we're adding Python app monitoring to Scout. You can signup for early access.

App Overview

Below is the initial page you see when checking on the health of your Python app:

app overview

The contrast in breadth is clear when looking at the app overview page. New Relic has a denser display while Opbeat has a clean, polished look.

Some thoughts:

  • The overview chart - I like New Relic's approach, which breaks down average time spent by tier (ex: web services, database, etc). Averages aren't the perfect way to judge your app's health, but there isn't a great alternative to display response times by tier without using averages. This is important as many performance issues are isolated to a single tier.
  • Timeframes - As far as I can tell, you can only pick the most recent hour or 24 hours with OpBeat. New Relic gives more flexibility on the timeframe window and always access to historical data.

Transaction Details

There are significant differences between how New Relic and OpBeat display details on a particular web endpoint:

Transaction Detail

Some of the key differences:

  • The breakdown - Opbeat lets you view an aggregate trace of requests across different response times. This can make it easier to eyeball what changes between slow requests and normal requests.
  • Backtraces - Opbeat provides the backtrace to every function call in the breakdown. This makes it significantly easier to track down and fix bottlenecks.
  • Transaction traces - New Relic provides transaction traces, which is a record of an individual request. Opbeat does not. A single transaction trace can be very useful because you can view the context around it (the user that triggered it, the time of day, the app server it occur ed on, etc). It's very common to see slow requests that are triggered only under specific conditions.
  • Breakdown style - New Relic orders the breakdown by most time-consuming function call while OpBeat presents a waterfall breakdown, organized by when each call occurs. I prefer New Relic's approach: I'm generally focused on reducing the total time of the request and the largest consumer is always at the top. I find there's less noise to dig through.

Signup for early access

We're adding Python app monitoring to Scout. You can signup for early access.

Get notified of new posts.

Once a month, we'll deliver a finely-curated selection of optimization tips to your inbox.