What you get

  • Service map

    Services and the calls between them, built from your traces, with latency and errors on each service. Open a service to see its endpoints and dependencies.

  • Trace waterfall and flame graph

    Read one trace as a timeline of spans, or as a flame graph that shows which calls made up the total duration.

  • Trace search

    Query traces across services in the trace browser or with SQL in Data Explorer, and open any result in the waterfall.

  • Logs next to traces

    Log lines that carry a trace ID link straight to their trace, so you can go from an error message to the request that caused it.

  • Service catalogue

    The Applications page lists every service that reports traces, with health, ownership and tags, so missing or new services are easy to spot.

    Documentation
  • Custom method rules

    Add spans for your own classes and methods from the Java agent configuration, without changing application code.

What the Java agent instruments

The agent attaches with -javaagent and instruments these libraries automatically. Context is carried across thread pools, so asynchronous work stays in the same trace.

AreaCovered
Inbound HTTPServlet containers and Spring Web MVC
Outbound HTTPApache HttpClient 4 and 5, OkHttp 3, the JDK 11+ HttpClient
DatabasesJDBC
MessagingKafka producers and consumers
ConcurrencyExecutor tasks (Runnable and Callable)
Your codeCustom rules for chosen classes and methods

How data gets in

  1. 01

    Java services

    Download the agent from Resources and add it to the JVM start command, with your backend URL, API key and service name as agent arguments.

    java -javaagent:/opt/verops/verops-java-agent.jar=backendUrl=https://app.verops.io,apiKey=$VEROPS_API_KEY,serviceName=checkout-api -jar app.jar
  2. 02

    Any other language

    Use the OpenTelemetry SDK for your language, or an OpenTelemetry Collector, and export OTLP over HTTP to ingest.verops.io.

  3. 03

    Name your services

    Set the service.name resource attribute. VerOps uses it, together with host and Kubernetes attributes, to place traces on the right service, host and pod.

Limits worth knowing

  • The VerOps Java agent needs Java 11 or later. For other runtimes, use OpenTelemetry instrumentation.
  • There is no continuous CPU or memory profiler. Performance analysis is span-based.
  • The public ingest endpoint accepts OTLP over HTTP. To send gRPC, run your own OpenTelemetry Collector and forward over HTTP.

Try it on your own systems

Create a workspace, or tell us about your environment and we will walk you through it.