This topic describes how to send OpenTelemetry trace data to Application Real-Time Monitoring Service (ARMS) and use the data.
Ingest OpenTelemetry trace data
Application Real-Time Monitoring Service (ARMS) supports multiple methods to ingest OpenTelemetry trace data. You can report trace data directly to ARMS or forward it using an OpenTelemetry Collector.
Report data directly
-
Report trace data using the ARMS Java Agent and the OpenTelemetry Java SDK
ARMS Java Agent v2.7.1.3 and later supports the OpenTelemetry Java SDK extension. While the ARMS Java Agent automatically collects trace data from common components, you can also use the OpenTelemetry SDK extension to add custom method instrumentation. For more information, see Add custom instrumentation to traces using the OpenTelemetry Java SDK.
-
Report trace data directly using OpenTelemetry
You can also use the OpenTelemetry SDK to instrument your application and use the Jaeger Exporter to report trace data directly. For more information, see Report Java application data using OpenTelemetry.
Forward data using an OpenTelemetry Collector
Forward trace data using the open-source OpenTelemetry Collector
To use the open-source OpenTelemetry Collector to forward trace data to ARMS, you only need to modify the endpoint and token in the exporter configuration.
exporters:
otlp:
endpoint: <endpoint>:8090
tls:
insecure: true
headers:
Authentication: <token>
-
Replace
<endpoint>with the endpoint for your region. For example:http://tracing-analysis-dc-bj.aliyuncs.com:8090. -
Replace
<token>with the token that you obtain from the console. For example:b590lhguqs@3a7*********9b_b590lhguqs@53d*****8301.
Use OpenTelemetry traces
To help you get the most from your OpenTelemetry trace data, ARMS offers a range of diagnostic features, including trace details, pre-aggregated dashboards, post-aggregated analysis in Trace Explorer, and correlation between traces and service logs.
-
Trace details
The trace details panel shows the sequence and duration of API calls in a trace. The left side features a waterfall chart that lists the duration of each span. For example, a trace with 27 spans and a total duration of 1.1s might show HTTP requests like
org.apache.http.protocol.HttpRequestExecutor(19 ms–583 ms), MyBatis calls (4 ms–6 ms), and MySQL calls (1 ms–4 ms). The right side displays detailed information for the selected span. This includes basic attributes like Application Name, API Name, IP, and Start Time, and associated metrics like database SQL statements. Under the Metric tab, you can find JVM data such as Instantaneous GC Times, Instantaneous GC Duration, Stack Memory Details, and JVM Threads. Each metric chart marks the time of the trace. -
Pre-aggregated dashboards
ARMS provides multiple pre-aggregated metric dashboards based on OpenTelemetry trace data, including Application overview, API calls, and database calls. For more information, see Application overview.

-
Post-aggregated analysis in Trace Explorer
ARMS provides flexible multi-dimensional filtering and post-aggregated analysis for OpenTelemetry trace data, allowing you to query abnormal traces in specific applications. You can also aggregate trace data by dimensions such as IP address and API name. For more information, see Trace Explorer.
The Trace Explorer interface includes a search bar (for example,
serviceName:"mall-gateway"), a quick filter panel on the left (Status, Duration, API Name, Host Address), summary charts at the top (Invocations, Errors, Average Duration), and analysis views such as List, Scatter Plot, Trace Aggregation, Trace Topology, and Error/Slow Trace Analysis. -
Correlate traces with service logs
ARMS allows you to correlate OpenTelemetry traces with service logs to troubleshoot application API exceptions. For more information, see Troubleshoot service exceptions using traces and logs.
In the Log Service (SLS) query and analysis interface, you can query related log entries using a traceId. In the example, filtering by traceId
0bc0594d15996317885782...retrieves multiple log entries. These include a WARN level log from PrometheusServiceImpl (prometheus check input param success from db) and an INFO level log showing a registration failure from RegisterPromClusterServlet. The root cause of the exception isjava.lang.RuntimeException: Failed to create Grafana folder. The stack trace involves GrafanaConfigService and PrometheusServiceImpl.