RousselTMLEARNING

Article · OpenObserve: from discovery to expertise

OpenObserve in production: best practices

1. Going to production #

From a single node to a cluster.

Which mode to choose? #

SituationMode
Trial, small team, losing a few minutes is acceptableSingle node on disk
Single node, data to protectSingle node with object storage
Availability required, heavy loadHigh availability on Kubernetes

High availability is deployed with the official Helm chart, which requires object storage and PostgreSQL:

helm repo add openobserve https://charts.openobserve.ai
helm repo update
helm install o2 openobserve/openobserve -n openobserve --create-namespace -f values.yaml

2. Best practices #

What avoids bad surprises.

Data #

  • One stream per log family: the schema of a too heterogeneous stream grows fast, and ZO_COLS_PER_RECORD_LIMIT (1000 fields) rejects events beyond that.
  • Per-stream retention: keep audit long, debug logs briefly.
  • Few partitions, on few values: level or environment, never an identifier.
  • Time-bounded queries: this is the first performance lever.

Security #

  • Change the root password, and do not use it for collection.
  • Put OpenObserve behind a TLS proxy.
  • Keep SSRF protection on, allowing only necessary targets.
  • Mask sensitive data in a real-time pipeline.

Operations #

  • Back up: with local disk, the whole data folder; in HA, object storage and PostgreSQL.
  • Pin an image version rather than latest, and read the release notes.
  • Monitor OpenObserve: it exposes its metrics on /metrics.
  • Disable telemetry if your policy requires it: ZO_TELEMETRY=false.

3. Official sources #

To go further.

Documentation #

📄 OpenObserve in production: best practices →

My progress

  • ⏱ Estimated time : ≈ 3 min

Sign in to track your progress and take notes. Sign in

💬 Ask a question

Recommended Articles

Arize en production : Phoenix auto-hébergé, Arize AX, sécurité, coûts et monitoring

Passer en production : Phoenix avec PostgreSQL et authentification, OpenTelemetry Collector devan...

Bindplane en production : haute disponibilité, sécurité, Kubernetes et configuration as code

Exploiter Bindplane en production : serveurs actifs-actifs, PostgreSQL et bus d'événements, TLS p...

OpenTelemetry sur Kubernetes : Operator, auto-instrumentation et Collector

Déployer OpenTelemetry sur Kubernetes : modes de déploiement du Collector (DaemonSet, Deployment,...

ClickStack : ClickHouse, HyperDX et OpenTelemetry

La pile d'observabilité officielle de ClickHouse : installation tout-en-un, interface HyperDX (re...

OpenSearch in production: ISM, backups, security and best practices

Automate the lifecycle with ISM, back up with snapshots, manage roles and size an OpenSearch clus...

Grafana Alloy: Understanding and exploiting the User Interface (UI)

Discover how to enable, secure, and use Grafana Alloy's built-in web interface to visualize your ...

Grafana Alloy: Metrics Collection (Prometheus & Ecosystem)

Learn how to configure Grafana Alloy to collect, transform, and forward metrics using the Prometh...

Grafana Alloy: Log Management with Loki

Discover how to configure Grafana Alloy to read log files, journald, or network streams, process ...

Grafana Alloy: Trace Management with Tempo

Dive into distributed trace processing. Learn how to ingest OTLP, Jaeger, or Zipkin traces with G...

Support us

♥ SUPPORT US

Support RousselTM Learning

Courses, articles, labs and certificates stay free with no intrusive ads. A voluntary contribution, of any amount you choose, pays for hosting, lab environments and new content.

Contribute with PayPal Any amount · card or PayPal accountLearn more
QR code PayPal
Or scan this QR code with your phone

Thank you, every contribution counts!