A New (and Beautiful) Way to View Server Errors

 ● 01st Oct 2014

3 min read

Here at OverOps we’re in the error tracking business. Each day we track more than 500,000 errors coming from hundreds of different companies. Errors across different machines, multithreaded errors, errors involving 3rd party libraries, you name it. Our goal building OverOps was to track code that led to errors and slowdowns. We dreamed of a place where we could view information that was not available before, even in log files.

Dreams Do Come True – Our New Errors Viewer

OverOps records variable values as they were in each frame of the stack. We were looking for a way to allow users to easily scan the stack and spot the variables that caused the error. How cool would it be, we thought, if we could scan the code that led to an error with a single scroll? Pretty cool. So we built it – A new way to view server errors:

rec1

Looking Inside the Monster

On the left of this new screen you can see the call stack that led to an exceptions or a logged error (screenshot below). Frames with a glasses icon represent frames with recorded variables. To reduce noise, OverOps only records variable values that might have led to the error. Frames marked with a pencil icon contain code that was recently modified. Since new bugs often crawl out of new code, highlighting these parts can help tracking them.

If one machine invoked an API call on another machine which caused an error, you’ll be able to see the entire path. The cross-machine analysis works if you’re sending an HTTP request using Java’s standard APIs or any popular 3rd party library.

The stack trace

The Prime Suspects

Scooting over to the right – the prime suspects. Here you can see your code and get the exact variable values that led to each error as they were when it happened. Quickly scroll over all the methods that led to the error. Recorded variables are highlighted and when hovering you can see the variable value as it was at the moment of the error. If it’s a complex object with fields, you can view them as well.

How do we display code? To provide max security for source code, OverOps encrypts the user’s code using a 256-bit secret AES key that can be generated locally.

The code and variables

The Rest is History

If this exception happened more than once you can toggle between different recordings and compare the stack and variable values. For exceptions that happen dozens, hundreds, thousands or millions of times, we limit the recordings to a few dozen in order to keep the overhead minimal.

History

Learn more here.

This post is now in Spanish.

Iris is one of OverOps' co-founders and served as VP Product during her time with the company. Her main interests are creative products, data driven marketing and nitpicking small UX details.

Troubleshooting Apache Spark Applications with OverOps OverOps’ ability to detect precisely why something broke and to see variable state is invaluable in a distributed compute environment.
Troubleshooting Apache Spark Applications with OverOps

Next Article

The Fastest Way to Why.

Eliminate the detective work of searching logs for the Cause of critical issues. Resolve issues in minutes.
Learn More