Now you can have visibility into what your FubuMVC application is doing at runtime. Think performance counters available for every route in your application.

FubuMVC.Instrumentation is a drop in bottle extension for the existing FubuMVC.Diagnostics. You will see a new tab appear just by dropping it in one of your existing application, so long as FubuMVC.Diagnostics is dropped in as well. You’ll see more of this in the months to come, but serves as a pretty decent example of what types of things you can do with Bottles.

Currently the instrumentation provides the following types of information per route.

  • Average execution time
  • Hit count (for as long as the application has been running)
  • Exception count
  • Exception frequency to indicate the percentage of errors vs. success
  • Min execution time
  • Max execution time

When drilling down into each route to see more details for the current chain.

  • Average execution time for each behavior
  • Snapshot of configured X number of requests, with further drill down details
  • Last 10 requests that had exceptions with exception details, again with further drill down on where the error occurred

Here’s a sample preview of what it looks like. You can pull down the code and run the sample yourself from the github repository. The nuget is now available on the private fubumvc nuget feed as well. On a side note, we’ve had some hiccups the last few days with the build server and most issues seem to be resolved, but if you run into problems have patience we’re working on it.

Instrumentation Routes

instrumentation routes

Instrumentation Route Details

instrumentation details

A big thanks to Jordan Zaerr, and Andrew Kharlamov for their hard work on OSS Friday afternoons.

Hopefully you find this as useful as we have. We immediately had visibility that we never had before and within a few days improved the overall performance of our application due to the new found visibility.

In a future post I will describe how we have leveraged this same bottle running inside the FubuMVC.SelfHost in our messaging applications.