# grafana-cold-storage/agent architecture

> Architecture diagram of the GitHub repository grafana-cold-storage/agent, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/grafana-cold-storage/agent
- Repository: https://github.com/grafana-cold-storage/agent

## Overview

Grafana Agent is an EOL OpenTelemetry Collector distribution whose Flow mode lets users configure components as programmable telemetry pipelines. The principal workflow is configuring collection, optional processing, and delivery of metrics, logs, traces, or profiles. The README documents the component-wiring model and ecosystem support; the tree shows representative implementations and a Flow component-node manager. Since most runtime wiring source was not sampled, edges are limited to documented pipeline flow and directly supported component behavior.

Main entry points: [`internal/flow/internal/controller/component_node_manager.go`](https://github.com/grafana-cold-storage/agent/blob/main/internal/flow/internal/controller/component_node_manager.go) (Component nodes), [`internal/component/otelcol/processor/processor.go`](https://github.com/grafana-cold-storage/agent/blob/main/internal/component/otelcol/processor/processor.go) (OTel processors), [`internal/component/otelcol/connector/connector.go`](https://github.com/grafana-cold-storage/agent/blob/main/internal/component/otelcol/connector/connector.go) (OTel connectors), [`internal/component/otelcol/exporter/exporter.go`](https://github.com/grafana-cold-storage/agent/blob/main/internal/component/otelcol/exporter/exporter.go) (OTel exporters)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_flow["Flow runtime"]
  node_flowcmd["Flow command<br/>[main.go]"]
  node_nodes["Component nodes"]
  node_registry["Component registry<br/>[all.go]"]
end

subgraph group_catalog["Component capabilities"]
  node_discovery["Service discovery<br/>[discovery.go]"]
  node_promop["Prometheus operator<br/>[crdmanager.go]"]
  node_pyroscope["Profile scraping<br/>[manager.go]"]
end

subgraph group_logs["Log pipeline"]
  node_lokisource["Log sources<br/>[file.go]"]
  node_lokipipeline["Log processing<br/>[pipeline.go]"]
  node_lokiwrite["Loki delivery<br/>[write.go]"]
  node_lokiclient["Loki clients<br/>[manager.go]"]
end

subgraph group_otel["OpenTelemetry pipeline"]
  node_otelreceiver["OTel receivers<br/>[receiver.go]"]
  node_otelprocessor["OTel processors<br/>[processor.go]"]
  node_otelconnector["OTel connectors<br/>[connector.go]"]
  node_otelexporter["OTel exporters<br/>[exporter.go]"]
end

subgraph group_static["Static integrations"]
  node_integrationmgr["Integration manager<br/>[manager.go]"]
  node_integrationcontroller["Integration controller<br/>[controller.go]"]
  node_instancegroups["Instance groups<br/>[group_manager.go]"]
end

node_user(("Agent operator"))
node_backend(("Telemetry backends"))

node_user -->|"runs"| node_flowcmd
node_flowcmd -->|"starts runtime"| node_nodes
node_nodes -->|"looks up components"| node_registry
node_nodes -->|"instantiates"| node_discovery
node_nodes -->|"instantiates"| node_promop
node_nodes -->|"instantiates"| node_pyroscope
node_nodes -->|"instantiates"| node_lokisource
node_nodes -->|"instantiates"| node_lokipipeline
node_nodes -->|"instantiates"| node_lokiwrite
node_nodes -->|"instantiates"| node_otelreceiver
node_nodes -->|"instantiates"| node_otelprocessor
node_nodes -->|"instantiates"| node_otelconnector
node_nodes -->|"instantiates"| node_otelexporter
node_lokisource -->|"forwards entries"| node_lokipipeline
node_lokiwrite -->|"uses clients"| node_lokiclient
node_otelreceiver -->|"forwards signals"| node_otelprocessor
node_otelprocessor -->|"forwards signals"| node_otelconnector
node_otelconnector -->|"forwards signals"| node_otelexporter
node_otelexporter -->|"exports telemetry"| node_backend
node_integrationmgr -->|"applies scrape configs"| node_instancegroups
node_integrationcontroller -.->|"exposes metrics"| node_backend

click node_flowcmd "https://github.com/grafana-cold-storage/agent/blob/main/cmd/grafana-agent-flow/main.go"
click node_nodes "https://github.com/grafana-cold-storage/agent/blob/main/internal/flow/internal/controller/component_node_manager.go"
click node_registry "https://github.com/grafana-cold-storage/agent/blob/main/internal/component/all/all.go"
click node_discovery "https://github.com/grafana-cold-storage/agent/blob/main/internal/component/discovery/discovery.go"
click node_promop "https://github.com/grafana-cold-storage/agent/blob/main/internal/component/prometheus/operator/common/crdmanager.go"
click node_pyroscope "https://github.com/grafana-cold-storage/agent/blob/main/internal/component/pyroscope/scrape/manager.go"
click node_lokisource "https://github.com/grafana-cold-storage/agent/blob/main/internal/component/loki/source/file/file.go"
click node_lokipipeline "https://github.com/grafana-cold-storage/agent/blob/main/internal/component/loki/process/stages/pipeline.go"
click node_lokiwrite "https://github.com/grafana-cold-storage/agent/blob/main/internal/component/loki/write/write.go"
click node_lokiclient "https://github.com/grafana-cold-storage/agent/blob/main/internal/component/common/loki/client/manager.go"
click node_otelreceiver "https://github.com/grafana-cold-storage/agent/blob/main/internal/component/otelcol/receiver/receiver.go"
click node_otelprocessor "https://github.com/grafana-cold-storage/agent/blob/main/internal/component/otelcol/processor/processor.go"
click node_otelconnector "https://github.com/grafana-cold-storage/agent/blob/main/internal/component/otelcol/connector/connector.go"
click node_otelexporter "https://github.com/grafana-cold-storage/agent/blob/main/internal/component/otelcol/exporter/exporter.go"
click node_integrationmgr "https://github.com/grafana-cold-storage/agent/blob/main/static/integrations/manager.go"
click node_integrationcontroller "https://github.com/grafana-cold-storage/agent/blob/main/static/integrations/v2/controller.go"
click node_instancegroups "https://github.com/grafana-cold-storage/agent/blob/main/static/metrics/instance/group_manager.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_flowcmd,node_nodes,node_registry toneBlue
class node_discovery,node_promop,node_pyroscope toneAmber
class node_lokisource,node_lokipipeline,node_lokiwrite,node_lokiclient toneMint
class node_otelreceiver,node_otelprocessor,node_otelconnector,node_otelexporter toneRose
class node_integrationmgr,node_integrationcontroller,node_instancegroups,node_user,node_backend toneIndigo
```

## Components

### Flow runtime

- [Flow command](https://github.com/grafana-cold-storage/agent/blob/main/cmd/grafana-agent-flow/main.go): `cmd/grafana-agent-flow/main.go`
- [Component nodes](https://github.com/grafana-cold-storage/agent/blob/main/internal/flow/internal/controller/component_node_manager.go): `internal/flow/internal/controller/component_node_manager.go`
- [Component registry](https://github.com/grafana-cold-storage/agent/blob/main/internal/component/all/all.go): `internal/component/all/all.go`

### Component capabilities

- [Service discovery](https://github.com/grafana-cold-storage/agent/blob/main/internal/component/discovery/discovery.go): `internal/component/discovery/discovery.go`
- [Prometheus operator](https://github.com/grafana-cold-storage/agent/blob/main/internal/component/prometheus/operator/common/crdmanager.go): `internal/component/prometheus/operator/common/crdmanager.go`
- [Profile scraping](https://github.com/grafana-cold-storage/agent/blob/main/internal/component/pyroscope/scrape/manager.go): `internal/component/pyroscope/scrape/manager.go`

### Log pipeline

- [Log sources](https://github.com/grafana-cold-storage/agent/blob/main/internal/component/loki/source/file/file.go): `internal/component/loki/source/file/file.go`
- [Log processing](https://github.com/grafana-cold-storage/agent/blob/main/internal/component/loki/process/stages/pipeline.go): `internal/component/loki/process/stages/pipeline.go`
- [Loki delivery](https://github.com/grafana-cold-storage/agent/blob/main/internal/component/loki/write/write.go): `internal/component/loki/write/write.go`
- [Loki clients](https://github.com/grafana-cold-storage/agent/blob/main/internal/component/common/loki/client/manager.go): `internal/component/common/loki/client/manager.go`

### OpenTelemetry pipeline

- [OTel receivers](https://github.com/grafana-cold-storage/agent/blob/main/internal/component/otelcol/receiver/receiver.go): `internal/component/otelcol/receiver/receiver.go`
- [OTel processors](https://github.com/grafana-cold-storage/agent/blob/main/internal/component/otelcol/processor/processor.go): `internal/component/otelcol/processor/processor.go`
- [OTel connectors](https://github.com/grafana-cold-storage/agent/blob/main/internal/component/otelcol/connector/connector.go): `internal/component/otelcol/connector/connector.go`
- [OTel exporters](https://github.com/grafana-cold-storage/agent/blob/main/internal/component/otelcol/exporter/exporter.go): `internal/component/otelcol/exporter/exporter.go`

### Static integrations

- [Integration manager](https://github.com/grafana-cold-storage/agent/blob/main/static/integrations/manager.go): `static/integrations/manager.go`
- [Integration controller](https://github.com/grafana-cold-storage/agent/blob/main/static/integrations/v2/controller.go): `static/integrations/v2/controller.go`
- [Instance groups](https://github.com/grafana-cold-storage/agent/blob/main/static/metrics/instance/group_manager.go): `static/metrics/instance/group_manager.go`

### Other components

- **Agent operator**
- **Telemetry backends**

## Connections

- Agent operator → Flow command: runs
- Flow command → Component nodes: starts runtime
- Component nodes → Component registry: looks up components
- Component nodes → Service discovery: instantiates
- Component nodes → Prometheus operator: instantiates
- Component nodes → Profile scraping: instantiates
- Component nodes → Log sources: instantiates
- Component nodes → Log processing: instantiates
- Component nodes → Loki delivery: instantiates
- Component nodes → OTel receivers: instantiates
- Component nodes → OTel processors: instantiates
- Component nodes → OTel connectors: instantiates
- Component nodes → OTel exporters: instantiates
- Log sources → Log processing: forwards entries
- Loki delivery → Loki clients: uses clients
- OTel receivers → OTel processors: forwards signals
- OTel processors → OTel connectors: forwards signals
- OTel connectors → OTel exporters: forwards signals
- OTel exporters → Telemetry backends: exports telemetry
- Integration manager → Instance groups: applies scrape configs
- Integration controller → Telemetry backends: exposes metrics
