Salta ai contenuti

OpenObserve - Foglio di aiuto della piattaforma di osservabilità a scala petabyte

OpenObserve - Foglio di aiuto della piattaforma di osservabilità a scala petabyte

OpenObserve (O2) è una piattaforma di osservabilità open-source per log, metriche e tracce, scritta in Rust. La sua scelta di progettazione distintiva è l”archiviazione dei dati nell”object storage (S3, GCS, MinIO) in Parquet compresso piuttosto che su dischi costosi e locali — la base della sua affermazione di costi di archiviazione significativamente inferiori rispetto agli stack basati su Elasticsearch. Viene fornito come un singolo binario con un”interfaccia utente incorporata, supporta OpenTelemetry nativamente e interroga con SQL.

Installazione

MetodoComando
Binarioscarica da GitHub Releases, quindi ./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 disponibile
UIhttp://localhost:5080
Verificaaccedi con le credenziali root che hai impostato

Modalità di archiviazione

ModalitàUso
Local diskNodo singolo, deployment dev/piccoli
S3 / GCS / Azure BlobProduzione, conservazione a lungo termine economica
MinIOObject storage auto-ospitato
# Punta a S3 per l''archiviazione di produzione
export ZO_LOCAL_MODE=false
export ZO_S3_BUCKET_NAME=my-o2-bucket
export ZO_S3_REGION_NAME=us-east-1

Ingestione di dati

FonteCome
OpenTelemetryInvia OTLP a /api/{org}/v1/traces, /v1/logs, /v1/metrics
HTTP JSONPOST /api/{org}/{stream}/_json
Fluent Bit / VectorPlugin di output all”endpoint O2 HTTP
Prometheus remote write/api/{org}/prometheus/api/v1/write
SyslogListener TCP/UDP
# Ingestione in massa di log JSON
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"}]'

Interrogazione (SQL)

-- Trova errori recenti per un servizio
SELECT * FROM app_logs
WHERE level = 'error' AND service = 'api'
ORDER BY _timestamp DESC
LIMIT 100;

-- Conta gli errori per servizio nel tempo
SELECT service, count(*) AS errors
FROM app_logs
WHERE level = 'error'
GROUP BY service
ORDER BY errors DESC;
FunzionalitàNota
Query SQLSintassi familiare su flussi di log
Ricerca full-textmatch_all('timeout')
Intervallo di tempoSelezionato nell”interfaccia o tramite filtri _timestamp
Ricerche salvateQuery riutilizzabili

Concetti principali

TermineSignificato
OrganizationTenant di primo livello
StreamUn flusso di dati denominato (come un indice)
SchemaDedotto dai dati ingeriti
FunctionTrasformazione VRL applicata all”ingestione o alla query
AlertQuery programmata + destinazione

Avvisi e dashboard

CapacitàCome
Avviso programmatoQuery + soglia + intervallo di valutazione
Avviso in tempo realeAttiva sui record ingeriti corrispondenti
DestinazioniWebhook, Slack, email, PagerDuty
DashboardCrea pannelli da query SQL
ModelliFormati di messaggio di avviso riutilizzabili

Funzioni di ingestione (VRL)

# Cura un campo e deriva uno nuovo all''ingestione
.email = "REDACTED"
.status_class = floor(.status / 100)

Le funzioni ti consentono di pulire PII o arricchire i record prima dell”archiviazione — più economico che farlo al momento della query.

OpenObserve vs Alternative

AspettoOpenObserveElasticsearch/ELKGrafana Loki
StorageObject storage (Parquet)Indici su disco localeObject storage (chunk)
Profilo di costoMolto bassoAltoBasso
QuerySQLQuery DSL / KQLLogQL
PortataLog + metriche + tracceLog (+ APM)Log (stack Grafana per il resto)
SetupSingolo binarioMulti-componenteMulti-componente

Abbinato con OpenTelemetry per la strumentazione; confronta con Grafana Loki e Elasticsearch.

Risorse