Zum Inhalt springen

OpenObserve – Petabyte-Scale Observability Platform Cheatsheet

OpenObserve – Petabyte-Scale Observability Platform Cheatsheet

OpenObserve (O2) ist eine Open-Source Observability-Plattform für Logs, Metrics und Traces, geschrieben in Rust. Seine definierende Design-Wahl ist Speicherung von Daten in Object Storage (S3, GCS, MinIO) in komprimiertem Parquet statt auf teuren lokalen Disks – die Grundlage seiner Behauptung dramatisch niedrigerer Speicherkosten als Elasticsearch-basierte Stacks. Es wird als einzige Binärdatei mit einer eingebauten UI ausgeliefert, spricht OpenTelemetry nativ und fragt mit SQL.

Installation

MethodeBefehl
BinärDownload von GitHub Releases, dann ./openobserve
Dockerdocker run -d -p 5080:5080 -e ZO_ROOT_USER_EMAIL=a@b.c -e ZO_ROOT_USER_PASSWORD=pass public.ecr.aws/zinclabs/openobserve:latest
KubernetesHelm Chart verfügbar
UIhttp://localhost:5080
ÜberprüfenMelden Sie sich mit den Root-Anmeldedaten an, die Sie setzen

Speichermodi

ModusVerwenden
Lokale DiskSingle-Node, Dev/Small Deployments
S3 / GCS / Azure BlobProduction, günstige Langzeit-Retention
MinIOSelf-Hosted Object Storage
# Point zu S3 für Production-Speicherung
export ZO_LOCAL_MODE=false
export ZO_S3_BUCKET_NAME=my-o2-bucket
export ZO_S3_REGION_NAME=us-east-1

Daten aufnehmen

QuelleWie
OpenTelemetrySenden Sie OTLP zu /api/{org}/v1/traces, /v1/logs, /v1/metrics
HTTP JSONPOST /api/{org}/{stream}/_json
Fluent Bit / VectorOutput-Plugin zum O2 HTTP Endpunkt
Prometheus Remote Write/api/{org}/prometheus/api/v1/write
SyslogTCP/UDP Listener
# Bulk-Aufnahme JSON Logs
curl -u "$USER:$PASS" -X POST \
  "http://localhost:5080/api/default/app_logs/_json" \
  -H "Content-Type: application/json" \
  -d '[{"level":"error","message":"db timeout","service":"api"}]'

Abfragen (SQL)

-- Finden Sie neuere Fehler für einen Service
SELECT * FROM app_logs
WHERE level = 'error' AND service = 'api'
ORDER BY _timestamp DESC
LIMIT 100;

-- Zählen Sie Fehler pro Service über Zeit
SELECT service, count(*) AS errors
FROM app_logs
WHERE level = 'error'
GROUP BY service
ORDER BY errors DESC;
FeatureNotiz
SQL-AbfragenVertraute Syntax über Log-Streams
Full-Text Searchmatch_all('timeout')
Time RangeAusgewählt in der UI oder via _timestamp Filter
Gespeicherte SuchenWiederverwendbare Abfragen

Kernkonzepte

BegriffBedeutung
OrganizationTop-level Tenant
StreamEin benannter Daten-Stream (wie ein Index)
SchemaAbgeleitet von aufgenommenen Daten
FunctionVRL-Transformation bei Aufnahme oder Abfrage angewendet
AlertGeplante Abfrage + Destination

Alerts & Dashboards

KapazitätWie
Geplanter AlertAbfrage + Schwellwert + Auswertungs-Intervall
Echtzeit-AlertTrigger auf abgestimmte Records
DestinationsWebhook, Slack, E-Mail, PagerDuty
DashboardsErbauen Sie Panels von SQL-Abfragen
TemplatesWiederverwendbare Alert-Nachrichten-Formate

Ingest-Zeit Functions (VRL)

# Redigieren Sie ein Feld und leiten Sie ein neues bei Aufnahme ab
.email = "REDACTED"
.status_class = floor(.status / 100)

Funktionen lassen Sie PII scrubben oder Records bereichern vor Speicherung – billiger als es zur Abfrage-Zeit zu tun.

OpenObserve vs Alternativen

AspektOpenObserveElasticsearch/ELKGrafana Loki
SpeicherungObject Storage (Parquet)Lokale Disk IndicesObject Storage (Chunks)
KostenprofileSehr niedrigHochNiedrig
AbfrageSQLQuery DSL / KQLLogQL
ScopeLogs + Metrics + TracesLogs (+ APM)Logs (Grafana Stack für Rest)
SetupEinzelne BinärdateiMulti-KomponenteMulti-Komponente

Paaren Sie mit OpenTelemetry für Instrumentation; vergleichen Sie mit Grafana Loki und Elasticsearch.

Ressourcen