Backends
Mermin exports Flow Traces via the OpenTelemetry Protocol (OTLP), which means it works with any OTLP-enabled observability backend or collector.
What You Need
To receive Flow Traces from Mermin, you need one of:
OTLP-Enabled Collector: OpenTelemetry Collector that receives OTLP and forwards to your backend(s)
OTLP Data Platform: An observability platform with native OTLP ingestion
OpenTelemetry Collector (Recommended)
The OpenTelemetry Collector is the most flexible option:
Receives OTLP from Mermin via gRPC or HTTP
Processes, batches, and transforms telemetry data
Exports to multiple backends simultaneously
Provides buffering and retry logic
Example Configuration: See docs/deployment/examples/local_otel/ for a complete setup with OpenTelemetry Collector, including Mermin configuration and collector pipeline.
Basic Mermin Configuration
export "traces" {
otlp = {
endpoint = "http://otel-collector:4317" # Collector's OTLP gRPC endpoint
protocol = "grpc"
}
}OTLP-Compatible Data Platforms
Mermin Flow Traces work with any platform that supports OTLP trace ingestion:
Elastic Stack
Elasticsearch with APM Server or OpenTelemetry Collector can ingest OTLP traces.
Use Case: Full-text search, complex aggregations, APM integration, machine learning
How to Connect:
Point Mermin → OpenTelemetry Collector → Elasticsearch exporter
Or point Mermin → Elastic APM Server (OTLP endpoint)
Example: See docs/deployment/examples/netobserv_os_simple_svc/ for OpenSearch (Elastic-compatible) deployment
OpenSearch
Open-source alternative to Elasticsearch with native OTLP support via OpenTelemetry Collector.
Use Case: Open-source search and analytics, cost-effective storage
Examples:
docs/deployment/examples/netobserv_os_simple_svc/- Basic OpenSearch setupdocs/deployment/examples/netobserv_os_simple_gke_gw/- GKE deployment with Gateway API
Grafana Tempo
Distributed tracing backend with native OTLP support and TraceQL query language.
Use Case: Scalable trace storage, cost-effective long-term retention
How to Connect: Point Mermin directly to Tempo's OTLP endpoint (gRPC on port 4317)
export "traces" {
otlp = {
endpoint = "http://tempo:4317"
protocol = "grpc"
}
}Example: Coming soon
Jaeger
Distributed tracing platform with native OTLP receiver.
Use Case: Service maps, trace visualization, root cause analysis
How to Connect: Point Mermin to Jaeger's OTLP collector endpoint
export "traces" {
otlp = {
endpoint = "http://jaeger-collector:4317"
protocol = "grpc"
}
}Example: Coming soon
Grafana Cloud, Datadog, New Relic, Honeycomb, etc.
Most commercial observability platforms now support OTLP ingestion.
How to Connect:
Obtain your platform's OTLP endpoint URL
Configure authentication (usually API key or bearer token)
Point Mermin to the endpoint with auth
export "traces" {
otlp = {
endpoint = "https://otlp.provider.com:4317"
protocol = "grpc"
headers = {
"authorization" = "Bearer ${API_TOKEN}"
}
}
}Examples: Coming soon
Flow Trace Data Model
Each Flow Trace is an OpenTelemetry span containing:
Span Attributes:
Network 5-tuple: source/dest IPs, ports, protocol
Bidirectional counters: bytes sent/received, packets sent/received
TCP state: flags (SYN, FIN, RST), connection state
Kubernetes metadata: pod, service, deployment, namespace, labels
Community ID for flow correlation
Resource Attributes:
Kubernetes cluster name
Node name
Mermin version
This standardized format allows querying Flow Traces using native backend query languages (TraceQL, KQL, Lucene, etc.).
Testing with Stdout
For local development and testing, you can output Flow Traces to stdout instead of OTLP:
export "traces" {
stdout = "text_indent" # Human-readable format
}View traces in Mermin logs:
kubectl logs -f -l app.kubernetes.io/name=merminNext Steps
Choose your backend from the options above
Review example configurations in
examples/Configure OTLP export in your Mermin deployment - see OTLP Exporter Configuration
Set up authentication and TLS for production - see OTLP Exporter Configuration
Create dashboards to visualize Flow Traces in your chosen platform
Last updated