---
title: APM onboarding
description: Get your services into Coralogix APM in three steps - deploy the OpenTelemetry Collector, instrument your services to emit spans, and verify they report - then tune sampling, correlation, and Span Metrics.
url: https://coralogix.com/docs/user-guides/apm/getting-started/apm-onboarding-tutorial/
product: apm
feature: APM Overview
feature_id: apm-general
feature_identifier: apm/apm-general
last_updated: '2026-09-29'
---

# APM onboarding

Coralogix [Application Performance Monitoring (APM)](https://coralogix.com/docs/user-guides/apm/features/service-catalog.md) gives you a Service Catalog, a service map, RED metrics (requests, errors, duration), 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 and Span Metrics configuration that make the data production-ready.

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

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 [Configure Span Metrics](#configure-span-metrics).

## 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).

## 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).

## 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

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 [Service Catalog](https://coralogix.com/docs/user-guides/apm/features/service-catalog.md), and open it to see its RED metrics.
3. Open its traces to see recent spans.

[![Your services reporting in the APM Service Catalog, with RED metrics and health.](/docs/assets/images/apm-main-3a96efce999ccaf61c1c534c1ccbd0dc.webp)](https://coralogix.com/docs/assets/images/apm-main-3a96efce999ccaf61c1c534c1ccbd0dc.webp)

If a service or metric is missing, confirm that spans are reaching Coralogix and that the `spanMetrics` preset is enabled.

## 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**: enrich your service logs with a [subsystem name](https://coralogix.com/docs/user-guides/account-management/account-settings/application-and-subsystem-names.md) that matches the service name, or [set up log correlation](https://coralogix.com/docs/user-guides/data_exploration/spans/related_data.md#set-up-log-correlation) so the logs carry standard trace and span IDs.
* **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). See also [Serverless monitoring](https://coralogix.com/docs/user-guides/apm/features/serverless-monitoring.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/getting-started/aligning-coralogix-and-otel-naming-conventions.md).

## Configure Span Metrics

Coralogix derives Span Metrics from your spans - the RED metrics that power APM. Span Metrics is enabled by default in the [latest Helm chart](https://github.com/coralogix/telemetry-shippers/blob/master/otel-integration/k8s-helm/Chart.yaml); you can also enable or customize it in your [configuration](https://coralogix.com/docs/user-guides/apm/getting-started/span-metrics.md). See [Coralogix Span Metrics](https://coralogix.com/docs/user-guides/apm/getting-started/span-metrics.md) for the full reference.

When Span Metrics is enabled, the following metrics are generated:

| Metric name (OTLP) | Prometheus exported name                                 | Metric type | Auto-generated labels (dimensions)                                         |
| ------------------ | -------------------------------------------------------- | ----------- | -------------------------------------------------------------------------- |
| `requests`         | `calls_total`                                            | Counter     | `service.name`, `span.name`, `span.kind`, `status.code`                    |
| `duration`         | `duration_ms_bucket, duration_ms_sum, duration_ms_count` | Histogram   | `service.name`, `span.name`, `span.kind`, `status.code`, `le` (for bucket) |
| `errors`           | `errors_total`                                           | Counter     | `service.name`, `span.name`, `span.kind`, `status.code`                    |

**Additional dimensions introduced by Coralogix**

When using the Coralogix `values.yaml`, the following dimensions are added to enable APM functionality and enhance data analysis:

```
extraDimensions:

  - name: http.method

  - name: cgx.transaction

  - name: cgx.transaction.root

  - name: status_code

  - name: db.namespace

  - name: db.operation.name

  - name: db.collection.name

  - name: db.system
```

Enabling the Span Metrics preset also turns on:

* `errorTracking` - see [API error tracking](https://coralogix.com/docs/user-guides/apm/features/api-error-tracking.md).
* `serviceVersion` - see [Grouping service metrics by version](https://coralogix.com/docs/user-guides/apm/features/group-by-service-version.md). Make sure the `service.version` attribute [is added](https://coralogix.com/docs/user-guides/apm/features/group-by-service-version.md#adding-the-serviceversion-attribute-using-otel_resource_attributes) to your service spans.
* `dbMetrics` - generates RED metrics for database spans (for example, `db_calls_total`), which powers [Database Monitoring](https://coralogix.com/docs/user-guides/apm/features/database-monitoring.md).

For the generated metrics, dimensions, and histogram buckets, see [Recommended configurations](https://coralogix.com/docs/user-guides/apm/getting-started/span-metrics-recommended-configuration.md). To keep high-cardinality metrics in check, see [Cardinality limiting](https://coralogix.com/docs/user-guides/apm/getting-started/span-metrics-cardinality-limits.md).

## Permissions

All standard roles (`Read-Only User`, `Standard User`, `Observability Lead`, `Data Admin`, `Platform Admin`) include `SERVICE-CATALOG:READ` and `SERVICE-MAP:READ` to view APM data. Managing the Service Catalog, Apdex configuration, and dimensions requires `Data Admin` or higher. See [APM permissions](https://coralogix.com/docs/user-guides/apm/permissions.md) for the full list.

## 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/getting-started/span-metrics.md) overview.

## 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/)     |

![Introduction to APM](https://img.youtube.com/vi/7DY5zk-jWXk/mqdefault.jpg)

Introduction to APM
