Copy as Markdown[Open in ChatGPT](https://chatgpt.com/?q=Read%20https%3A%2F%2Fcoralogix.com%2Fdocs%2Fuser-guides%2Fcontinuous-profiling%2Fsetup.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%2Fcontinuous-profiling%2Fsetup.md%20and%20help%20me%20with%20my%20question%20about%20this%20Coralogix%20documentation%20page.)

# Set up Continuous Profiling

This guide provides step-by-step instructions for setting up Continuous Profiling (CP). Coralogix Continuous Profiling captures low-overhead CPU profiles (via eBPF) and memory profiles (via the Java SDK), helping you identify performance bottlenecks directly within the Coralogix platform.

You can install Continuous Profiling in three ways:

* [Using the Coralogix CP agent together with the Coralogix collector on Kubernetes](https://coralogix.com/docs/docs/user-guides/continuous-profiling/setup/.md#install-with-cp-agent-and-coralogix-collector-helm) (Helm-based installation)
* [Using the Coralogix onboarding UI via Kubernetes Complete Observability](https://coralogix.com/docs/docs/user-guides/continuous-profiling/setup/.md#install-with-kubernetes-complete-observability-ui) (UI installation)
* [Using the AWS ECS-EC2 OpenTelemetry integration](https://coralogix.com/docs/docs/user-guides/continuous-profiling/setup/.md#install-on-aws-ecs-ec2-with-cloudformation) (CloudFormation-based installation)

For memory profiling on Java services, see [Monitor memory consumption](https://coralogix.com/docs/docs/user-guides/continuous-profiling/monitoring-memory/.md) — memory profiling uses the Coralogix Continuous Profiler SDK and Async Profiler instead of the eBPF agent described on this page.

## Kubernetes prerequisites[​](#kubernetes-prerequisites "Direct link to Kubernetes prerequisites")

* Ensure that kubectl is installed.

* Confirm environment requirements:

  <!-- -->

  * Kubernetes **v1.24+**

  * Helm **v3.9+**

    To verify your Helm version, run the following:

    ```
    helm version
    ```

## Install with CP agent and Coralogix collector (Helm)[​](#install-with-cp-agent-and-coralogix-collector-helm "Direct link to Install with CP agent and Coralogix collector (Helm)")

This installation path provides full control over deployment and configuration using Helm. The Coralogix collector, which includes the OpenTelemetry (OTel) collector, serves as the central component for receiving and forwarding telemetry data-including profiling, traces, and metrics-into the Coralogix platform. By deploying the CP agent alongside the collector, you enable comprehensive observability across your Kubernetes workloads.

Note

If you have the Coralogix collector already installed, you can skip steps 1 and 2.

1. Add the Coralogix Helm chart repository and update your local Helm repo cache by running:

   ```
   helm repo add coralogix https://cgx.jfrog.io/artifactory/coralogix-charts-virtual

   helm repo update
   ```

2. Create the required secret. Ensure a Kubernetes secret named `coralogix-keys` exists and includes your Coralogix Private API Key. If it doesn't, use the command below to create it:

   ```
   kubectl create secret generic coralogix-keys --from-literal=PRIVATE_KEY="<Your Coralogix Private API Key>"
   ```

3. Add the following to your `values.yaml` file:

   ```
   opentelemetry-ebpf-profiler:

     enabled: true

     presets:

       resourceDetection:

         enabled: false

       ebpfProfiler:

         enabled: true

       otlpExporter:

         enabled: true

         endpoint: ${env:K8S_NODE_IP}:4317

         pipelines: ["profiles"]

         tls:

           insecure: true



   opentelemetry-agent:

     enabled: true
   ```

   The eBPF profiler exports profiles to the node-local `opentelemetry-agent`, which enriches them with Kubernetes metadata and forwards them to Coralogix. The agent's `profilesCollection` preset is enabled by default, so no extra agent configuration is required for the basic install.

4. Deploy Continuous Profiling by running the following. Replace `<cluster name>` and `<Your Coralogix Region Domain>` with the appropriate values:

   ```
   helm upgrade --install otel-coralogix-integration coralogix/otel-integration \

     --version=0.0.305 \

     --render-subchart-notes \

     --set global.domain="<Your Coralogix domain>" \

     --set global.clusterName="<cluster name>" \

     -f values.yaml
   ```

   Note

   By default, the Coralogix Continuous Profiling agent collects profiling data from all services across your Kubernetes cluster.

   To limit data collection to specific nodes—for instance, to avoid monitoring system-critical or infrastructure-dedicated nodes—you can configure [**node affinity**](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity), [**anti-affinity**](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity), and [**tolerations**](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/).

   These Kubernetes features allow fine-grained control over pod scheduling, enabling you to tailor where the profiling agent is deployed based on node characteristics and cluster topology.

## Install with Kubernetes Complete Observability (UI)[​](#install-with-kubernetes-complete-observability-ui "Direct link to Install with Kubernetes Complete Observability (UI)")

Coralogix provides a UI-based onboarding flow for [Kubernetes complete observability](https://coralogix.com/docs/docs/opentelemetry/kubernetes-observability/kubernetes-complete-observability-basic-configuration/.md). This method simplifies setup by guiding you through the installation process.

Note

This integration is designed and tested for clean installs. Applying it to existing deployments may require additional checks and adjustments.

Warning

If you’ve already installed the integration using the default `values.yaml`, be aware that upgrading may **overwrite existing configurations**, and behavior in your environment is **unpredictable**. We **strongly recommend testing updates in a staging environment first** to verify compatibility, stability, and ensure you can take full advantage of new features and best practices.

<!--$?-->

<!--/$-->

### Enable profiling[​](#enable-profiling "Direct link to Enable profiling")

1. Navigate to **Observability features**, then to **APM & Tracing** (default: on).

2. Toggle **Profiling** on (default: off) and configure **Samples** per second (default: 20) to control how often data is sampled. See the image below.

   [![](/docs/assets/images/enable-profiling-ui-94d7c0f4bb6e6ecf874cabc75cadbd6c.webp)](https://coralogix.com/docs/docs/assets/images/enable-profiling-ui-94d7c0f4bb6e6ecf874cabc75cadbd6c.webp)

3. Select **Save**.

<!--$?-->

<!--/$-->

## How service name is determined on Kubernetes[​](#how-service-name-is-determined-on-kubernetes "Direct link to How service name is determined on Kubernetes")

On Kubernetes, Continuous Profiling automatically determines the `service.name` attribute for your profiled services based on the [OpenTelemetry Semantic Conventions for Kubernetes](https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-attributes/#how-servicename-should-be-calculated). The service name is resolved using the following priority order:

1. **Pod annotation**: `resource.opentelemetry.io/service.name`

2. **Well-known Kubernetes labels** (in order):

   <!-- -->

   * `app.kubernetes.io/instance`
   * `app.kubernetes.io/name`

3. **Kubernetes resource hierarchy** (from owner to pod):

   <!-- -->

   * `k8s.deployment.name`
   * `k8s.replicaset.name`
   * `k8s.statefulset.name`
   * `k8s.daemonset.name`
   * `k8s.cronjob.name`
   * `k8s.job.name`

4. **Fallback**: `k8s.pod.name` or `k8s.container.name`

### Custom service name detection[​](#custom-service-name-detection "Direct link to Custom service name detection")

You can override the default service name detection by specifying custom Kubernetes labels or annotations to use for service name resolution. Add the following to your `values.yaml` file:

```
opentelemetry-agent:

  enabled: true

  presets:

    profilesCollection:

      enabled: true

      serviceLabels:

        - tag_name: "k8s.labels.my-custom-service-label"

          key: "my-custom-service-label"

          from: "pod"

        - tag_name: "k8s.labels.app.kubernetes.io/name"

          key: "app.kubernetes.io/name"

          from: "pod"

      serviceAnnotations:

        - tag_name: "k8s.annotations.my-custom-service-annotation"

          key: "my-custom-service-annotation"

          from: "pod"

        - tag_name: "k8s.annotations.resource.opentelemetry.io/service.name"

          key: "resource.opentelemetry.io/service.name"

          from: "pod"



opentelemetry-ebpf-profiler:

  enabled: true

  presets:

    resourceDetection:

      enabled: false

    ebpfProfiler:

      enabled: true

    otlpExporter:

      enabled: true

      endpoint: ${env:K8S_NODE_IP}:4317

      pipelines: ["profiles"]

      tls:

        insecure: true
```

| Configuration        | Description                                                                                                                                                       |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `serviceLabels`      | List of Kubernetes pod labels to use for resolving the service name. Labels are evaluated in order; the first matching label with a value is used.                |
| `serviceAnnotations` | List of Kubernetes pod annotations to use for resolving the service name. Annotations are evaluated in order; the first matching annotation with a value is used. |

Note

When both `serviceLabels` and `serviceAnnotations` are configured, annotations take precedence over labels.

## AWS ECS-EC2 prerequisites[​](#aws-ecs-ec2-prerequisites "Direct link to AWS ECS-EC2 prerequisites")

* An ECS cluster using the **EC2 launch type**. Fargate is not supported, because the eBPF profiling agent requires direct access to host kernel interfaces that Fargate tasks cannot expose.
* **CloudFormation** as your deployment method. Profiling is not available in the Terraform deployment path.
* An S3 bucket where you can upload the generated profiling configuration file.
* The AWS ECS-EC2 integration version **0.7.0** or later. Earlier versions do not include the profiling option.

## Install on AWS ECS-EC2 with CloudFormation[​](#install-on-aws-ecs-ec2-with-cloudformation "Direct link to Install on AWS ECS-EC2 with CloudFormation")

Profiling is enabled as part of the standard AWS ECS-EC2 OpenTelemetry onboarding flow. When you turn it on, the generated CloudFormation template provisions a dedicated profiling collector service that runs alongside the existing OTel collector and reads kernel data through eBPF.

For the broader AWS ECS-EC2 integration guide, see [AWS ECS-EC2 OpenTelemetry integration](https://coralogix.com/docs/docs/opentelemetry/aws-ecs-ec2/ecs-ec2-integration/.md). The following steps cover only the profiling-specific configuration.

### 1. Start the ECS-EC2 integration[​](#1-start-the-ecs-ec2-integration "Direct link to 1. Start the ECS-EC2 integration")

1. In Coralogix, go to **Integrations**.

2. Select **AWS ECS-EC2**.

3. Select **+ Add New** to start a new integration, or select the upgrade arrow on an existing integration to move it to a version that supports profiling.

   [![ecs-ec2 integration overview](/docs/assets/images/ecs-ec2-integration-overview-588c27021d3490a41ce048de66b9da1c.webp)](https://coralogix.com/docs/docs/assets/images/ecs-ec2-integration-overview-588c27021d3490a41ce048de66b9da1c.webp)

4. Provide a name, [Send-Your-Data API key](https://coralogix.com/docs/docs/user-guides/account-management/api-keys/send-your-data-api-key/.md), cluster name, AWS region, and operating system.

5. In **Deployment Method**, keep **CloudFormation** selected, then select **Next**.

### 2. Enable profiling[​](#2-enable-profiling "Direct link to 2. Enable profiling")

1. Navigate to **Observability features**, then to **APM & Tracing** (default: on).

2. Toggle **Profiling** on (default: off).

3. Set **Samples per second** to control how often profiling data is sampled. The default is `20`.

   [![Enable profiling](data:image/webp;base64,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)](data:image/webp;base64,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)

4. Select **Next**.

When profiling is enabled, the integration generates an additional configuration file, `coralogix-profiling-config.yaml`, alongside the standard `coralogix-otel-config.yaml`.

[![Profiling yaml](/docs/assets/images/aws-ecs-ec2-profiling-130505dc4204e8841155464a0d817927.webp)](https://coralogix.com/docs/docs/assets/images/aws-ecs-ec2-profiling-130505dc4204e8841155464a0d817927.webp)

### 3. Provide profiling deployment parameters[​](#3-provide-profiling-deployment-parameters "Direct link to 3. Provide profiling deployment parameters")

In the review and deployment steps, supply the following profiling-specific parameters:

| Parameter                    | Description                                                                                              |
| ---------------------------- | -------------------------------------------------------------------------------------------------------- |
| **Profiling S3 Bucket Name** | The S3 bucket where you will upload `coralogix-profiling-config.yaml`.                                   |
| **Profiling S3 Object Name** | The S3 object key (file path) for the profiling configuration file. Defaults to `profiling-config.yaml`. |
| **Profiling Memory (MiB)**   | The amount of memory allocated to the profiling task. Defaults to `512`.                                 |

Upload `coralogix-profiling-config.yaml` to the S3 bucket using the same name you supplied for **Profiling S3 Object Name**.

### 4. Deploy the CloudFormation stack[​](#4-deploy-the-cloudformation-stack "Direct link to 4. Deploy the CloudFormation stack")

Follow the in-app deployment instructions to create or update the CloudFormation stack. The template provisions a separate ECS service for the profiling collector that:

* Runs alongside the existing OTel collector on each EC2 container instance.
* Mounts `/sys/kernel/tracing` and `/sys/kernel/debug` from the host so the eBPF profiling agent can read kernel data.
* Reads its configuration from the S3 object you specified.

[![Deploy profiling](/docs/assets/images/aws-ecs-ec2-profiling-deploy-8d4bad2939e9e4aa5b79bb903ff695c6.webp)](https://coralogix.com/docs/docs/assets/images/aws-ecs-ec2-profiling-deploy-8d4bad2939e9e4aa5b79bb903ff695c6.webp)

After the stack reaches `CREATE_COMPLETE` (or `UPDATE_COMPLETE`), select **Complete setup** in the Coralogix UI.

### 5. Verify the installation[​](#5-verify-the-installation "Direct link to 5. Verify the installation")

1. In Coralogix, go to **APM**, then **Service Catalog**.
2. Open the **Profiles** tab.
3. Confirm that the services running on your ECS cluster appear with profiling data.

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

Learn how to view and explore profiled services in the [Profiles catalog](https://coralogix.com/docs/docs/user-guides/continuous-profiling/profiles-catalog/.md).
