QUICK START:PatternsErrors & FixesSecurityBenchmarksDevOps RecipesCheatsheetsInterviewCompareTopicsHTMLCSSJavaScriptTypeScriptPythonSQLReactNext.jsNode.jsLinux & UbuntuKotlinSwiftC# / .NETJavaGoRustC++DSASystem DesignDevOpsCybersecurityAI / ML
ExpertObservability & Monitoring

OpenTelemetry Collector Pipeline: Tempo & Mimir

Unify your observability pipeline by using the OpenTelemetry Collector as a central ingestion point for telemetry data, processing and exporting it to optimized backends.

OpenTelemetryGrafana TempoGrafana Mimir

Prerequisites

  • Otel Collector binary or Docker image

Configuration Files

otel-collector.yaml/etc/otelcol/config.yaml
receivers:\n  otlp:\n    protocols:\n      grpc: {}\n      http: {}\nexporters:\n  otlp/tempo:\n    endpoint: "tempo:4317"\n    tls: { insecure: true }\n  prometheusremotewrite:\n    endpoint: "http://mimir:9009/api/v1/push"\nservice:\n  pipelines:\n    traces:\n      receivers: [otlp]\n      exporters: [otlp/tempo]\n    metrics:\n      receivers: [otlp]\n      exporters: [prometheusremotewrite]
Explanation:Receives OTLP data and routes traces to Tempo via gRPC, and metrics to Mimir via Prometheus remote write.

Verification Steps

1

Checks the collector health extension.

$curl http://localhost:13133/health
Expected Output{"status":"Server available"}

Production Gotchas

  • Always use the batch processor in the pipeline to compress data and reduce network calls to backends.

Frequently Asked Questions

Why use Otel Collector instead of sending directly?

It provides a vendor-agnostic buffer, allowing you to manipulate data (filter, batch, enrich) and change backends without modifying application code.