Skylight Agent 1.4 Released
We're pleased to announce the release of version 1.4 of the Skylight agent today. This release has a number of improvements and some exciting new features! Read on to learn more, or skip to the good stuff and update your Gemfile.
Rack Middleware Instrumentation
The most significant new feature in this release is instrumentation of Rack middleware. In the past, it's been somewhat common to see a big chunk of time spent in
rack.request. This indicates time spent in Rack and middleware that takes place both before and after your main Rails action. Unfortunately, the way that this appeared in an event sequence sometimes made it hard to figure out exactly what you could do to make part of your request faster.
The 1.4 release adds instrumentation for your Rails middleware, which means that we now break down the middleware in your event sequence into individual sections, in an effort to give you more insight into which middleware are slow.
It's common to have quite a few middleware in a request. Any middleware that isn't taking up a significant portion of the overall time of a request is hidden by default. If you want to see every middleware, you can uncheck the "Condense Trace" checkbox.
That's probably more than you usually want to see, but it's all there!
Rack Endpoint Naming
Until now, all requests that weren't handled by a Rails action were grouped together under the "Rack" endpoint name. This "Rack" endpoint, while not entirely useless, was sometimes confusing, especially since it could include requests handled by a number of different middleware.
As part of the middleware instrumentation, we now split these requests up by the name of the middleware that handled them. We're still instrumenting all the same requests as before, but the aggregate data should be a lot more useful separated out in this fashion.
NOTE: If you're currently ignoring heartbeat requests handled by a middleware, you'll need to update your settings to match the name of the middleware instead of just using "Rack".
ActiveRecord Instantiation Instrumentation
Up until this release, we've only tracked the time that ActiveRecord spends in making database queries. However, in some cases, a significant amount of time may be spent in just instantiating the record instances themselves. In these cases, you'll see an item in the Event Sequence.
NOTE: The full benefits of this are only available in newer versions of Rails.
But Wait, There's More!
- Faraday Instrumentation: HTTP requests made with Faraday will now show up in your Event Sequence. Just add
faradayto your probes list.
- Increased number of items tracked in a request: In some cases, very complex requests were ignored by our agent. We've increased the number of events that we'll track before ignore.
- More control over Skylight::Middleware positioning: To provide you with the most detail possible, Skylight attempts to insert its middleware at the top of the stack. However, in some exceptional cases this may not be appropriate. We've added some configuration to make this easier to change.
- Experimental FreeBSD Support: We've now got preliminary support for FreeBSD. As far as we know, it works, but our real-world testing has been quite limited. Let us know if you try it out!