Observability: metrics, logging, and tracing
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- go, prometheus, sqlite
- Ambito
- api, backend, databases, observability
Direzione di ricerca
Inizia mappando i punti di ingresso del motore di sincronizzazione, dell’API, dello store, delle subscription, del nodo e della configurazione, quindi stabilisci come si integrano i requisiti relativi alle metriche, al logging con slog e al tracing. Verifica l’endpoint Prometheus, la risposta SyncStatus, la configurazione TOML e ogni metrica e span elencati; l’issue non indica file né test, quindi le posizioni dei test devono essere identificate durante la ricerca.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
Implement observability infrastructure for apex: Prometheus metrics, structured logging, and OpenTelemetry tracing.
Metrics
Instrument all subsystems with OTel metrics exposed via Prometheus endpoint.
Sync engine
apex_sync_head(gauge) — last synced heightapex_sync_network_head(gauge) — upstream network headapex_sync_lag_seconds(gauge) — time behind network headapex_sync_backfill_duration(histogram) — per-batch backfill latencyapex_sync_errors_total(counter) — sync errors by typeapex_sync_backfill_progress_pct(gauge) — backfill completion percentage
API
apex_rpc_request_duration(histogram) — per-method latencyapex_rpc_request_total(counter) — per-method call countapex_rpc_errors_total(counter) — per-method errors
Store
apex_store_query_duration(histogram) — SQLite query latencyapex_store_insert_duration(histogram) — insert latencyapex_store_size_bytes(gauge) — DB file size
Subscriptions
apex_subscriptions_active(gauge) — active subscription countapex_subscription_deliveries(counter) — messages deliveredapex_subscription_drops(counter) — messages dropped (slow reader)
Node
apex_build_info(gauge) — with version labelsapex_uptime_seconds(counter)
Logging
- Use
slog(Go stdlib) — no heavy dependencies likeipfs/go-log - Structured key-value pairs: height, namespace, method, duration, error
- Configurable log level at startup (and ideally at runtime via admin endpoint)
Tracing
- OpenTelemetry spans for sync fetch, store operations, and RPC handlers
- Configurable exporter (stdout for dev, OTLP for production)
API endpoint
Expose a unified SyncStatus() endpoint returning current synced height, network head, sync state (backfilling/streaming), lag, and active subscriptions in one call. celestia-node spreads this across 4 separate modules.
Configuration
[observability]
metrics_address = "0.0.0.0:9090" # Prometheus endpoint
log_level = "info" # debug, info, warn, error
tracing_enabled = false
tracing_endpoint = "" # OTLP endpoint
- Lingua principale
- Go
- Stelle
- 4
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di evstack/apex
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
Tutte le issue di evstack/apex
Issue simili
-
area/dev-productivity area/disaster-recovery area/ipcei kind/enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
kind/bug status/0-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
🤔 refinement needed
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
equinor/radix-operator#1979 ·