SyncWave Blog
Tecnologia 5 min de lectura 53

Logdive: L'alternativa open source a jq per a logs

Logdive ofereix una solució local i eficient per consultar logs estructurats, omplint el buit entre les eines de línia de comandaments i les plataformes complexes.

developer coding logs

Logdive: Un salt endavant en la consulta de logs per a desenvolupadors

En el vertiginós món de la programació i el desenvolupament de programari, depurar aplicacions en producció pot convertir-se en un malson. Quan alguna cosa falla a altes hores de la matinada, les opcions solen ser limitades i poc eficients: des de grep en arxius de log rotats fins a complexes cadenes de comandaments jq que es tornen inmanejables. Les solucions més robustes, com Loki o Elastic, sovint impliquen una sobrecàrrega d'infraestructura i configuració que no sempre és desitjable, especialment per a projectes petits o investigacions personals.

És en aquest escenari on emergeix logdive, una nova eina open source que busca democratitzar l'accés i la consulta de logs estructurats de forma local i eficient. Nascut de la frustració de necessitar una versió de jq amb memòria, rangs de temps i filtres avançats, logdive es presenta com una solució pragmàtica i poderosa.

El problema: Eines de logs, entre la simplicitat i la complexitat

Els enginyers de backend sovint s'enfronten a logs JSON ben estructurats, però les eines disponibles operen en extrems oposats. D'una banda, jq és excel·lent per a arxius individuals i consultes puntuals, però manca de memòria, rangs temporals o la capacitat de filtrar a través de múltiples arxius. D'altra banda, plataformes com Datadog, Splunk o Elastic exigeixen una inversió considerable en infraestructura, costos i configuració, la qual cosa és un overkill per a molts escenaris.

Logdive es posiciona precisament en aquest nínxol, oferint un binari únic escrit en Rust que, un cop instal·lat (cargo install logdive), permet indexar i consultar logs directament a la teva màquina local. Sense dimonis (daemons) que gestionar, sense dependències al núvol i sense arxius de configuració YAML.

Logdive en acció: Ingesta i consulta eficients

L'operació de logdive és sorprenentment senzilla:

  • Ingesta de logs: Pots alimentar logdive des d'un arxiu de log o mitjançant un pipe des de la sortida d'altres comandaments, com docker logs.

    logdive ingest --file ./logs/app.log
    docker logs my-container | logdive ingest --tag my-container
    
  • Consultes potents: El llenguatge de consulta permet filtres per camps específics, rangs de temps i l'ús de l'operador CONTAINS. Els camps coneguts (timestamp, level, message, tag) es beneficien d'índexs directes en SQLite, mentre que els camps arbitraris es consulten a través de json_extract().

    logdive query 'level=error AND service=payments last 2h'
    logdive query 'message contains "timeout"' --format json | jq
    
  • Estadístiques i API: L'eina també ofereix logdive stats per inspeccionar les dades indexades i, opcionalment, exposa una API HTTP de només lectura (logdive-api) per a consultes remotes.

Disseny i rendiment: El poder de Rust i SQLite

L'elecció de Rust per al desenvolupament de logdive no és casual. Permet crear un binari autocontingut, sense runtime extern, amb anàlisi zero-copy, integració directa de SQLite i concurrència real per a la ingesta. El resultat són binaris sorprenentment petits (al voltant de 3.7 MB per a logdive) i un rendiment notable.

Les mètriques de rendiment són impressionants:

  • Ingesta: fins a ~210k línies/segon.
  • Consultes en camps coneguts: latències de ~17 μs.
  • Consultes en camps JSON: fins a ~3.6 ms.

Logdive està dissenyat per ser petit en abast, però prou expressiu com per ser útil. La versió 0.1.0 se centra en les necessitats essencials d'un side project o un equip petit.

A qui va dirigit (i a qui no)

Logdive és ideal per a:

  • Enginyers de backend que depuren incidents de producció amb còpies locals de logs.
  • Equips petits sense pressupost dedicat per a observabilitat.
  • Desenvolupadors que utilitzen Docker localment i desitgen consultar docker logs de forma instantània.
  • Pipelines de CI que necessiten filtrar sortides estructurades.

Tanmateix, no és una solució per a índexs en múltiples màquines, log tailing en temps real, o volums de logs a escala empresarial massiva. Tampoc suporta formats de log que no siguin JSON en la seva versió actual.

Un ecosistema en creixement

Logdive és un projecte open source que convida a la contribució. Funciona com un espai de treball de tres crates: logdive-core (la lògica principal), logdive (la CLI) i logdive-api (el servidor HTTP). Les futures versions (v2) planegen incloure l'operador OR, suport per a formats de log com plaintext i logfmt, un mode follow, i fins i tot una interfície gràfica d'usuari (GUI) basada en navegador.

En un panorama on les solucions d'observabilitat poden ser aclaparadores, logdive ofereix una alternativa lleugera, ràpida i accessible. És una eina que, inspirada en la potència de jq però superant les seves limitacions, demostra el valor de les solucions open source ben dissenyades i escrites en llenguatges com Rust, que poden competir fins i tot amb les solucions comercials més complexes en nínxols específics. Si ets un desenvolupador que valora la simplicitat i l'eficiència local, logdive mereix la teva atenció, igual que altres eines prometedores en l'espai open source com Utilyze, que busca aportar precisió en el mesurament de GPUs.

Fonts:

Compartir:

Comentaris

Carregant comentaris...

Contacte

Tens alguna cosa a dir-nos?

Preguntes, suggeriments o propostes — escriu-nos i et respondrem.