LogoLogo
StackState.comDownloadSupportExplore playground
StackState v5.1
StackState v5.1
  • Welcome to the StackState docs!
  • StackState self-hosted v5.1 docs
  • Getting Started
  • 🚀Setup
    • Install StackState
      • Requirements
      • Kubernetes / OpenShift
        • Kubernetes install
        • OpenShift install
        • Required Permissions
        • Non-high availability setup
        • Override default configuration
        • Configure storage
        • Configure Ingress
        • Install from custom image registry
        • Migrate from Linux install
      • Linux
        • Before you install
        • Download
        • Install StackState
        • Install with production configuration
        • Install with development configuration
        • Install with POC configuration
        • Set up a reverse proxy
        • Set up TLS without reverse proxy
      • Initial run guide
      • Troubleshooting
    • Upgrade StackState
      • Steps to upgrade
      • Version specific upgrade instructions
      • StackPack versions
      • StackState release notes
    • StackState Agent
      • About StackState Agent V3
      • Docker
      • Kubernetes / OpenShift
      • Linux
      • Windows
      • Advanced Agent configuration
      • Use an HTTP/HTTPS proxy
      • Agent V1 (legacy)
      • Migrate Agent V1 to Agent V2
        • Linux
        • Docker
    • StackState CLI
      • CLI: sts
      • CLI: stac (deprecated)
      • Comparison between CLIs
    • Data management
      • Backup and Restore
        • Kubernetes backup
        • Linux backup
        • Configuration backup
      • Data retention
      • Clear stored data
  • 👤Use
    • Concepts
      • The 4T data model
      • Components
      • Relations
      • Health state
      • Layers, Domains and Environments
      • Perspectives
      • Anomaly detection
      • StackState architecture
    • StackState UI
      • Explore mode
      • Filters
      • Views
        • About views
        • Configure the view health
        • Create and edit views
        • Visualization settings
      • Perspectives
        • Topology Perspective
        • Events Perspective
        • Traces Perspective
        • Metrics Perspective
      • Timeline and time travel
      • Analytics
      • Keyboard shortcuts
    • Checks and monitors
      • Checks
      • Add a health check
      • Anomaly health checks
      • Monitors
      • Manage monitors
    • Problem analysis
      • About problems
      • Problem lifecycle
      • Investigate a problem
      • Problem notifications
    • Metrics
      • Telemetry streams
      • Golden signals
      • Top metrics
      • Add a telemetry stream
      • Browse telemetry
      • Set telemetry stream priority
    • Events
      • About events
      • Event notifications
      • Manage event handlers
    • Glossary
  • 🧩StackPacks
    • About StackPacks
    • Add-ons
      • Autonomous Anomaly Detector
      • Health Forecast
    • Integrations
      • About integrations
      • 💠StackState Agent V2
      • 💠AWS
        • AWS
        • AWS ECS
        • AWS X-ray
        • StackState/Agent IAM role: EC2
        • StackState/Agent IAM role: EKS
        • Policies for AWS
        • AWS (legacy)
        • Migrate AWS (legacy) to AWS
      • 💠Dynatrace
      • 💠Kubernetes
      • 💠OpenShift
      • 💠OpenTelemetry
        • About instrumentations
        • AWS NodeJS Instrumentation
        • Manual Instrumentation
          • Prerequisites
          • Tracer and span mappings
          • Relations between components
          • Span health state
          • Merging components
          • Code examples
      • 💠ServiceNow
      • 💠Slack
      • 💠Splunk
        • Splunk
        • Splunk Events
        • Splunk Health
        • Splunk Metrics
        • Splunk Topology
      • 💠VMWare vSphere
      • Apache Tomcat
      • Azure
      • Cloudera
      • Custom Synchronization
      • DotNet APM
      • Elasticsearch
      • Humio
      • Java APM
      • JMX
      • Logz.io
      • MySQL
      • Nagios
      • OpenMetrics
      • PostgreSQL
      • Prometheus
      • SAP
      • SCOM
      • SolarWinds
      • Static Health
      • Static Topology
      • Traefik
      • WMI
      • Zabbix
    • Develop your own StackPacks
  • 🔧Configure
    • Topology
      • Component actions
      • Identifiers
      • Topology naming guide
      • Topology sources
      • Create a topology manually
      • Configure topology synchronizations
      • Enable email event notifications
      • Send topology data over HTTP
      • Set the topology filtering limit
      • Use a proxy for event handlers
      • Use tags
      • Tune topology synchronization
      • Debug topology synchronization
    • Telemetry
      • Add telemetry during topology synchronization
      • Data sources
        • Elasticsearch
        • Prometheus mirror
      • Send events over HTTP
      • Send metrics data over HTTP
      • Set the default telemetry interval
      • Debug telemetry synchronization
    • Traces
      • Set up traces
      • Advanced configuration for traces
    • Health
      • Health synchronization
      • Send health data over HTTP
        • Send health data
        • Repeat Snapshots JSON
        • Repeat States JSON
        • Transactional Increments JSON
      • Debug health synchronization
    • Anomaly Detection
      • Export anomaly feedback
      • Scale the AAD up and down
      • The AAD status UI
    • Security
      • Authentication
        • Authentication options
        • File based
        • LDAP
        • Open ID Connect (OIDC)
        • KeyCloak
        • Service tokens
      • RBAC
        • Role-based Access Control
        • Permissions
        • Roles
        • Scopes
        • Subjects
      • Secrets management
      • Self-signed certificates
      • Set up a security backend for Linux
      • Set up a security backend for Windows
    • Logging
      • Kubernetes logs
      • Linux logs
      • Enable logging for functions
  • 📖Develop
    • Developer guides
      • Agent checks
        • About Agent checks
        • Agent check API
        • Agent check state
        • How to develop Agent checks
        • Connect an Agent check to StackState
      • Custom functions and scripts
        • StackState functions
        • Check functions
        • Component actions
        • Event handler functions
        • ID extractor functions
        • Mapping functions
        • Monitor functions
        • Propagation functions
        • Template functions
        • View health state configuration functions
      • Custom Synchronization StackPack
        • About the Custom Synchronization StackPack
        • How to customize elements created by the Custom Synchronization StackPack
        • How to configure a custom synchronization
      • Integrate external services
      • Mirroring Telemetry
      • Monitors
        • Create monitors
        • Monitor STJ file format
      • StackPack development
        • How to create a StackPack
        • Packaging
        • How to get a template file
        • How to make a multi-instance StackPack
        • Prepare a multi-instance provisioning script
        • Upload a StackPack file
        • Prepare a shared template
        • Customize a StackPack
        • Prepare instance template files
        • Prepare a StackPack provisioning script
        • Resources in a StackPack
        • StackState Common Layer
      • Synchronizations and templated files
    • Reference
      • StackState OpenAPI docs
      • StackState Template JSON (STJ)
        • Using STJ
        • Template functions
      • StackState Markup Language (STML)
        • Using STML
        • STML Tags
      • StackState Query Language (STQL)
      • StackState Scripting Language (STSL)
        • Scripting in StackState
        • Script result: Async
        • Script result: Streaming
        • Time in scripts
        • Script APIs
          • Async - script API
          • Component - script API
          • HTTP - script API
          • Prediction - script API
          • StackPack - script API
          • Telemetry - script API
          • Time - script API
          • Topology - script API
          • UI - script API
          • View - script API
    • Tutorials
      • Create a simple StackPack
      • Push data to StackState from an external system
      • Send events to StackState from an external system
      • Set up a mirror to pull telemetry data from an external system
Powered by GitBook
LogoLogo

Legal notices

  • Privacy
  • Cookies
  • Responsible disclosure
  • SOC 2/SOC 3
On this page
  • Overview
  • Automatic Instrumentation
  • Traces Installation
  • Traces Installation - VM
  • Traces Installation - Docker
  • Traces Installation - Kubernetes
  • Compatibility
  • Web Framework Compatibility
  • Networking Framework Compatibility
  • Data Store Compatibility
  • Other Framework Compatibility
  • Troubleshooting
  1. StackPacks
  2. Integrations

Java APM

StackState Self-hosted v5.1.x

PreviousHumioNextJMX

Last updated 2 years ago

Overview

The Java APM Integration of the Agent V2 StackPack provides tracing support for Java JVM based systems. With this Agent you will get:

  • All services which can be discovered by our Agent as components

  • All relations between the different services

  • Latency, Throughput and Error metric streams on all relations between service components

  • Heap usage, etc. for all services

This integration will be a part of the Agent V2 StackPack which should be installed as the first step; the rest of the installation instructions will follow soon.

The traces collected by the java trace client are forwarded to the StackState Trace Agent, which in turn forwards it to StackState. This also means that port 7077 should be opened for communication from the StackState Trace Agent.

Java APM is a .

Automatic Instrumentation

Automatic instrumentation for Java uses the java-agent instrumentation capabilities provided by the JVM. When the java-agent is registered, it has the ability to modify class files at the load time. The java-agent uses the Byte Buddy framework to find the classes defined for instrumentation and modify those class bytes accordingly.

Instrumentation may come from an auto-instrumentation, the OpenTracing api, or a mixture of both. Instrumentation generally captures the following info:

  • Timing duration is captured using the JVM's nanotime clock unless a timestamp is provided from the OpenTracing api

  • Key/value tag pairs

  • Errors and stacktraces which are unhandled by the application

  • A total count of traces (requests) flowing through the system

Traces Installation

To enable tracing and sending it to Stackstate Trace Agent, you need to follow the below steps to get started.

Traces Installation - VM

  • Set the following jvm arguments when running your java application

    • -Dsts.service.name={{service-name}}

    • -Dsts.agent.host={{host-of-the-stackstate-agent}}

    • -Dsts.agent.port=8126 {the default port for the trace agent api}

    • -javaagent:{path/of/downloaded-jar.jar}

  • Once above steps are done,the java trace client will start sending collected traces to the StackState Trace Agent which will then be forwarded to StackState.

Traces Installation - Docker

  • Set the following jvm arguments in your environment variables when running your container

    • -Dsts.service.name={{service-name}}

    • -Dsts.agent.host={{host-of-the-stackstate-agent}}

    • -Dsts.agent.port=8126 {the default port for the trace agent api}

    • -javaagent:{path/of/downloaded-jar.jar}

For example, running a container, setting the jvm arguments as part of MAVEN_OPTS.

  ...
  application-name:
    image: my/docker/image:version
    environment:
      MAVEN_OPTS: |
        -Dsts.service.name=`{{service-name}}`
        -Dsts.agent.host=`{{host-of-the-stackstate-agent}}`
        -Dsts.agent.port=`8126 {the default port for the trace agent api}`
        -javaagent:`{path/of/downloaded-jar.jar}`

Traces Installation - Kubernetes

  • Set the following jvm arguments in your env variables for the container when running your pod

    • -Dsts.service.name={{service-name}}

    • -Dsts.agent.host={{host-of-the-stackstate-agent}}

    • -Dsts.agent.port=8126 {the default port for the trace agent api}

    • -javaagent:{path/of/downloaded-jar.jar}

For example, running a container in a pod, setting the jvm arguments as part of MAVEN_OPTS.

  - name: application-name
    image: my/docker/image:version
    env:
      - name: MAVEN_OPTS
        value: |
        -Dsts.service.name=`{{service-name}}`
        -Dsts.agent.host=`{{host-of-the-stackstate-agent}}`
        -Dsts.agent.port=`8126 {the default port for the trace agent api}`
        -javaagent:`{path/of/downloaded-jar.jar}`

Compatibility

StackState officially supports the Java JRE 1.7 and higher versions of both Oracle JDK and OpenJDK. StackState doesn't officially support any early-access versions of Java.

Web Framework Compatibility

stackstate-java-agent includes support for automatically tracing the following web frameworks.

Server
Versions
Support Type
Instrumentation Names (used for configuration)

Akka-Http Server

10.0+

Fully Supported

akka-http, akka-http-server

Java Servlet Compatible

2.3+, 3.0+

Fully Supported

servlet, servlet-2, servlet-3

Jax-RS Annotations

JSR311-API

Fully Supported

jax-rs, jaxrs, jax-rs-annotations

Jetty (non-Servlet)

8+

Beta

jetty, jetty-8

Netty Http Server and Client

4.0+

Fully Supported

netty, netty-4.0, netty-4.1

Play

2.4-2.6

Fully Supported

play

Ratpack

1.4+

Beta

ratpack

Spark Java

2.3+

Beta

sparkjava (requires jetty)

Spring Web (MVC)

4.0+

Fully Supported

spring-web

Spring WebFlux

5.0+

Fully Supported

spring-webflux

Vert.x-Web

4.1.0+

Fully Supported

(requires netty)

Web Framework tracing provides: timing HTTP request to response, tags for the HTTP request (status code, method, etc), error and stacktrace capturing, linking work created within a web request and Distributed Tracing.

Note: Many application servers are Servlet compatible and are automatically covered by that instrumentation, such as Tomcat, Jetty, Websphere, Weblogic, etc. Also, frameworks like Spring Boot inherently work because it uses a Servlet compatible embedded application server.

Don't see your desired web frameworks? StackState is continuously adding additional support. Contact our support if you need help.

Networking Framework Compatibility

The stackstate-java-agent includes support for automatically tracing the following networking frameworks:

Framework
Versions
Support Type
Instrumentation Names (used for configuration)

Apache HTTP Client

4.0+

Fully Supported

httpclient

Apache HTTP Async Client

4.0+

Fully Supported

httpasyncclient, apache-httpasyncclient

AWS Java SDK

1.11+, 2.2+

Fully Supported

aws-sdk

gRPC

1.5+

Fully Supported

grpc, grpc-client, grpc-server

HttpURLConnection

all

Fully Supported

httpurlconnection, urlconnection

Kafka-Clients

0.11+

Fully Supported

kafka

Kafka-Streams

0.11+

Fully Supported

kafka, kafka-streams

Jax RS Clients

2.0+

Fully Supported

jax-rs, jaxrs, jax-rs-client

JMS

1 and 2

Fully Supported

jms

Rabbit AMQP

2.7+

Fully Supported

amqp, rabbitmq

OkHTTP

3.0+

Fully Supported

okhttp, okhttp-3

Networking tracing provides: timing request to response, tags for the request (for example, response code), error and stacktrace capturing, and distributed tracing.

Don't see your desired networking framework? StackState is continuously adding additional support. Contact our support if you need help.

Data Store Compatibility

stackstate-java-agent includes support for automatically tracing the following database frameworks/drivers:

Database
Versions
Support Type
Instrumentation Names (used for configuration)

Couchbase

2.0+

Fully Supported

couchbase

Cassandra

3.X

Fully Supported

cassandra

Elasticsearch Transport

2.0+

Fully Supported

elasticsearch, elasticsearch-transport, elasticsearch-transport-{2,5,6} (pick one)

Elasticsearch Rest

5.0+

Fully Supported

elasticsearch, elasticsearch-rest, elasticsearch-rest-5, elasticsearch-rest-6

Hibernate

3.5+

Fully Supported

hibernate

JDBC

N/A

Fully Supported

jdbc

Jedis

1.4+

Fully Supported

redis

Lettuce

5.0+

Fully Supported

lettuce

MongoDB

3.0+

Fully Supported

mongo

SpyMemcached

2.12+

Fully Supported

spymemcached

stackstate-java-agent is also compatible with common JDBC drivers including:

  • Apache Derby

  • Firebird SQL

  • H2 Database Engine

  • HSQLDB

  • IBM DB2

  • MariaDB

  • MSSQL (Microsoft SQL Server)

  • MySQL

  • Oracle

  • PostgreSQL

Datastore tracing provides: timing request to response, query info (for example, a sanitized query string), and error and stacktrace capturing.

Don't see your desired datastores? StackState is continuously adding additional support. Contact our support if you need help.

Other Framework Compatibility

stackstate-java-agent includes support for automatically tracing the following other frameworks:

Framework
Versions
Support Type
Instrumentation Names (used for configuration)

Slf4J MDC

1+

Fully Supported

mdc (See also dd.logs.injection config)

JSP Rendering

2.3+

Fully Supported

jsp, jsp-render

Dropwizard Views

0.7+

Fully Supported

dropwizard, dropwizard-view

Hystrix

1.4+

Fully Supported

hystrix

Twilio SDK

0+

Fully Supported

twilio-sdk

Don't see your desired framework? StackState is continuously adding additional support. Contact our support if you need help.

To improve visibility into applications using unsupported frameworks, consider:

  • Adding custom instrumentation (with OpenTracing or the @Trace annotation).

  • Submitting a pull request with the instrumentation for inclusion in a future release.

  • Contacting our support and submitting a feature request.

Troubleshooting

To troubleshoot the java trace client add the following jvm arguments:

-Dstackstate.slf4j.simpleLogger.defaultLogLevel=debug

You can also verify whether the StackState Trace Agent has received the traces, by setting the logging level to debug and checking the trace-agent.log:

stackstate.yaml

log_level: debug

In Docker or Kubernetes, set the following environment variable for the StackState Agent

STS_LOG_LEVEL: "DEBUG"

Download the and follow the steps below for the different environments.

🧩
java trace client
StackState curated integration