OpenObserve Docs
MigrationMigrate from grafana to openobserve

Architecture & Terminology

Architecture: LGTM vs OpenObserve

Before — LGTM Stack

LGTM Stack telemetry flow

Components to operate: 6+ — Collector + Loki + Mimir + Tempo + Grafana + object storage (often with MinIO or separate S3 buckets per component). Each has its own Helm chart, config format, scaling knobs, and upgrade path.

After — OpenObserve

OpenObserve Stack telemetry flow

Components to operate: 2 — Collector + OpenObserve. One Helm chart, one config, one storage backend, one upgrade path.

What Changes and What Doesn't

The important thing to understand: your data collection layer stays the same. The applications, exporters, and agents that generate telemetry don't know or care whether the data ends up in Loki or OpenObserve. Only the destination endpoints change.

LayerChanges?Details
Applications (your code)NoOTel SDKs, Prometheus client libraries — unchanged
Exporters (node_exporter, cAdvisor, etc.)NoThey expose metrics, they don't care who scrapes
Collector (OTel Collector, Alloy, Telegraf)Config onlySwap exporter endpoints, same receivers and processors
Backend (Loki/Mimir/Tempo)ReplacedBy OpenObserve
Visualization (Grafana)ReplacedBy OpenObserve's built-in UI

Terminology Mapping

If you're coming from the LGTM stack, most concepts have direct equivalents in OpenObserve. The mapping isn't always 1

— some things are simpler in OpenObserve because there's less to name when everything lives in one system.

Concepts

LGTM Stack ConceptOpenObserve EquivalentNotes
Data SourceData SourceSame concept — where telemetry originates (apps, infra, cloud)
Loki (log backend)Logs (built-in)Logs are a stream type in OpenObserve, not a separate system
Mimir (metrics backend)Metrics (built-in)Metrics are a stream type in OpenObserve
Tempo (trace backend)Traces (built-in)Traces are a stream type in OpenObserve
Grafana (visualization)OpenObserve UI (built-in)Dashboards, exploration, alerting — all in one UI
Stream (Loki log stream)StreamSame concept — a named flow of data. OpenObserve uses streams for logs, metrics, and traces
Label (Loki/Prometheus)Field / ColumnIn Loki, labels are indexed keys. In OpenObserve, every field is queryable via SQL
LogQLSQLOpenObserve uses SQL for log queries (with functions like match_all(), re_match())
PromQLPromQLSame — OpenObserve supports PromQL for metrics queries
TraceQLSQLOpenObserve uses SQL for trace queries
AlertmanagerOpenObserve AlertsBuilt-in alerting with Slack, email, PagerDuty, webhook support
Tenant / Org (Mimir multi-tenancy)OrganizationOpenObserve uses orgs for multi-tenancy (default org is default)
Grafana Agent / AlloyOpenObserve Collector (optional)OTel-based collector optimized for OpenObserve. Or keep using any OTel-compatible collector
PromtailNo equivalent neededReplace with OTel Collector or Fluent Bit — Promtail is Loki-specific
Chunk Store (Loki)Apache Parquet filesOpenObserve stores data as columnar Parquet files in object storage
TSDB blocks (Mimir)Apache Parquet filesSame — unified columnar storage for all signal types
Grafana DashboardOpenObserve DashboardBuilt-in drag-and-drop dashboard builder with 18+ chart types

Protocol Compatibility

The key insight for migration: OpenObserve speaks the same ingestion protocols your data sources already use. You're not changing how data is collected — just where it's sent.

ProtocolLGTM EndpointOpenObserve Endpoint
Prometheus Remote Writehttp://mimir:9009/api/v1/pushhttp://openobserve:5080/api/default/prometheus/api/v1/write
OTLP HTTPhttp://tempo:4318http://openobserve:5080/api/default/
OTLP gRPCtempo:4317openobserve:5081
Loki Push APIhttp://loki:3100/loki/api/v1/pushhttp://openobserve:5080/api/{org}/loki/api/v1/push
JSON over HTTPN/Ahttp://openobserve:5080/api/default/<stream>/_json

Next Steps


Back to Overview | Next: Migrating Metrics

Was this page helpful?

Last updated on

On this page