Log Bull es un sistema de recolección de logs con énfasis en la facilidad de uso. Puede implementarse mediante un script .sh, mediante Docker y mediante Docker Compose. El proyecto es completamente de código abierto bajo la licencia Apache 2.0.Log Bull es un sistema de recolección de logs con énfasis en la facilidad de uso. Puede implementarse mediante un script .sh, mediante Docker y mediante Docker Compose. El proyecto es completamente de código abierto bajo la licencia Apache 2.0.

ELK, Loki y Graylog eran excesivos, así que construí Log Bull

2025/10/16 23:31

Durante unos cinco años, me he enfrentado a la tarea de recopilar logs, típicamente de bases de código pequeñas a medianas. Enviar logs desde el código no es un problema: Java y Go tienen bibliotecas para esto prácticamente listas para usar. Pero implementar algo para recopilarlos es un dolor de cabeza. Entiendo que es una tarea solucionable (incluso antes de ChatGPT, y ahora aún más). Sin embargo, todos los sistemas de logging están principalmente orientados hacia el mundo empresarial grande y sus requisitos, en lugar de equipos pequeños o desarrolladores individuales con pocos recursos, pegamento y un plazo de "ayer".

Lanzar ELK es un desafío para mí cada vez: un montón de configuraciones, una implementación no trivial, y cuando entro en la interfaz de usuario, mis ojos se vuelven locos con las pestañas. Con Loki y Graylog, es un poco más fácil, pero todavía hay muchas más características de las que necesito. Al mismo tiempo, separar logs entre proyectos y agregar otros usuarios al sistema para que no vean nada que no deberían, tampoco es el proceso más obvio.

Así que hace aproximadamente un año, decidí crear mi propio sistema de recopilación de logs. Uno que sea lo más fácil de usar y lanzar posible. Se implementaría en el servidor con un solo comando, sin ninguna configuración o pestañas innecesarias en la interfaz. Así es como surgió Log Bull, y ahora es de código abierto: un sistema de recopilación de logs para desarrolladores con proyectos de tamaño mediano.

Tabla de contenidos:

  • Acerca del proyecto
  • ¿Cómo implementar Log Bull?
  • ¿Cómo enviar logs?
  • ¿Cómo ver logs?
  • Conclusión

Acerca del proyecto

Log Bull es un sistema de recopilación de logs con énfasis en la facilidad de uso (configuración mínima, características mínimas, configuración cero al inicio). El proyecto es completamente de código abierto bajo la licencia Apache 2.0. Mi prioridad principal fue crear una solución que permitiera a un desarrollador junior descubrir fácilmente cómo iniciar el sistema, cómo enviarle logs y cómo verlos en unos 15 minutos.

Características clave del proyecto:

  • Implementado con un solo comando a través de un script .sh o un comando Docker.
  • Puedes crear múltiples proyectos aislados para recopilar logs (y agregar usuarios a ellos).
  • Interfaz extremadamente simple con configuración mínima, y sin configuración requerida al iniciar (configuración cero).
  • Bibliotecas para Python, Java, Go, JavaScript (TS \ NodeJS), PHP, C#. Rust y Ruby están planificados.
  • Gratuito, de código abierto y autoalojado.
  • No es necesario conocer LogQL, Kibana DSL u otros lenguajes de consulta para buscar logs.

https://www.youtube.com/watch?v=8H8jF8nVzJE&embedable=true

El proyecto está desarrollado en Go y construido sobre OpenSearch.

Sitio web del proyecto - https://logbull.com

GitHub del proyecto - https://github.com/logbull/logbull

P.D. Si encuentras útil el proyecto y tienes una cuenta de GitHub, por favor dale una estrella ⭐️. Las primeras estrellas son difíciles de conseguir. ¡Estaría extremadamente agradecido por tu apoyo!

¿Cómo implementar Log Bull?

Hay tres formas de implementar un proyecto: a través de un script .sh (que recomiendo), a través de Docker y a través de Docker Compose.

Método 1: Instalación a través de script

El script instalará Docker, colocará el proyecto en la carpeta /opt/logbull y configurará el inicio automático cuando se reinicie el sistema. Comando de instalación:

sudo apt-get install -y curl && \ sudo curl -sSL https://raw.githubusercontent.com/logbull/logbull/main/install-logbull.sh \ | sudo bash 

Método 2: Lanzamiento a través de Docker Compose

Crea el archivo docker-compose.yml con el siguiente contenido:

services:   logbull:     container_name: logbull     image: logbull/logbull:latest     ports:       - "4005:4005"     volumes:       - ./logbull-data:/logbull-data     restart: unless-stopped     healthcheck:       test: ["CMD", "curl", "-f", "http://localhost:4005/api/v1/system/health"]       interval: 5s       timeout: 5s       retries: 30 

Y ejecuta el comando docker compose up -d. El sistema se iniciará en el puerto 4005.

Método 3: Lanzamiento a través del comando Docker

Ejecuta el siguiente comando en la terminal (el sistema también se iniciará en el puerto 4005):

docker run -d \   --name logbull \   -p 4005:4005 \   -v ./logbull-data:/logbull-data \   --restart unless-stopped \   --health-cmd="curl -f http://localhost:4005/api/v1/system/health || exit 1" \   --health-interval=5s \   --health-retries=30 \   logbull/logbull:latest 

¿Cómo enviar logs?

Diseñé el proyecto pensando en la conveniencia, principalmente para desarrolladores. Por eso creé bibliotecas para la mayoría de los lenguajes de desarrollo populares. Lo hice con la idea de que Log Bull puede conectarse a cualquier biblioteca popular como procesador sin cambiar la base de código actual.

Recomiendo encarecidamente revisar los ejemplos en el sitio web, porque hay un panel interactivo para seleccionar un idioma:

Code examples picler

Tomemos Python como ejemplo. Primero, necesitas instalar la biblioteca (aunque también puedes enviarla a través de HTTP; hay ejemplos para cURL):

pip install logbull 

Luego envía desde el código:

import time from logbull import LogBullLogger  # Initialize logger logger = LogBullLogger(     host="http://LOGBULL_HOST",     project_id="LOGBULL_PROJECT_ID", )  # Log messages (printed to console AND sent to LogBull) logger.info("User logged in successfully", fields={     "user_id": "12345",     "username": "john_doe",     "ip": "192.168.1.100" })  # With context session_logger = logger.with_context({     "session_id": "sess_abc123",     "user_id": "user_456" })  session_logger.info("Processing request", fields={     "action": "purchase" })  # Ensure all logs are sent before exiting logger.flush() time.sleep(5) 

¿Cómo ver logs?

Todos los logs se muestran inmediatamente en la pantalla principal. Puedes:

  • Reducir el tamaño de los mensajes (cortando la línea a ~50-100 caracteres).

  • Expandir la lista de campos enviados (user_id, order_id, etc.).

  • Hacer clic en un campo y agregarlo al filtro. Búsqueda de logs con condiciones:

    Logs search with conditions

    Regular logs view

    Viewing messages text only (you can cut extra fields):

También puedes recopilar grupos de condiciones (por ejemplo, el mensaje incluye cierto texto, pero excluye una dirección IP de servidor específica).

Conclusión

Espero que mi sistema de recopilación de logs sea útil para aquellos desarrolladores que no quieren o no pueden (debido a recursos limitados del proyecto) implementar soluciones "pesadas" como ELK. Ya estoy usando Log Bull en proyectos de producción, y todo va bien. Agradezco comentarios, sugerencias de mejora y problemas en GitHub.

Aviso legal: Los artículos republicados en este sitio provienen de plataformas públicas y se ofrecen únicamente con fines informativos. No reflejan necesariamente la opinión de MEXC. Todos los derechos pertenecen a los autores originales. Si consideras que algún contenido infringe derechos de terceros, comunícate a la dirección service@support.mexc.com para solicitar su eliminación. MEXC no garantiza la exactitud, la integridad ni la actualidad del contenido y no se responsabiliza por acciones tomadas en función de la información proporcionada. El contenido no constituye asesoría financiera, legal ni profesional, ni debe interpretarse como recomendación o respaldo por parte de MEXC.

También te puede interesar

¡Qué se haga una limpia! Jayden Daniels pasa malos momentos en la NFL

¡Qué se haga una limpia! Jayden Daniels pasa malos momentos en la NFL

Ricardo ThomasJayden Daniels tiene un año para olvidar en la NFL, después de que en el pasado fue uno de los novatos revelación que hasta fue condecorado con el premio de Jugador Ofensivo de la NFL. El joven quarterback de 24 años quedó descartado de jugar el domingo con los Washington Commanders después de sufrir una recaída de la lesión de codo que lo alejó algunas semanas de los emparrillados. Con este juego, serán 12 semanas en las que o no ha jugado por lesiones o ha dejado el campo por una. Jayden Daniels hit the weight room this offseason brother. A 190 lbs QB is not making it in the NFL pic.twitter.com/jExhbTb8nU — deus (@BigMeeish) December 7, 2025 Una campaña marcada por las lesiones El padecimiento en el codo es solo el más reciente de los pesares que acompañan a Daniels, quien únicamente en tres partidos ha estado sano.  En la segunda semana sufrió una lesión en la rodilla con la que comenzó su viacrucis por la campaña. y que lo alejó los siguientes dos partidos ante Las Vegas Raiders y Atlanta Falcons. Siguieron dos partidos sanos (Los Angeles Chargers y Chicago Bears) antes de caer en un tobogán de pesares junto con los Commanders. Washington ha perdido sus más recientes ocho partidos, todos marcados ya sea por la ausencia de Daniels, debido a una lesión en el tendón de la corva o la más reciente en el codo, o por tener que haber dejado el campo debido a las dolencias. Los Commanders fueron una de las grandes sorpresas de la NFL el año pasado con una marca de 12-5 y con su vuelta a la postemporada luego de tres años de ausencia. Para esta temporada, están al borde de la eliminación matemática con una paupérrima marca de 3-10 con un equipo marcado por las lesiones. Un cierre de campaña incierto para Daniels El coach Dan Quinn confirmó en conferencia que Daniels no estará el domingo en el partido ante los New York Giants después de resentirse de una dolencia en el codo izquierdo tras una dura tacleada. Lo que confirmó Quinn fue que no hubo una nueva dislocación de hombro, pero es incierto el tiempo que necesite para volver con el equipo a falta de cuatro partidos. Las pruebas de resonancia magnética no mostraron contratiempos estructurales graves, lo que deja una puerta abierta para que Daniels regrese antes de que termine la temporada. Será Marcus Mariota quien tome los controles ante los Giants, mientras Washington intenta encontrar el rumbo en una campaña donde la mala fortuna ha sido el rival más difícil de vencer. Jayden Daniels: Se apagó el brillo de una potencial estrella La temporada pasada, Daniels fue un hombre de hierro, disputando todos los Commanders, incluyendo playoffs, y llevando al equipo a un récord de 12-5. Sus estadísticas de novato fueron estelares: 69 por ciento de pases completos, 3,568 yardas, 25 touchdowns y casi 900 yardas por tierra. Este año, la regresión es evidente. Su índice de pasador ha caído de 100.1 a 88.1, apenas ha superado las 1,200 yardas aéreas y ha tenido que abandonar el campo antes del final en sus últimas tres apariciones. Contenidos Relacionados: Travis Kelce desahoga su frustración en un podcast tras el colapso de los ChiefsVIDEO: El abuelo Rivers lanza sus primeros pases en su vuelta a la NFL
Compartir
Excelsior2025/12/11 07:58
Zacatecas y Fresnillo siguen entre las ciudades con mayor percepción de inseguridad

Zacatecas y Fresnillo siguen entre las ciudades con mayor percepción de inseguridad

Laura ToribioZacatecas no logra salir del grupo de las ciudades con más percepción de inseguridad del país, pese a las acciones anunciadas por el gobierno de David Monreal.  Los datos más recientes de la Encuesta Nacional de Seguridad Pública Urbana (ENSU), publicados por el INEGI, colocan nuevamente a Zacatecas y Fresnillo entre los focos rojos nacionales tanto en percepción de inseguridad como en conflictos ciudadanía–ciudadanía. En Zacatecas, 76.8% de la población adulta se siente insegura, una proporción muy por encima del promedio nacional. Aunque representa una ligera baja anual, no modifica la posición crítica del estado bajo la actual administración. En Fresnillo, 75.4% de sus habitantes perciben vivir en inseguridad. El deterioro también se refleja en la convivencia cotidiana. Entre el segundo y el tercer trimestre de 2025, Zacatecas reportó un aumento en la proporción de personas que experimentaron conflictos o enfrentamientos, al pasar de 25.2% a 29.8%. En Fresnillo, este indicador subió de 12.3% a 15.3%. Los resultados confirman que  el estado sigue ubicado entre los más problemáticos en materia de seguridad urbana, sin que los niveles de percepción ciudadana muestren una mejora sostenida.       Contenidos Relacionados: Volcadura de camión escolar deja una menor muerta y 11 lesionados en Zacatecas
Compartir
Excelsior2025/12/11 08:34