Tram¶
A lightweight, extensible pipeline framework for logs, metrics and traces.
Tram is a cloud-native, in-memory data pipeline framework for building real-time data processing flows. It receives OpenTelemetry data, filters, validates and batches it, and routes it through tree-structured pipelines to any number of destinations.
flowchart LR
otlp([OTLP source]) --> filter[cel_filter] --> batch[batch] --> backend([OTLP sink])
otlp --> validator[cel_validator] --> nats([NATS sink])
otlp --> debug([debug sink])
Features¶
-
Tree-Based Pipelines
Define data flows with a single source, optional stages and any number of sinks as leaves.
-
Cloud-Native
Configure streams through the HTTP/gRPC API, JSON files or Kubernetes custom resources. Everything runs in memory.
-
Extensible
Easily add custom sources, stages and sinks.
-
Real-Time
An event-driven architecture for low-latency data flows.
-
OTLP-Native
Logs, metrics and traces flow through the pipelines as OpenTelemetry Protocol data.
-
Observable
Records, durations and request sizes of every node are served as Prometheus metrics.
Quick Start¶
The HTTP API then listens on localhost:8080. Create a first stream that logs a generated event every 5 seconds:
curl -X PUT http://localhost:8080/v1/streams/my-pipeline \
-H "Content-Type: application/json" \
-d '{
"stream": {
"source": { "name": "event-generator", "type": "generator", "spec": { "interval": "5s" } },
"sinks": [ { "name": "console", "type": "debug", "from": "event-generator" } ]
}
}'
Learn More¶
-
Install Tram, run it and create your first streams
-
How sources, stages and sinks form a stream
-
Every source, stage and sink with its configuration
-
Run streams described by
Streamcustom resources -
What pipelines cost, and how to size deployments
-
Development setup, adding components and guidelines