Application Performance Monitoring
The APM domain tests whether you can instrument an application, separate real-user from synthetic traffic, and use traces to find the slow span. An APM domain is a regional container with a data upload endpoint and data keys. Public data keys are for browser/RUM agents; private data keys are for server-side agents and must not be shipped to a browser. APM agents exist for Java, .NET, Node.js, and other runtimes; the Java agent is attached with -javaagent. Agents send spans to the domain endpoint, and the Trace Explorer reconstructs distributed traces across services.
Traces, RUM, and synthetic
A trace is a set of spans sharing a trace ID; a span records an operation, duration, and parent. APM metrics such as response time, throughput, and errors are derived from this telemetry and can drive Monitoring alarms. RUM uses a browser snippet to capture real user sessions; synthetic monitoring runs scripted browser or REST monitors from managed vantage points and needs no agent in your application. Synthetic is best for availability and scripted flows; RUM is best for real-user latency and geography.
Worked example
A checkout service is slow only for some users. Install the Java agent with the private data key, restart the JVM, generate a trace, and open the Trace Explorer. Sort spans by duration and look for the child span that dominates. Reasoning: the agent captures server spans; the trace shows whether latency is in the checkout service, a downstream call, or the database; RUM would confirm browser-side latency but not internal spans.
Traps
Using a private key in browser code; forgetting to restart after agent installation; expecting synthetic monitors to need an agent; assuming traces are retained indefinitely; and installing an agent but blocking egress to the data upload endpoint.