Copy as Markdown[Open in ChatGPT](https://chatgpt.com/?q=Read%20https%3A%2F%2Fcoralogix.com%2Fdocs%2Fuser-guides%2Fapm-v2%2Fgetting-started%2Fapm-onboarding-tutorial.md%20and%20help%20me%20with%20my%20question%20about%20this%20Coralogix%20documentation%20page.)[Open in Claude](https://claude.ai/new?q=Read%20https%3A%2F%2Fcoralogix.com%2Fdocs%2Fuser-guides%2Fapm-v2%2Fgetting-started%2Fapm-onboarding-tutorial.md%20and%20help%20me%20with%20my%20question%20about%20this%20Coralogix%20documentation%20page.)

# APM onboarding

Coralogix [Application Performance Monitoring (APM)](https://coralogix.com/docs/user-guides/apm-v2/services.md) gives you a live catalog of your services and databases, RED metrics (requests, errors, duration), a service map, and distributed traces - with no separate APM agent to run. This guide takes you from nothing to services reporting in APM - most teams in about 15 minutes - then points you to the optional tuning that makes the data production-ready.

Compact Span Metrics required

APM v2 reads **compact Span Metrics** for both services **and** databases - standard Span Metrics aren't enough. The first time you open APM v2, a welcome check lists these requirements with their status (**Sending** or **Missing**); when all pass, select **Go to new APM** to start. If any are missing, the check links to the migration guide and a way back to legacy APM. Enable compact Span Metrics first: [Using compact Span Metrics](https://coralogix.com/docs/user-guides/apm-v2/getting-started/using-compact-span-metric.md).

Ready to get started?

The fastest path is Kubernetes with the Coralogix Helm chart and eBPF auto-instrumentation. Start with [Step 1: Deploy the OpenTelemetry Collector](#step-1-deploy-the-opentelemetry-collector).

## How APM works[​](#how-apm-works "Direct link to How APM works")

APM is built on OpenTelemetry: your instrumented services emit spans, the OpenTelemetry Collector forwards them to Coralogix, and Coralogix derives the Span Metrics that power APM.

<!-- -->

Three things produce everything you see:

* **Deploy the OpenTelemetry Collector** to receive telemetry from your services and forward it to Coralogix.
* **Instrument your services** so they emit spans (traces).
* Coralogix **derives Span Metrics** from those spans - the RED metrics that power the catalog, health, and charts.

You set up the first two; Coralogix handles the third. To customize what Span Metrics generates, see [Span Metrics](https://coralogix.com/docs/user-guides/apm-v2/getting-started/span-metrics.md).

## What you need[​](#what-you-need "Direct link to What you need")

* A Coralogix account, with your Send-Your-Data API key and your region's OpenTelemetry endpoint.
* A running service you want to monitor.
* For Kubernetes: a cluster that meets the [Helm chart prerequisites](https://github.com/coralogix/telemetry-shippers/tree/master/otel-integration/k8s-helm#prerequisites) (minimum Kubernetes and Helm versions, secrets).
* **Compact Span Metrics** on both services **and** databases - required for APM v2 (see the note above). Enable it with [Using compact Span Metrics](https://coralogix.com/docs/user-guides/apm-v2/getting-started/using-compact-span-metric.md).

## Step 1: Deploy the OpenTelemetry Collector[​](#step-1-deploy-the-opentelemetry-collector "Direct link to Step 1: Deploy the OpenTelemetry Collector")

The Collector receives spans from your services and forwards them to Coralogix. Span Metrics is enabled by default in the latest Coralogix distributions, so APM works as soon as spans arrive. Choose your platform:

* Kubernetes (Helm)
* Docker
* EC2
* ECS

Recommended. Use the Coralogix Kubernetes Complete Observability integration:

1. Download the [`values.yaml`](https://github.com/coralogix/telemetry-shippers/blob/master/otel-integration/k8s-helm/values.yaml).

2. Meet the [prerequisites](https://github.com/coralogix/telemetry-shippers/tree/master/otel-integration/k8s-helm#prerequisites) (minimum Kubernetes and Helm versions, secrets).

3. Confirm the `spanMetrics` preset is enabled (it is by default):

   ```
   spanMetrics:

     enabled: true
   ```

4. Install with the [Helm commands](https://github.com/coralogix/telemetry-shippers/tree/master/otel-integration/k8s-helm#installation).

Follow [OpenTelemetry using Docker](https://coralogix.com/docs/opentelemetry/configuration-options/opentelemetry-using-docker.md).

Follow [Install OpenTelemetry on an EC2 instance](https://coralogix.com/docs/opentelemetry/configuration-options/install-opentelemetry-on-an-ec2-instance.md).

Follow [ECS-Fargate](https://coralogix.com/docs/integrations/aws/opentelemetry-ecs-fargate.md) or [ECS-EC2](https://coralogix.com/docs/opentelemetry/configuration-options/aws-ecs-ec2-using-opentelemetry.md).

Span Metrics is on by default. To customize the metrics, dimensions, and histogram buckets it generates, see [Recommended configurations](https://coralogix.com/docs/user-guides/apm-v2/getting-started/span-metrics-recommended-configuration.md).

## Step 2: Instrument your services[​](#step-2-instrument-your-services "Direct link to Step 2: Instrument your services")

Your services need to emit spans. Choose an approach:

* eBPF (Kubernetes)
* OpenTelemetry SDKs

Auto-instrument without code changes using [eBPF auto-instrumentation](https://coralogix.com/docs/opentelemetry/instrumentation-options/ebpf-auto-instrumentation/overview.md). This is the fastest path on Kubernetes.

Instrument per language with the OpenTelemetry SDKs - [auto-instrumentation](https://opentelemetry.io/docs/zero-code/) needs no code changes, or use [manual instrumentation](https://opentelemetry.io/docs/languages/) for full control. Point the exporter at your Collector.

## Step 3: Verify data is flowing[​](#step-3-verify-data-is-flowing "Direct link to Step 3: Verify data is flowing")

Generate some traffic to your service, then, within a few minutes:

1. In the Coralogix toolbar, select **APM**.
2. Confirm your service appears in the [catalog](https://coralogix.com/docs/user-guides/apm-v2/services.md), and open it to see its RED metrics.
3. Open the **Traces** section to see recent spans.

[![Your services reporting in the APM v2 catalog, with RED metrics and health.](/docs/assets/images/catalog-health-view-120443a6c90d30aa22ec3b24ce00177d.webp)](https://coralogix.com/docs/assets/images/catalog-health-view-120443a6c90d30aa22ec3b24ce00177d.webp)

If a service, database, or metric is missing, see [APM v2 isn't showing my data](https://coralogix.com/docs/user-guides/apm-v2/troubleshooting.md).

## Optional: tune and extend[​](#optional-tune-and-extend "Direct link to Optional: tune and extend")

Once data is flowing, harden and enrich it:

* **Sampling**: the Helm chart uses head sampling by default. For error- and latency-aware sampling, move to tail sampling - [Kubernetes](https://coralogix.com/docs/opentelemetry/kubernetes-observability/tail-sampling-with-opentelemetry-using-kubernetes.md) or [Docker Compose](https://coralogix.com/docs/opentelemetry/tail-sampling/tail-sampling-with-opentelemetry-using-docker-compose.md).
* **Correlate logs**: with OpenTelemetry, Coralogix correlates logs to a service automatically when the logs carry standard trace and span IDs (`trace_id` / `span_id`) and service context (such as a subsystem name that matches the service). Correlated logs then appear on the entity's [Logs](https://coralogix.com/docs/user-guides/apm-v2/features/logs.md) section. If your logs don't carry those fields, [set up log correlation](https://coralogix.com/docs/user-guides/data_exploration/spans/related_data.md#set-up-log-correlation).
* **Correlate infrastructure**: send infrastructure telemetry so the [Infrastructure](https://coralogix.com/docs/user-guides/apm-v2/features/infrastructure.md) section links a service to the hosts, pods, and containers it runs on. The Coralogix Helm chart labels spans and metrics consistently, which is what lets Coralogix match them.
* **Serverless (AWS Lambda)**: auto-instrument AWS Lambda with the [OpenTelemetry Lambda auto-instrumentation](https://coralogix.com/docs/opentelemetry/instrumentation-options/opentelemetry-lambda-auto-instrumentation.md).
* **Align attribute names**: when you upgrade OpenTelemetry versions, use the transform processor to keep attribute names stable - see [Aligning Coralogix and OpenTelemetry naming conventions](https://coralogix.com/docs/user-guides/apm-v2/getting-started/aligning-coralogix-and-otel-naming-conventions.md).

## Configure Span Metrics[​](#configure-span-metrics "Direct link to Configure Span Metrics")

Coralogix derives Span Metrics from your spans. To customize what it generates and keep cardinality in check, see:

* [Span Metrics](https://coralogix.com/docs/user-guides/apm-v2/getting-started/span-metrics.md): overview and concepts.
* [Recommended configurations](https://coralogix.com/docs/user-guides/apm-v2/getting-started/span-metrics-recommended-configuration.md): generated metrics, dimensions, sampling, and histogram buckets.
* [Cardinality limiting](https://coralogix.com/docs/user-guides/apm-v2/getting-started/span-metrics-cardinality-limits.md): control high-cardinality metrics.

## Next steps[​](#next-steps "Direct link to Next steps")

Once your services are sending spans, learn how Coralogix turns them into long-term metrics in the [Span Metrics](https://coralogix.com/docs/user-guides/apm-v2/getting-started/span-metrics.md) overview.

## Additional resources[​](#additional-resources "Direct link to Additional resources")

|                      |                                                                                                                                       |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| GitHub documentation | [Coralogix OTel integration for K8s](https://github.com/coralogix/telemetry-shippers/blob/master/otel-integration/k8s-helm/README.md) |
| Tutorial             | [OpenTelemetry and Coralogix introduction](https://coralogix.com/academy/get-to-know-coralogix/otel-coralogix-intro/)                 |
| Tutorial             | [OpenTelemetry Lambda function integration](https://coralogix.com/academy/get-to-know-coralogix/otel-lambda-function-integration/)    |
| Tutorial             | [ECS to Coralogix using OpenTelemetry](https://coralogix.com/academy/get-to-know-coralogix/ecs-to-coralogix-using-opentelemetry/)     |
| Documentation        | [APM permissions](https://coralogix.com/docs/user-guides/apm-v2/permissions.md)                                                       |
