- What is OverOps?
OverOps was built to help developers understand why their software is ‘misbehaving’ (exceptions, illegal states, thread latency). While notifying you there’s a problem with a server, and maybe pointing its location is nice, our mission in OverOps is different – we’re going deeper, much deeper, into the code. We want to tell you exactly which variables, conditions and objects in your code are causing the problem, in staging or production. You can read more about it here.
- Can OverOps run on multiple applications/JVMs on single server?
Sure, as long as you attach a OverOps agent to every app/JVM you bring up.
- I can’t always work online. Does OverOps have an offline option?
OverOps runs as a hosted SaaS application, or can be deployed fully on-premises (available to enterprise users).
- Where are your servers located?
We use AWS east, which is located in the US.
Which Exceptions and Errors Does OverOps Capture?
OverOps captures all exceptions: caught/uncaught, checked/unchecked. On the errors front, OverOps captures only AssertionError.
OverOps captures events in which the user’s code was involved. When capturing exceptions, it captures the method which threw the event, whether it’s the JVM that threw a NullPointerException access, or an explicit throw e statement. OverOps also captures events that belongs to the user (read about 3rd party code in OverOps) or any method belonging to the user between the throw and the catch.
Because OverOps is a native agent that hooks to the JVM, gaining access to the exception signal, it captures all exceptions, including those caught in the same method.
What Other Events Does OverOps Capture?
Other than exceptions, OverOps captures all logged warnings and errors generated from your application, usually stated as logger.error or LOG.warn. OverOps does that by adding bytecode instrumentation to all major logging framework, including Log4j, Log4J2, Logback, JUL, Akka logging and more.
OverOps also captures http errors if you explicitly call an HttpServletResponse.sendError.
Which Events Does OverOps Not Capture?
OverOps doesn’t capture events that are part of class loading mechanisms, as those are too sensitive to record. It also doesn’t capture all instances of your events, meaning that after several snapshots are gathered, OverOps only captures the statistics and start sampling our full snapshot evacuation to adhere to the minimum overhead.
This means that if an instance of Spring framework, which is considered 3rd party by default, throws an exception but catches it in the same method, that does not qualify as an event in OverOps.
Installation and Updates
- I am trying to install OverOps and facing an issue: “Sorry, user X is not allowed to execute '/opt/takipi/etc/takipi-setup-package...”. What can I do?
You need to have root access for your user to install OverOps .
- I’m having trouble with the installation, I'm trying to use OverOps for my NodeJS/Python/C#/etc. application…
OverOps was designed for JVM-based languages, such as Java, Scala, JRuby, Clojure… For more information about this, make sure you check out ‘compatibility link’.
- How do I upgrade OverOps to the newest version?
To upgrade, please click on "add servers" on the top bar of OverOps . You'll need to reinstall, and then restart your JVMs. No need to uninstall, as OverOps will automatically reinstall the new version.
- I need to update OverOps , but I’m afraid this would affect my JVM…
Don’t panic! OverOps will only be updated once the JVM is restarted, however you don't need to restart the JVM to update OverOps. Once you update your OverOps version, you can restart the JVM whenever you want to, and the OverOps micro-agent will update with the newest version.
- I’m sifting through my errors in the dashboard and think I’m seeing somebody else's data: I’m seeing errors in validateMovie and putMoviesInDb functions, one of the movies is Iron Man 3 according to the variable listing.
Please notice that when installing OverOps , your dashboard already arrives with two sample event, that are labeled accordingly (with a big purple ‘samples’ label). These event are there for new users to help understanding how to use OverOps. If you want, you can hide the events, so they won’t appear in the main view of the dashboard.
- I have an exception which is caught and handled correctly, and I want to mark it as such. What is the correct way?
OverOps allows users to hide errors, in situations exactly like this. This way OverOps will not capture or handle this exception going forward.
- I am trying to customize my dashboard to show me errors for just one JVM, but it doesn’t seems to save this view between sessions. Do I need to re-set this every time?
Not at all! OverOps allows users to customise preset filters, so that you can navigate quickly and comfortably between different views. Using the preset filters, you can make more elaborate filtering, combining several categories (i.e. error type, time frame, JVM/server…). To learn more about this, check out this article.
- Is there a way to find events by the message of the exception?
Yes, you can use the search tab in the upper-right corner of the dashboard.
The Error Analysis Screen
- Some fields in the variable table are without values. Why is that?
OverOps automatically redacts personal information. You can control the classes and code identifiers from the Settings\Security dialog from the app. You can find more information here.
- Is there a way to capture multiple stack traces at once, or do I have to capture them one at a time?
You can only view the entire call stack for the error or exception that you open, but notice that all the information is already gathered across all the events shown in your dashboard.
- Why does clicking on the tiny OverOps URL in the log file takes me to a different error than the one in the log?
OverOps knows how to relate between a logged event (log error/warning) and the exception that caused it. In order to help you reach the root cause quickly, upon clicking on a tiny URL in a logged event, you will be directed to the exception that caused it.
Settings and Configurations
- How can I make another team member an admin?
There can be only one admin per OverOps service. To change admins please contact us.
- How do I stop email alerts to a specific email?
Email alerts are per specific user. You have to log-in with that email and change the alert’s settings.
- How can I change the name of my server?
You can give names to both the JVM and the server. Check this out.
Security and Performance
- Is there a way to redact variables when they are stored in a java hashmap?
You can choose which variables to redact by using our PII redaction module (under settings-->security). To learn more make sure you check this out.
- I am scared to use this, looks like OverOps can see all my code, properties, etc…
OverOps can’t see your code, we only access the part of the code that is relevant to the exceptions and errors. And regardless, nothing ever leaves your server without first being encrypted with your own private key. We have many users that are running OverOps on their production, and with very sensitive information (banks, health care apps, etc). We also offer full on-premises solutions for our enterprise users. You can learn more about our security protocols here.
- On the exception I'm currently looking at, the number next to the target says 162 times, but the actual dropdown to select exception instances only has 49/49. Why is that?
This is one of the ways we keep our performance overhead so low. For each exception or error, we take snapshot of the code and state only for some of the occurrences of this event. We basically sample it, according to a certain algorithm - we will always capture it when it first happens, but it happens 1M time in the first hour, we will slow down and take a certain number of samples.