---
title: Configure ATP for host
source: https://docs.newrelic.com/docs/opentelemetry/nrdot/atp/host
---

> #### 💡 PREVIEW
>
> We're still working on this feature, but we'd love for you to try it out!
>
> This feature is currently provided as part of a preview pursuant to our [pre-release policies](https://docs.newrelic.com/docs/licenses/license-information/referenced-policies/new-relic-pre-release-policy/).

Learn how to install and configure the Adaptive Telemetry Processor (ATP) with the NRDOT Collector. ATP is included with the standard NRDOT distribution to reduce telemetry data volume while maintaining critical visibility.

## Installation options [#installation-options]

Choose the installation approach that matches your current setup:

### New installation

#### Before you begin [#prereq]

Ensure you have:

-   Your New Relic license key
-   Root or sudo privileges.
-   Network access to GitHub releases

#### Install NRDOT collector host [#install-nrdot]

ATP comes pre-packaged with the NRDOT collector distribution. Based on your OS, choose your installation method:

**For Debian/Ubuntu**

1.  Set the environment variables:

    ```bash
    export collector_distro="nrdot-collector"
    export collector_version="<NRDOT_COLLECTOR_LATEST_VERSION>" #Fetch the latest version from GitHub releases available at https://github.com/newrelic/nrdot-collector-releases/releases
    export collector_arch="amd64"  # Use 'arm64' for ARM processors
    export license_key="<YOUR_NEW_RELIC_LICENSE_KEY>"
    ```

2.  Download the NRDOT package:

    ```bash
    curl "https://github.com/newrelic/nrdot-collector-releases/releases/download/${collector_version}/${collector_distro}_${collector_version}_linux_${collector_arch}.deb" \
      --location \
      --output collector.deb
    ```

3.  Install the downloaded package:

    ```bash
    sudo dpkg -i collector.deb
    ```

4.  Configure the NRDOT collector to use defined environment variables:

    ```bash
    echo "NEW_RELIC_LICENSE_KEY=${license_key}" | sudo tee -a /etc/${collector_distro}/${collector_distro}.conf > /dev/null
    ```

5.  Start the NRDOT collector service:

    ```bash
    sudo systemctl reload-or-restart "${collector_distro}.service"
    ```

**For RHEL/CentOS**

1.  Set the environment variables:

    ```bash
    export collector_distro="nrdot-collector"
    export collector_version="<NRDOT_COLLECTOR_LATEST_VERSION>" #Fetch the latest version from GitHub releases available at https://github.com/newrelic/nrdot-collector-releases/releases
    export collector_arch="x86_64"  # Use 'arm64' for ARM processors
    export license_key="<YOUR_NEW_RELIC_LICENSE_KEY>"
    ```

2.  Download the NRDOT package:

    ```bash
    curl "https://github.com/newrelic/nrdot-collector-releases/releases/download/${collector_version}/${collector_distro}_${collector_version}_linux_${collector_arch}.rpm" \
      --location \
      --output collector.rpm
    ```

3.  Install the downloaded package:

    ```bash
    sudo rpm -i collector.rpm
    ```

4.  Configure the NRDOT collector to use defined environment variables:

    ```bash
    echo "NEW_RELIC_LICENSE_KEY=${license_key}" | sudo tee -a /etc/${collector_distro}/${collector_distro}.conf > /dev/null
    ```

5.  Start the NRDOT collector service:

    ```bash
    sudo systemctl reload-or-restart "${collector_distro}.service"
    ```

**For manual binary**

1.  Set the environment variables:

    ```bash
    export collector_distro="nrdot-collector"
    export collector_version="<NRDOT_COLLECTOR_LATEST_VERSION>" #Fetch the latest version from GitHub releases available at https://github.com/newrelic/nrdot-collector-releases/releases
    export collector_arch="amd64"  # Use 'arm64' for ARM processors
    export license_key="<YOUR_NEW_RELIC_LICENSE_KEY>"
    ```

2.  Download the NRDOT collector:

    ```bash
    # Download the tarball
    curl "https://github.com/newrelic/nrdot-collector-releases/releases/download/${collector_version}/${collector_distro}_${collector_version}_linux_${collector_arch}.tar.gz" \
      --location \
      --output collector.tar.gz
    ```

3.  Extract the NRDOT collector:

    ```bash
    # Extract contents
    tar -xzf collector.tar.gz
    ```

4.  Run the collector:

    ```bash
    # Run collector in foreground
    NEW_RELIC_LICENSE_KEY="${license_key}" ./nrdot-collector --config ./config.yaml
    ```

#### Configure ATP [#configure-atp]

Once the NRDOT collector is installed, edit the collector's configuration file to enable and customize ATP. The configuration file paths vary depending on your installation method:

-   For DEB/RPM installations, the config file is located at `/etc/nrdot-collector/config.yaml`.
-   For manual binary installations, the config file is located inside the extracted folder.

To edit the configuration file:

1.  Open the configuration file (`config.yaml`) with a text editor:

    -   For DEB/RPM installations:
        ```bash
        sudo nano /etc/nrdot-collector/config.yaml
        ```

    -   For manual binary installations:
        ```bash
        nano config.yaml
        ```

2.  To collect the process metrics, in the `scrapers` section of `hostmetrics` receiver, add the following `process` configuration:

    ```yaml
    receivers:
      hostmetrics:
        scrapers:
          # Your existing scrapers...
          process:
            metrics:
              process.cpu.utilization:
                enabled: true
              process.memory.utilization:
                enabled: true
            mute_process_name_error: true
            mute_process_exe_error: true
            mute_process_io_error: true
            mute_process_user_error: true
    ```

3.  To enable ATP, locate the existing `processors` section, and add the `adaptivetelemetry` configuration underneath it:

    ```yaml
    processors:
      adaptivetelemetry:
        enable_storage: true
        retention_minutes: 30
        include_process_list:
          - "/usr/bin/postgres"
          - "/usr/sbin/nginx" # Replace with your target processes
        metric_thresholds:
          process.cpu.utilization: 0.05     # 5% CPU
          process.memory.utilization: 0.05  # 5% memory
    ```

4.  Add the ATP processor to your metrics pipeline under the `service` section:

    ```yaml
    service:
      pipelines:
        metrics/host:
          receivers: [hostmetrics]
          processors:
            - memory_limiter
            - adaptivetelemetry  # ADD THIS LINE
            - metricstransform
            - filter/exclude_cpu_utilization
            - filter/exclude_memory_utilization
    ```

5.  _(Optional)_ Update the ATP configuration such as metric thresholds as required. For more details on configuration options, see the [Configuration parameters](#config-parameters).

6.  Save the configuration file.

7.  Restart the NRDOT collector to apply changes:

    ```bash
    sudo systemctl restart nrdot-collector
    ```

#### Access the ATP data in New Relic [#access-data]

Once the ATP is configured, it starts collecting data from your Linux host. You can access this data in New Relic OpenTelemetry UI. For more information on New Relic OpenTelemetry UI, refer to [OpenTelemetry APM UI](https://docs.newrelic.com/docs/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui).

**To view the ATP process metric data in New Relic:**

1.  Go to **[one.newrelic.com](https://one.newrelic.com) > All Entities**.

    OR

    Go to **[one.newrelic.com](https://one.newrelic.com) > Catalogs > Infrastructure**.

2.  Search for entity where you installed the NRDOT collector with ATP.

3.  Select the entity then click **Process** in the left pane.

    On the Process page, you can view all the processes running on your host, along with their IDs, CPU and memory utilization metrics. It also displays the parent-child relationship between processes if a process spawns other processes.

    ![ATP process metrics in New Relic OpenTelemetry UI](https://docs.newrelic.com/images/atp-process-metrics.webp "ATP process metrics in New Relic OpenTelemetry UI")

/\* 

\### Configure ATP \[#atp-configuration]

Add the ATP processor configuration to your \`config.yaml\` file. Here's a complete configuration example:

\`\`\`yaml
processors:
  adaptivetelemetry:
    enable_storage: true
    retention_minutes: 30
    include_process_list:
      \- "stress-ng"
    metric_thresholds:
      process.cpu.utilization: 0.05
      process.memory.utilization: 0.05
      process.memory.virtual: 20971520  # 20 MB
      process.threads: 16
      process.open_file_descriptors: 30
      process.disk.io: 204800  # 200KB
      process.disk.operations: 300
      process.context_switches: 8
      process.paging.faults: 50
      process.cpu.time: 0.01
    
    \# Enable intelligence layers
    enable_dynamic_thresholds: true
    dynamic_smoothing_factor: 0.1
    min_thresholds:
      process.cpu.utilization: 0.0005
      process.memory.utilization: 0.0005
    max_thresholds:
      process.cpu.utilization: 0.30
      process.memory.utilization: 0.30
    
    \# Multi-metric composite scoring
    enable_multi_metric: true
    composite_threshold: 1.5
    weights:
      process.cpu.utilization: 0.5
      process.memory.utilization: 0.5
    
    \# Anomaly detection
    enable_anomaly_detection: true
    anomaly_history_size: 15
    anomaly_change_threshold: 50.0
    anomaly_min_data_points: 3

service:
  pipelines:
    metrics:
      receivers: \[hostmetrics]
      processors: \[adaptivetelemetry, batch]
      exporters: \[otlp]
\`\`\` \*/

### Upgrade from NRDOT

#### Before you begin [#upgrade-prereq]

Ensure you have:

-   Existing NRDOT Collector version `1.11.0` or later
-   Your New Relic license key
-   Root or sudo privileges
-   Backup of current configuration

#### Backup current configuration [#backup-config]

Safeguard your current settings before proceeding:

```bash
sudo cp /etc/nrdot-collector/config.yaml /etc/nrdot-collector/config.yaml.bak
```

#### Upgrade NRDOT collector [#upgrade-collector]

To upd the NRDOT collector to the latest version with ATP support, rerun the installation commands for the latest version. This will overwrite the old binary while preserving your existing configuration file.

**For Debian/Ubuntu**

1.  Set the environment variables:

    ```bash
    export collector_distro="nrdot-collector"
    export collector_version="<NRDOT_COLLECTOR_LATEST_VERSION>" #Fetch the latest version from GitHub releases available at https://github.com/newrelic/nrdot-collector-releases/releases
    export collector_arch="amd64"  # Use 'arm64' for ARM processors
    ```

2.  Download the latest version of NRDOT collector:

    ```bash
    curl "https://github.com/newrelic/nrdot-collector-releases/releases/download/${collector_version}/${collector_distro}_${collector_version}_linux_${collector_arch}.deb" \
      --location \
      --output collector.deb
    ```

3.  Install the downloaded NRDOT collector package:

    ```bash
    sudo dpkg -i collector.deb
    ```

**For RHEL/CentOS**

1.  Set the environment variables:

    ```bash
    export collector_distro="nrdot-collector"
    export collector_version="<NRDOT_COLLECTOR_LATEST_VERSION>"
    export collector_arch="x86_64"  # Use 'arm64' for ARM processors
    ```

2.  Download the latest version of NRDOT collector:

    ```bash
    curl "https://github.com/newrelic/nrdot-collector-releases/releases/download/${collector_version}/${collector_distro}_${collector_version}_linux_${collector_arch}.rpm" \
      --location \
      --output collector.rpm
    ```

3.  Install the downloaded NRDOT collector package:

    ```bash
    sudo rpm -U collector.rpm
    ```

**For manual binary**

1.  Stop the running collector and backup your configuration:

    ```bash
    pkill -f nrdot-collector
    cp config.yaml config.yaml.bak
    ```

2.  Follow the installation steps in the **New Installation** tab → **For manual binary** section to complete the remaining steps.

    > #### ⚠️ CAUTION
    >
    > This will overwrite your current config.yaml, which is why the backup in Step 1 was necessary.

#### Configure ATP [#configure-atp-upgrade]

The upgrade preserved your previous settings, so your `config.yaml` doesn't yet contain the new ATP settings. You must add them manually.

To edit the configuration file:

1.  Open the configuration file (`config.yaml`) with a text editor using root or sudo privileges:

    -   For DEB/RPM installations:
        ```bash
        sudo nano /etc/nrdot-collector/config.yaml
        ```

    -   For manual binary installations:
        ```bash
        nano config.yaml
        ```

2.  To collect the process metrics, in the `scrapers` section of `hostmetrics` receiver, add the following `process` configuration:

    ```yaml
    processes:
    process:
      metrics:
        process.cpu.utilization:
          enabled: true
        process.memory.utilization:
          enabled: true
      mute_process_name_error: true
      mute_process_exe_error: true
      mute_process_io_error: true
      mute_process_user_error: true
    ```

3.  To enable ATP, locate the existing `processors` section, and add the `adaptivetelemetry` configuration underneath it:

    ```yaml
    processors:
      # Your existing processors...
      adaptivetelemetry:
        enable_storage: true
        retention_minutes: 30
        include_process_list:
          - "/usr/bin/postgres"
          - "/usr/sbin/nginx" # Replace with your target processes
        metric_thresholds:
          process.cpu.utilization: 0.05     # 5% CPU
          process.memory.utilization: 0.05  # 5% memory
    ```

4.  Add the ATP processor to your metrics pipeline under the `service` section:

    ```yaml
    service:
      pipelines:
        metrics/host:
          receivers: [hostmetrics]
          processors:
            - memory_limiter
            - adaptivetelemetry  # ADD THIS LINE
            - metricstransform
            - filter/exclude_cpu_utilization
            - filter/exclude_memory_utilization
    ```

5.  _(Optional)_ Update the ATP configuration such as metric thresholds as required. For more details on configuration options, see the [Configuration parameters](#config-parameters).

6.  Save the configuration file.

7.  Restart the NRDOT collector to apply changes:

    ```bash
    sudo systemctl restart nrdot-collector
    ```

#### Access the ATP data in New Relic [#access-data]

Once the ATP is configured, it starts collecting data from your Linux host. You can access this data in New Relic OpenTelemetry UI. For more information on New Relic OpenTelemetry UI, refer to [OpenTelemetry APM UI](https://docs.newrelic.com/docs/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui).

**To view the ATP process metric data in New Relic:**

1.  Go to **[one.newrelic.com](https://one.newrelic.com) > All Entities**.

    OR

    Go to **[one.newrelic.com](https://one.newrelic.com) > Catalogs > Infrastructure**.

2.  Search for entity where you installed the NRDOT collector with ATP.

3.  Select the entity then click **Process** in the left pane.

    On the Process page, you can view all the processes running on your host, along with their IDs, CPU and memory utilization metrics. It also displays the parent-child relationship between processes if a process spawns other processes.

    ![ATP process metrics in New Relic OpenTelemetry UI](https://docs.newrelic.com/images/atp-process-metrics.webp "ATP process metrics in New Relic OpenTelemetry UI")

### Migrate from native agent

To install ATP by migrating from the New Relic native infrastructure agent to the NRDOT collector host distribution, you need to uninstall the native agent and set up NRDOT with ATP.

#### Before you begin [#prereq-native]

Ensure you have:

-   Your New Relic license key
-   Root or sudo privileges
-   Plan for minimal service interruption

#### Stop and disable native agent [#stop-native-agent]

1.  To stop the existing infrastructure agent to prevent data conflict, run:

    ```bash
    # Stop the service
    sudo systemctl stop newrelic-infra
    ```

2.  To disable the infrastructure agent from starting on boot, run:

    ```bash
    # Disable from starting on boot
    sudo systemctl disable newrelic-infra
    ```

#### Install NRDOT collector host [#install-nrdot-native]

ATP comes pre-packaged with the NRDOT collector distribution. Based on your OS, choose your installation method:

**For Debian/Ubuntu**

1.  Set the environment variables:

    ```bash
    export collector_distro="nrdot-collector"
    export collector_version="<NRDOT_COLLECTOR_LATEST_VERSION>" #Fetch the latest version from GitHub releases available at https://github.com/newrelic/nrdot-collector-releases/releases
    export collector_arch="amd64"  # Use 'arm64' for ARM processors
    export license_key="<YOUR_NEW_RELIC_LICENSE_KEY>"
    ```

2.  Download the NRDOT package:

    ```bash
    curl "https://github.com/newrelic/nrdot-collector-releases/releases/download/${collector_version}/${collector_distro}_${collector_version}_linux_${collector_arch}.deb" \
      --location \
      --output collector.deb
    ```

3.  Install the downloaded package:

    ```bash
    sudo dpkg -i collector.deb
    ```

4.  Configure the NRDOT collector to use defined environment variables:

    ```bash
    echo "NEW_RELIC_LICENSE_KEY=${license_key}" | sudo tee -a /etc/${collector_distro}/${collector_distro}.conf > /dev/null
    ```

5.  Start the NRDOT collector service:

    ```bash
    sudo systemctl reload-or-restart "${collector_distro}.service"
    ```

**For RHEL/CentOS**

1.  Set the environment variables:

    ```bash
    export collector_distro="nrdot-collector"
    export collector_version="<NRDOT_COLLECTOR_LATEST_VERSION>" #Fetch the latest version from GitHub releases available at https://github.com/newrelic/nrdot-collector-releases/releases
    export collector_arch="x86_64"  # Use 'arm64' for ARM processors
    export license_key="<YOUR_NEW_RELIC_LICENSE_KEY>"
    ```

2.  Download the NRDOT package:

    ```bash
    curl "https://github.com/newrelic/nrdot-collector-releases/releases/download/${collector_version}/${collector_distro}_${collector_version}_linux_${collector_arch}.rpm" \
      --location \
      --output collector.rpm
    ```

3.  Install the downloaded package:

    ```bash
    sudo rpm -i collector.rpm
    ```

4.  Configure the NRDOT collector to use defined environment variables:

    ```bash
    echo "NEW_RELIC_LICENSE_KEY=${license_key}" | sudo tee -a /etc/${collector_distro}/${collector_distro}.conf > /dev/null
    ```

5.  Start the NRDOT collector service:

    ```bash
    sudo systemctl reload-or-restart "${collector_distro}.service"
    ```

**For manual binary**

1.  Set the environment variables:

    ```bash
    export collector_distro="nrdot-collector"
    export collector_version="<NRDOT_COLLECTOR_LATEST_VERSION>" #Fetch the latest version from GitHub releases available at https://github.com/newrelic/nrdot-collector-releases/releases
    export collector_arch="amd64"  # Use 'arm64' for ARM processors
    export license_key="<YOUR_NEW_RELIC_LICENSE_KEY>"
    ```

2.  Download the NRDOT collector:

    ```bash
    # Download the tarball
    curl "https://github.com/newrelic/nrdot-collector-releases/releases/download/${collector_version}/${collector_distro}_${collector_version}_linux_${collector_arch}.tar.gz" \
      --location \
      --output collector.tar.gz
    ```

3.  Extract the NRDOT collector:

    ```bash
    # Extract contents
    tar -xzf collector.tar.gz
    ```

4.  Run the collector:

    ```bash
    # Run collector in foreground
    NEW_RELIC_LICENSE_KEY="${license_key}" ./nrdot-collector --config ./config.yaml
    ```

#### Configure ATP [#configure-atp-native]

Once the NRDOT collector is installed, edit the collector's configuration file to enable and customize ATP. The configuration file paths vary depending on your installation method:

-   For DEB/RPM installations, the config file is located at `/etc/nrdot-collector/config.yaml`.
-   For manual binary installations, the config file is located inside the extracted folder.

To edit the configuration file:

1.  Open the configuration file (`config.yaml`) with a text editor:

    -   For DEB/RPM installations:
        ```bash
        sudo nano /etc/nrdot-collector/config.yaml
        ```

    -   For manual binary installations:
        ```bash
        nano config.yaml
        ```

2.  To collect the process metrics, in the `scrapers` section of `hostmetrics` receiver, add the following `process` configuration:

    ```yaml
    receivers:
      hostmetrics:
        scrapers:
          # Your existing scrapers...
          process:
            metrics:
              process.cpu.utilization:
                enabled: true
              process.memory.utilization:
                enabled: true
            mute_process_name_error: true
            mute_process_exe_error: true
            mute_process_io_error: true
            mute_process_user_error: true
    ```

3.  To enable ATP, locate the existing `processors` section, and add the `adaptivetelemetry` configuration underneath it:

    ```yaml
    processors:
      adaptivetelemetry:
        enable_storage: true
        retention_minutes: 30
        include_process_list:
          - "/usr/bin/postgres"
          - "/usr/sbin/nginx" # Replace with your target processes
        metric_thresholds:
          process.cpu.utilization: 0.05     # 5% CPU
          process.memory.utilization: 0.05  # 5% memory
    ```

4.  Add the ATP processor to your metrics pipeline under the `service` section:

    ```yaml
    service:
      pipelines:
        metrics/host:
          receivers: [hostmetrics]
          processors:
            - memory_limiter
            - adaptivetelemetry  # ADD THIS LINE
            - metricstransform
            - filter/exclude_cpu_utilization
            - filter/exclude_memory_utilization
    ```

5.  _(Optional)_ Update the ATP configuration such as metric thresholds as required. For more details on configuration options, see the [Configuration parameters](#config-parameters).

6.  Save the configuration file.

7.  Restart the NRDOT collector to apply changes:
    ```bash
    sudo systemctl restart nrdot-collector
    ```

#### Verify migration [#verify-migration]

Once the installation is successful, check that data is flowing to New Relic:

1.  To verify service status, run:
    ```bash
    sudo systemctl status nrdot-collector
    ```

2.  To check logs, run:
    ```bash
    sudo journalctl -u nrdot-collector -f
    ```

#### Access the ATP data in New Relic [#access-data]

Once the ATP is configured, it starts collecting data from your Linux host. You can access this data in New Relic OpenTelemetry UI. For more information on New Relic OpenTelemetry UI, refer to [OpenTelemetry APM UI](https://docs.newrelic.com/docs/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui).

**To view the ATP process metric data in New Relic:**

1.  Go to **[one.newrelic.com](https://one.newrelic.com) > All Entities**.

    OR

    Go to **[one.newrelic.com](https://one.newrelic.com) > Catalogs > Infrastructure**.

2.  Search for entity where you installed the NRDOT collector with ATP.

3.  Select the entity then click **Process** in the left pane.

    On the Process page, you can view all the processes running on your host, along with their IDs, CPU and memory utilization metrics. It also displays the parent-child relationship between processes if a process spawns other processes.

    ![ATP process metrics in New Relic OpenTelemetry UI](https://docs.newrelic.com/images/atp-process-metrics.webp "ATP process metrics in New Relic OpenTelemetry UI")

## Storage configuration [#storage-config]

ATP uses persistent storage to maintain process state across collector restarts. Storage paths are automatically selected based on your execution environment:

### Systemd service installations (DEB/RPM packages)

When running as a systemd service, ATP automatically uses `/var/lib/nrdot-collector/` for storage. The systemd service configuration includes `StateDirectory=nrdot-collector` which:

-   Automatically creates the directory with correct ownership (`nrdot-collector` user/group)
-   Sets secure permissions (`0700`)
-   No manual directory creation or permission configuration required

### Manual binary installations

When running as a regular user, the collector binary automatically uses the XDG standard path ~/.local/state/nrdot-collector/, enabling ATP to function without root privileges.

### Fallback behavior

If neither storage location is writable (for example, due to permission issues), ATP automatically disables storage and continues operating with in-memory state only. The retention feature works normally during runtime, tracking processes that exceed thresholds for the configured `retention_minutes`. However, this tracking state is lost on collector restarts since it's not persisted to disk.

> #### 💡 TIP
>
> For systemd installations, you don't need to manually create storage directories or configure permissions. The service automatically manages this for you.

## Configuration parameters [#config-parameters]

**Core settings**

| **Parameter**          | **Type** | **Default** | **Description**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ---------------------- | -------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `enable_storage`       | boolean  | `true`      | Enable persistent storage. Storage paths are automatically determined based on execution context: Linux systemd service: /var/lib/nrdot-collector/adaptiveprocess.db (automatically managed by systemd) Linux manual binary: ~/.local/state/nrdot-collector/adaptiveprocess.db (XDG standard, no root required) Windows: %LOCALAPPDATA%\\nrdot-collector\\adaptiveprocess.db  If no writable path is available, storage is automatically disabled and ATP operates with in-memory state only (retention works during runtime but state is lost on restarts). |
| `retention_minutes`    | integer  | `30`        | How long to retain process state in minutes                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `include_process_list` | array    | `[]`        | Process names to always include (bypasses filtering)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `metric_thresholds`    | map      | `{}`        | Static thresholds per metric type                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

**Dynamic thresholds**

| **Parameter**               | **Type** | **Default** | **Description**                                     |
| --------------------------- | -------- | ----------- | --------------------------------------------------- |
| `enable_dynamic_thresholds` | boolean  | `false`     | Enable adaptive threshold adjustment                |
| `dynamic_smoothing_factor`  | float    | `0.1`       | Smoothing factor for threshold adaptation (0.0-1.0) |
| `min_thresholds`            | map      | `{}`        | Minimum threshold values per metric                 |
| `max_thresholds`            | map      | `{}`        | Maximum threshold values per metric                 |

**Multi-metric composite scoring**

| **Parameter**         | **Type** | **Default** | **Description**                                                              |
| --------------------- | -------- | ----------- | ---------------------------------------------------------------------------- |
| `enable_multi_metric` | boolean  | `false`     | Enable composite scoring across metrics                                      |
| `composite_threshold` | float    | `1.5`       | Threshold for composite score evaluation. This score must be more than `0.0` |
| `weights`             | map      | `{}`        | Weight values per metric for composite scoring                               |

**Anomaly detection**

| **Parameter**              | **Type** | **Default** | **Description**                                       |
| -------------------------- | -------- | ----------- | ----------------------------------------------------- |
| `enable_anomaly_detection` | boolean  | `false`     | Enable anomaly detection layer                        |
| `anomaly_history_size`     | integer  | `15`        | Number of historical data points to track             |
| `anomaly_change_threshold` | float    | `50.0`      | Percentage change threshold for anomalies             |
| `anomaly_min_data_points`  | integer  | `3`         | Minimum data points required before anomaly detection |

/\* ## Metric threshold guidelines

\### CPU utilization (0.0-1.0 scale)
\- \*\*Light filtering\*\*: \`0.10\` (10% CPU)
\- \*\*Standard filtering\*\*: \`0.05\` (5% CPU)  
\- \*\*Aggressive filtering\*\*: \`0.02\` (2% CPU)

\### Memory utilization (0.0-1.0 scale)
\- \*\*Light filtering\*\*: \`0.10\` (10% memory)
\- \*\*Standard filtering\*\*: \`0.05\` (5% memory)
\- \*\*Aggressive filtering\*\*: \`0.02\` (2% memory)

\### Memory usage (bytes)
\- \*\*Small processes\*\*: \`52428800\` (50 MB)
\- \*\*Medium processes\*\*: \`104857600\` (100 MB)
\- \*\*Large processes\*\*: \`209715200\` (200 MB)

\### I/O thresholds (bytes)
\- \*\*Light I/O\*\*: \`1048576\` (1 MB)
\- \*\*Medium I/O\*\*: \`5242880\` (5 MB)
\- \*\*Heavy I/O\*\*: \`10485760\` (10 MB)

\## Process name matching

ATP matches process names using the full path:

\### Examples
\- ✅ \*\*Correct\*\*: \`/usr/sbin/nginx\`
\- ✅ \*\*Correct\*\*: \`/usr/bin/java\`
\- ❌ \*\*Incorrect\*\*: \`"nginx"\` won't match

\### Common process names
\`\`\`yaml
include_process_list:
  \# Web servers
  \- "nginx"
  \- "apache2"
  \- "httpd"
  
  \# Databases
  \- "postgres"
  \- "mysql"
  \- "redis"
  \- "mongodb"
  
  \# Applications
  \- "java"
  \- "python"
  \- "node"
  \- "php-fpm"
\`\`\` \*/

## Related resources [#related-resources]

[Troubleshooting](https://docs.newrelic.com/docs/opentelemetry/nrdot/atp/troubleshooting)

Learn how to troubleshoot ATP issues for your environment.

[Query your data](https://docs.newrelic.com/docs/opentelemetry/nrdot/atp/query)

Learn how to query ATP data in New Relic using NRQL.

[Advanced-features](https://docs.newrelic.com/docs/opentelemetry/nrdot/atp/advanced-features)

Learn how to enable advanced features for your ATP deployment.
