Durante unos cinco años, me he enfrentado a la tarea de recopilar registros, típicamente de bases de código pequeñas a medianas. Enviar registros de código no es un problema: Java y Go tienen bibliotecas para esto prácticamente fuera de la caja. Pero desplegar algo para recogerlos es un dolor de cabeza. Comprendo que es una tarea solucionable (incluso antes de ChatGPT, y ahora incluso más). Más que pequeños equipos o desarrolladores individuales con un par de palos, pegamento y un plazo de “ayer”. r Lanzar ELK es un reto para mí cada vez: un montón de configuraciones, una implementación no trivial, y cuando entre en la interfaz de usuario, mis ojos salen de las pestañas.Con Loki y Graylog, es un poco más fácil, pero todavía hay mucho más características de lo que necesito.Al mismo tiempo, separar los registros entre proyectos y agregar a otros usuarios al sistema para que no vean nada que no deberían, no es el proceso más obvio. Así que hace aproximadamente un año, decidí crear mi propio sistema de recopilación de registros. Uno que sea tan fácil de usar y lanzar como sea posible. Se desplegaría en el servidor con un solo comando, sin ninguna configuración o pestañas innecesarias en la interfaz. Así llegó Log Bull, y ahora es de código abierto: un sistema de recopilación de registros. Proyectos de tamaño mediano. for developers Table of contents: Sobre el proyecto ¿Cómo implementar Log Bull? ¿Cómo enviar los logs? ¿Cómo ver los logos? Conclusión Sobre el proyecto Log Bull es un sistema de recopilación de registros con un énfasis en la facilidad de uso (configuración mínima, características mínimas, configuración cero en el inicio).El proyecto es completamente de código abierto bajo la licencia Apache 2.0. Mi principal prioridad era crear una solución que permitiera a un desarrollador junior descubrir fácilmente cómo iniciar el sistema, cómo enviar registros a él, y cómo verlos en unos 15 minutos. Key features of the project: Se implementa con un único comando a través de un script .sh o un comando Docker. Puede crear varios proyectos aislados para recopilar registros (y agregar usuarios a ellos). Interfaz extremadamente simple con una configuración mínima, y no se requiere ninguna configuración al iniciar (zero-config). Librerías para Python, Java, Go, JavaScript (TS \ NodeJS), PHP, C#. Rust y Ruby están planeados. Libre, de código abierto y auto-host. No es necesario conocer LogQL, Kibana DSL u otros idiomas de consulta para buscar registros. https://www.youtube.com/watch?v=8H8jF8nVzJE&embedable=true El proyecto está desarrollado en Go y construido en OpenSearch. Sitio web del proyecto - https://logbull.com Proyecto GitHub - https://github.com/logbull/logbull P.S. Si usted encuentra el proyecto útil y tiene una cuenta de GitHub, por favor da una estrella ⭐️. Las primeras estrellas son difíciles de recoger. ¿Cómo implementar Log Bull? Hay tres maneras 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. Method 1: Installation via script El script instalará Docker, colocará el proyecto en la carpeta /opt/logbull y configurará el inicio automático cuando se reinicia el sistema. sudo apt-get install -y curl && \ sudo curl -sSL https://raw.githubusercontent.com/logbull/logbull/main/install-logbull.sh \ | sudo bash Method 2: Launch via Docker Compose Cree 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 ejecutando el mando El sistema se iniciará en el puerto 4005. docker compose up -d Method 3: Launch via Docker command Execute el siguiente comando en el 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 los logs? He diseñado el proyecto con la conveniencia en mente, principalmente para desarrolladores.Por eso he creado 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 un procesador sin cambiar la base de código actual. Recomendamos encarecidamente comprobar , porque hay un panel interactivo para seleccionar un idioma: Los ejemplos en la web Primero, necesita instalar la biblioteca (aunque también puede enviarla a través de HTTP; hay ejemplos de cURL): pip install logbull Enviar 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 los logos? Todos los registros se muestran inmediatamente en la pantalla principal. Puedes: Reduce el tamaño de los mensajes (cortando la línea a ~50-100 caracteres). Ampliar la lista de campos enviados (user_id, order_id, etc.). Haga clic en un campo y añádelo al filtro. Logs de búsqueda con condiciones: También puede recopilar grupos de condiciones (por ejemplo, el mensaje incluye cierto texto, pero excluye una dirección IP específica del servidor). Conclusión Espero que mi sistema de recogida de registros sea útil para aquellos desarrolladores que no quieren o no pueden (debido a los recursos limitados del proyecto) implementar soluciones “pesadas” como ELK. Ya estoy utilizando Log Bull en proyectos de producción, y todo va bien. . En GitHub