The Error Analysis screen provides a powerful mechanism to get to the root cause of errors and exceptions in production and staging environments. The page is divided into three panes, that provide information about the event creating a complete picture of the cause and impact of the event.
The Error Analysis screen
The Analytics pane is located on the top left of the page, and displays important details relating to the impact of the error in the application. You can find the type of the error, when it was first seen, the server/application it occurred in, and how many times it has been detected.
The Error Graph is located at the top of the page and it provides the context for the event by displaying its tendencies across servers/applications in a specific timeframe. Learn more about the Error Analysis Graph.
Click the JVM or Server labels to view the error volume specific to the machine or application directly. Hovering over the occurrences label displays the number of times this error has occurred and out of how many calls into the method containing it.
Click Open in Dashboard at the top right corner to open and select this event in the OverOps main dashboard. Click Go to snapshot on any point in the graph to jump to the code and view the current variable state.
The graph presenting the volume of the error
The Call Stack pane displays the chain of methods within the JVM leading to the event. The first method in line is the last method on a non 3rd party code within your application. The icon in the method signifies that the variable state has been detected by the JVM micro-agent.
When an exception is detected and re-thrown once or more within the thread, Related Errors drop-down displays the error analysis (available only if such exceptions exist).
At the bottom of the stack the machine name and the JVM thread name in which this error occurred appear. 3rd party code is hidden by default and shown by switching ON Show 3rd party methods at the bottom of the stack. Use COPY STACK to copy the full stack to the clipboard.
The Call Stack pane
The Source Code View shows by default a decompiled Java version of the bytecode executing within the JVM at the moment of error. Hover over any highlighted variable to display its value and jump to see its full contents within the variable grid. The line in which the error occurred is highlighted as depicted below.
The Source Code and Recorded Variables pane
The full error message appears in the title of the code pane.
When configured, OverOps use the original source code instead of decompiling it from the JVM.
Search the source code or variable grid for any variable name or value using Search Variables. Click here to learn more about variable search.
The Recorded Variables shows the variable values and objects accessible from the method. Objects can be explored up to five levels deep into the code. Click the button that appears when hovering over the object, to view its contents as a JSOB, that can be copied to the clipboard.
The Recorded Variables pane contains all local variables and parameters (including "this" in non-static methods). The first method also contains thread-local variables defined for this thread as well as SLF4J and Log4J Mapped Diagnostics Context (MDC) values.
The choice of the collected variables most relevant within an allocated timeframe is determined by the micro-agent using an adaptive machine learning algorithm. The selection includes which and how many variable to collect, the number of items to collect, the length of string to capture, etc.
Click here to learn more about object and variable state.
Recorded Variables displaying the variables state within the current method as well as thread local variables
The JSON representation of the object
The Log View displays the last 250 log statements leading up to the event. Since the log statements are collected directly from JVM memory, any DEBUG, TRACE or INFO statements are visible regardless of whether or not they were logged to file.
Click the button to switch between code and log view.
Click here to learn more about the Log View.
The Log View pane showing the last 250 log statements leading to this error.
For each error and exception detected, OverOps displays a JVM view that displays the internal JVM state at the moment of the error, including memory usage (heap and non-heap), basic system information, CPU usage and much more. This enables working with the OverOps code (“classic”), log and JVM data without leaving the application. Click here to learn more about the JVM View.
The Actions toolbar provides a set of capabilities to share, mark and search through the error analysis contents:
- Send to JIRA - Enables you to create new Jira issues for an error linking directly to the source, stack, state and statistics. Click here to learn more about Jira integration.
- Hide - Marks an error with 'Hide', meaning it will no longer appear in dashboard event list and chart. Furthermore, the micro-agents will no longer capture error analysis snapshots. The error will appear under the "Archive" label in the dashboard where it can be unhidden. Click here to learn more about hiding errors.
- Resolve - Marks an error as 'Resolved', meaning it has been fixed and will be removed from the dashboard's event list and chart. However, should this error occur after a new code deployment, it will be tagged as 'Resurfaced', you will receive an email notification, and it will return to the event list and chart. Click here to learn more about resolving errors.
- Label - Adds a label to an error. Labels are a great tool for classifying and tagging errors with tags such as 'Critical' or 'Low' to assign priority, 'John' or 'QA' to assign responsibility, or 'V1 RC2' to denote a version. Click here to learn more about creating and assigning labels.
- Add/Edit Note - Enables you to attach a note to an error and share it with your teammates alerting them by email. Click here to learn more about sharing with teammates.
Add Timer - Enables you to track predefined methods for latency. OverOps alerts when the code runs longer than expected. Click here to learn more about Timers.