Pular para o conteúdo

OpenObserve - Plataforma de Observabilidade em Escala Petabyte - Guia de Referência

OpenObserve - Plataforma de Observabilidade em Escala Petabyte - Guia de Referência

OpenObserve (O2) é uma plataforma de observabilidade de código aberto para logs, métricas e traces, escrita em Rust. Sua escolha de design definidora é armazenar dados em object storage (S3, GCS, MinIO) em Parquet comprimido em vez de em discos locais caros — a base de sua reivindicação de custo de armazenamento dramaticamente mais baixo que stacks baseadas em Elasticsearch. Ela é enviada como um único binário com uma UI integrada, fala OpenTelemetry nativamente e consulta com SQL.

Instalação

MétodoComando
Bináriobaixar de GitHub Releases, depois ./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
KubernetesGráfico Helm disponível
UIhttp://localhost:5080
Verificarfazer login com as credenciais raiz que você definiu

Modos de Armazenamento

ModoUse
Disco localNó único, implantações dev/pequenas
S3 / GCS / Azure BlobProdução, retenção de longo prazo barata
MinIOObject storage auto-hospedado
# Apontar para S3 para armazenamento de produção
export ZO_LOCAL_MODE=false
export ZO_S3_BUCKET_NAME=my-o2-bucket
export ZO_S3_REGION_NAME=us-east-1

Ingestão de Dados

FonteComo
OpenTelemetryEnviar OTLP para /api/{org}/v1/traces, /v1/logs, /v1/metrics
HTTP JSONPOST /api/{org}/{stream}/_json
Fluent Bit / VectorPlugin de saída para endpoint O2 HTTP
Prometheus remote write/api/{org}/prometheus/api/v1/write
SyslogListener TCP/UDP
# Ingestão em lote de logs 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"}]'

Consultando (SQL)

-- Encontrar erros recentes para um serviço
SELECT * FROM app_logs
WHERE level = 'error' AND service = 'api'
ORDER BY _timestamp DESC
LIMIT 100;

-- Contar erros por serviço ao longo do tempo
SELECT service, count(*) AS errors
FROM app_logs
WHERE level = 'error'
GROUP BY service
ORDER BY errors DESC;
RecursoNota
Consultas SQLSintaxe familiar sobre streams de log
Busca de texto completomatch_all('timeout')
Intervalo de tempoSelecionado na UI ou via filtros _timestamp
Buscas salvasConsultas reutilizáveis

Conceitos Principais

TermoSignificado
OrganizaçãoTenant de nível superior
StreamUm stream de dados nomeado (como um índice)
SchemaInferido de dados ingeridos
FunçãoTransformação VRL aplicada em ingestão ou consulta
AlertaConsulta programada + destino

Alertas & Dashboards

CapacidadeComo
Alerta programadoConsulta + threshold + intervalo de avaliação
Alerta em tempo realDisparar em registros ingeridos correspondentes
DestinosWebhook, Slack, email, PagerDuty
DashboardsConstruir painéis de consultas SQL
TemplatesFormatos de mensagem de alerta reutilizáveis

Funções em Tempo de Ingestão (VRL)

# Redactar um campo e derivar um novo em ingestão
.email = "REDACTED"
.status_class = floor(.status / 100)

Funções deixam você limpar PII ou enriquecer registros antes do armazenamento — mais barato que fazer em tempo de consulta.

OpenObserve vs Alternativas

AspectoOpenObserveElasticsearch/ELKGrafana Loki
ArmazenamentoObject storage (Parquet)Índices de disco localObject storage (chunks)
Perfil de custoMuito baixoAltoBaixo
ConsultaSQLQuery DSL / KQLLogQL
EscopoLogs + métricas + tracesLogs (+ APM)Logs (Grafana stack para resto)
SetupBinário únicoMulti-componenteMulti-componente

Combina com OpenTelemetry para instrumentação; compare com Grafana Loki e Elasticsearch.

Recursos