﻿---
title: Add internal telemetry to an OTel Collector monitored by Fleet
description: Add internal telemetry to an OpenTelemetry Collector monitored by Fleet.
url: https://www.elastic.co/elastic/docs-builder/docs/3371/reference/fleet/add-otel-collector-internal-telemetry
products:
  - Elastic Agent
  - Fleet
applies_to:
  - Elastic Cloud Serverless: Preview
  - Elastic Stack: Preview since 9.4
---

# Add internal telemetry to an OTel Collector monitored by Fleet
Monitor the health, resource usage, and pipeline performance of an OpenTelemetry (OTel) Collector in Kibana by sending its own metrics, logs, and traces to Elasticsearch. The collector emits this telemetry to its own OTLP (OpenTelemetry Protocol) receiver, which forwards it through a pipeline to Elasticsearch.
<note>
  If you added your collector using the **Add collector** flow, the generated configuration already includes internal telemetry.
</note>


## Before you begin

You'll need:
- An OTel Collector with OpAMP extension support, already added in Fleet. For more information, refer to [Add an OTel Collector in Fleet](https://www.elastic.co/elastic/docs-builder/docs/3371/reference/fleet/add-otel-collector).
- Access to your OTel Collector's configuration file
- An Elasticsearch API key with `create_index`, `write`, and `auto_configure` index privileges on `metrics-*`, `logs-*`, and `traces-*` data streams, or an existing exporter you can reuse for internal telemetry


## Configure internal telemetry components

To add internal telemetry to an existing collector configuration, extend it with the following components:
1. Configure the OTLP receiver:
   ```yaml
   receivers:
     otlp:
       protocols:
         grpc:
           endpoint: 0.0.0.0:4317
         http:
           endpoint: 0.0.0.0:4318
   ```
2. Configure an exporter that sends telemetry to your Elasticsearch backend. If your collector already exports telemetry, you can reuse the existing exporter and add the OTLP receiver to its pipelines. Otherwise, configure the `elasticsearch/otel` exporter:
   ```yaml
   exporters:
     elasticsearch/otel:
       endpoints: [https://elasticsearch:9200] 
       api_key: "<es-api-key>" 
       mapping:
         mode: otel
   ```
   <note>
   On Serverless Observability projects and Elastic Cloud Hosted deployments, you can replace the `elasticsearch/otel` exporter with the [Elastic Cloud Managed OTLP Endpoint](https://docs-v3-preview.elastic.dev/elastic/docs-builder/docs/3371/reference/opentelemetry/motlp), which accepts OTLP data directly and uses an APM-scoped API key. For more details, refer to [Elastic Cloud Managed OTLP Endpoint (mOTLP)](https://docs-v3-preview.elastic.dev/elastic/docs-builder/docs/3371/reference/opentelemetry/motlp).
   </note>
3. Set up the service pipelines:
   ```yaml
   service:
     pipelines:
       metrics:
         receivers: [otlp]
         exporters: [elasticsearch/otel]
       logs:
         receivers: [otlp]
         exporters: [elasticsearch/otel]
       traces:
         receivers: [otlp]
         exporters: [elasticsearch/otel]
   ```
4. Set up internal telemetry for the OTel Collector:
   ```yaml
   service:
     telemetry:
       resource:
         service.instance.id: "<instance-uid>" 
       metrics:
         level: detailed
         readers:
           - periodic:
               interval: 3000
               exporter:
                 otlp:
                   protocol: grpc
                   endpoint: http://localhost:4317
       logs:
         processors:
           - batch:
               exporter:
                 otlp:
                   protocol: grpc
                   endpoint: http://localhost:4317
       traces:
         processors:
           - batch:
               exporter:
                 otlp:
                   protocol: grpc
                   endpoint: http://localhost:4317
   ```
5. Save your configuration, then start or restart the OTel Collector.


## Verify internal telemetry is flowing

When your collector is running, confirm that internal telemetry is reaching Elasticsearch:
1. The first time the collector ingests data, Fleet automatically installs the **OTel Collector internal telemetry** dashboards in Kibana.
2. In Kibana, go to **Dashboards** and search for **OTel Collector internal telemetry**.
3. Open a dashboard and confirm that visualizations display your collector's metrics, logs, traces, resource usage, pipeline performance, and component health.


## Related pages

- [Monitor OpenTelemetry Collectors in Fleet](https://www.elastic.co/elastic/docs-builder/docs/3371/reference/fleet/monitor-otel-collectors)
- [Troubleshoot OTel Collectors in Fleet](/elastic/docs-builder/docs/3371/troubleshoot/ingest/fleet/common-problems#opentelemetry-collectors-in-fleet)