# open-telemetry/opentelemetry-collector-contrib architecture

> Architecture diagram of the GitHub repository open-telemetry/opentelemetry-collector-contrib, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-02). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/open-telemetry/opentelemetry-collector-contrib
- Repository: https://github.com/open-telemetry/opentelemetry-collector-contrib

## Overview

OpenTelemetry Collector Contrib is a catalog of optional Collector components, not a single runnable pipeline. Users select components for a custom distribution; the broader Collector runtime connects receiver, processor, and exporter components to receive, transform, and deliver telemetry. The tree and sampled files expose diverse receivers, processors, exporters, extensions, and connector implementations. The README documents component selection, but does not specify runtime wiring among these modules, so those connections are not drawn. Several indexed core modules were not sampled; their nodes represent their exact paths, not inspected internals.

Main entry points: [`receiver/fluentforwardreceiver/server.go`](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/fluentforwardreceiver/server.go) (Fluent Forward), [`receiver/awslambdareceiver/handler.go`](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/awslambdareceiver/handler.go) (AWS Lambda), [`receiver/prometheusreceiver/internal/apiserver/manager.go`](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/prometheusreceiver/internal/apiserver/manager.go) (Prometheus API), [`receiver/prometheusreceiver/internal/targetallocator/manager.go`](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/prometheusreceiver/internal/targetallocator/manager.go) (Target allocator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_receivers["Telemetry receivers"]
  node_fluent["Fluent Forward<br/>[server.go]"]
  node_lambda["AWS Lambda<br/>[handler.go]"]
  node_promapi["Prometheus API<br/>[manager.go]"]
  node_targetalloc["Target allocator<br/>[manager.go]"]
  node_postgres["PostgreSQL client<br/>[client.go]"]
  node_mongo["MongoDB queries"]
  node_k8sclient["Kubernetes client<br/>[client.go]"]
end

subgraph group_processors["Telemetry processing"]
  node_tracegroup["Trace grouping"]
  node_memorytrace["Trace memory store<br/>[storage_memory.go]"]
end

subgraph group_exporters["Telemetry exporters"]
  node_alertmanager["Alertmanager export"]
  node_splunk["Splunk HE client<br/>[client.go]"]
  node_opensearch["OpenSearch templates"]
end

subgraph group_extensions["Extensions and storage"]
  node_pebble[("Tail storage<br/>[storage.go]")]
  node_azurelogs["Azure log decoding"]
end

subgraph group_connectors["Pipeline connectors"]
  node_kafka["Kafka client<br/>[franz_client.go]"]
end

node_user(("Collector user"))
node_custom["Custom distribution"]

node_user -->|"selects components"| node_custom
node_custom -->|"includes"| node_fluent
node_custom -->|"includes"| node_lambda
node_custom -->|"includes"| node_promapi
node_custom -->|"includes"| node_targetalloc
node_custom -->|"includes"| node_postgres
node_custom -->|"includes"| node_mongo
node_custom -->|"includes"| node_k8sclient
node_custom -->|"includes"| node_tracegroup
node_custom -->|"includes"| node_memorytrace
node_custom -->|"includes"| node_alertmanager
node_custom -->|"includes"| node_splunk
node_custom -->|"includes"| node_opensearch
node_custom -->|"includes"| node_pebble
node_custom -->|"includes"| node_azurelogs
node_custom -->|"includes"| node_kafka

click node_fluent "https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/fluentforwardreceiver/server.go"
click node_lambda "https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/awslambdareceiver/handler.go"
click node_promapi "https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/prometheusreceiver/internal/apiserver/manager.go"
click node_targetalloc "https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/prometheusreceiver/internal/targetallocator/manager.go"
click node_postgres "https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/postgresqlreceiver/client.go"
click node_mongo "https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/mongodbreceiver/top_query_scraper.go"
click node_k8sclient "https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/k8sattributesprocessor/internal/kube/client.go"
click node_tracegroup "https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/groupbytraceprocessor/storage_subtrace.go"
click node_memorytrace "https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/groupbytraceprocessor/storage_memory.go"
click node_alertmanager "https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/alertmanagerexporter/alertmanager_exporter.go"
click node_splunk "https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/splunkhecexporter/client.go"
click node_opensearch "https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/opensearchexporter/index_template_manager.go"
click node_pebble "https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/extension/tailstorage/pebbletailstorageextension/storage.go"
click node_azurelogs "https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/extension/encoding/azureencodingextension/internal/unmarshaler/logs/category_storage.go"
click node_kafka "https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/internal/kafka/franz_client.go"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_fluent,node_lambda,node_promapi,node_targetalloc,node_postgres,node_mongo,node_k8sclient,node_user toneBlue
class node_tracegroup,node_memorytrace toneAmber
class node_alertmanager,node_splunk,node_opensearch toneMint
class node_pebble,node_azurelogs toneRose
class node_kafka,node_custom toneIndigo
```

## Components

### Telemetry receivers

- [Fluent Forward](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/fluentforwardreceiver/server.go): `receiver/fluentforwardreceiver/server.go`
- [AWS Lambda](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/awslambdareceiver/handler.go): `receiver/awslambdareceiver/handler.go`
- [Prometheus API](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/prometheusreceiver/internal/apiserver/manager.go): `receiver/prometheusreceiver/internal/apiserver/manager.go`
- [Target allocator](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/prometheusreceiver/internal/targetallocator/manager.go): `receiver/prometheusreceiver/internal/targetallocator/manager.go`
- [PostgreSQL client](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/postgresqlreceiver/client.go): `receiver/postgresqlreceiver/client.go`
- [MongoDB queries](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/mongodbreceiver/top_query_scraper.go): `receiver/mongodbreceiver/top_query_scraper.go`
- [Kubernetes client](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/k8sattributesprocessor/internal/kube/client.go): `processor/k8sattributesprocessor/internal/kube/client.go`

### Telemetry processing

- [Trace grouping](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/groupbytraceprocessor/storage_subtrace.go): `processor/groupbytraceprocessor/storage_subtrace.go`
- [Trace memory store](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/groupbytraceprocessor/storage_memory.go): `processor/groupbytraceprocessor/storage_memory.go`

### Telemetry exporters

- [Alertmanager export](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/alertmanagerexporter/alertmanager_exporter.go): `exporter/alertmanagerexporter/alertmanager_exporter.go`
- [Splunk HE client](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/splunkhecexporter/client.go): `exporter/splunkhecexporter/client.go`
- [OpenSearch templates](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/opensearchexporter/index_template_manager.go): `exporter/opensearchexporter/index_template_manager.go`

### Extensions and storage

- [Tail storage](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/extension/tailstorage/pebbletailstorageextension/storage.go): `extension/tailstorage/pebbletailstorageextension/storage.go`
- [Azure log decoding](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/extension/encoding/azureencodingextension/internal/unmarshaler/logs/category_storage.go): `extension/encoding/azureencodingextension/internal/unmarshaler/logs/category_storage.go`

### Pipeline connectors

- [Kafka client](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/internal/kafka/franz_client.go): `internal/kafka/franz_client.go`

### Other components

- **Collector user**
- **Custom distribution**

## Connections

- Collector user → Custom distribution: selects components (evidence: `README.md`)
- Custom distribution → Fluent Forward: includes (evidence: `README.md`)
- Custom distribution → AWS Lambda: includes (evidence: `README.md`)
- Custom distribution → Prometheus API: includes (evidence: `README.md`)
- Custom distribution → Target allocator: includes (evidence: `README.md`)
- Custom distribution → PostgreSQL client: includes (evidence: `README.md`)
- Custom distribution → MongoDB queries: includes (evidence: `README.md`)
- Custom distribution → Kubernetes client: includes (evidence: `README.md`)
- Custom distribution → Trace grouping: includes (evidence: `README.md`)
- Custom distribution → Trace memory store: includes (evidence: `README.md`)
- Custom distribution → Alertmanager export: includes (evidence: `README.md`)
- Custom distribution → Splunk HE client: includes (evidence: `README.md`)
- Custom distribution → OpenSearch templates: includes (evidence: `README.md`)
- Custom distribution → Tail storage: includes (evidence: `README.md`)
- Custom distribution → Azure log decoding: includes (evidence: `README.md`)
- Custom distribution → Kafka client: includes (evidence: `README.md`)
