Log Bull (touro) é um sistema de coleção de logs com ênfase na facilidade de uso. Pode ser implementado através de um script .sh, via Docker e via Docker Compose. O projeto é completamente open source sob a licença Apache 2.0.Log Bull (touro) é um sistema de coleção de logs com ênfase na facilidade de uso. Pode ser implementado através de um script .sh, via Docker e via Docker Compose. O projeto é completamente open source sob a licença Apache 2.0.

ELK, Loki e Graylog eram excessivos, então construí o Log Bull

2025/10/16 23:31

Durante cerca de cinco anos, enfrentei a tarefa de recolher logs, tipicamente de bases de código pequenas a médias. Enviar logs a partir do código não é um problema: Java e Go têm bibliotecas para isso praticamente prontas a usar. Mas implementar algo para os recolher é uma dor de cabeça. Compreendo que é uma tarefa solucionável (mesmo antes do ChatGPT, e agora ainda mais). Ainda assim, todos os sistemas de logging são principalmente orientados para o mundo empresarial e os seus requisitos, em vez de pequenas equipas ou desenvolvedores individuais com poucos recursos e um prazo "para ontem".

Lançar o ELK é um desafio para mim de cada vez: um monte de configurações, uma implementação não trivial, e quando entro na interface, os meus olhos ficam confusos com os separadores. Com Loki e Graylog, é um pouco mais fácil, mas ainda há muito mais funcionalidades do que preciso. Ao mesmo tempo, separar logs entre projetos e adicionar outros utilizadores ao sistema para que não vejam o que não devem, também não é o processo mais óbvio.

Então, há cerca de um ano, decidi criar o meu próprio sistema de recolha de logs. Um que fosse o mais fácil possível de usar e lançar. Seria implementado no servidor com um único comando, sem qualquer configuração ou separadores desnecessários na interface. Foi assim que surgiu o Log Bull, e agora é open source: um sistema de recolha de logs para desenvolvedores com projetos de média dimensão.

Índice:

  • Sobre o projeto
  • Como implementar o Log Bull?
  • Como enviar logs?
  • Como visualizar logs?
  • Conclusão

Sobre o projeto

O Log Bull é um sistema de recolha de logs com ênfase na facilidade de uso (configuração mínima, funcionalidades mínimas, zero configuração no arranque). O projeto é completamente open source sob a licença Apache 2.0. A minha prioridade principal foi criar uma solução que permitisse a um desenvolvedor júnior descobrir facilmente como iniciar o sistema, como enviar logs para ele e como visualizá-los em cerca de 15 minutos.

Principais funcionalidades do projeto:

  • Implementado com um único comando através de um script .sh ou um comando Docker.
  • Pode criar múltiplos projetos isolados para recolher logs (e adicionar utilizadores a eles).
  • Interface extremamente simples com configuração mínima, e nenhuma configuração necessária ao iniciar (zero configuração).
  • Bibliotecas para Python, Java, Go, JavaScript (TS \ NodeJS), PHP, C#. Rust e Ruby estão planeados.
  • Gratuito, open source e self-hosted.
  • Não é necessário conhecer LogQL, Kibana DSL ou outras linguagens de consulta para pesquisar logs.

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

O projeto é desenvolvido em Go e construído sobre OpenSearch.

Website do projeto - https://logbull.com

GitHub do projeto - https://github.com/logbull/logbull

P.S. Se achar o projeto útil e tiver uma conta GitHub, por favor dê-lhe uma estrela ⭐️. As primeiras estrelas são difíceis de recolher. Ficaria extremamente grato pelo seu apoio!

Como implementar o Log Bull?

Existem três formas de implementar um projeto: através de um script .sh (que recomendo), via Docker e via Docker Compose.

Método 1: Instalação via script

O script irá instalar o Docker, colocar o projeto na pasta /opt/logbull, e configurar o arranque automático quando o sistema é reiniciado. Comando de instalação:

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

Método 2: Lançamento via Docker Compose

Crie o ficheiro docker-compose.yml com o seguinte conteúdo:

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 

E execute o comando docker compose up -d. O sistema irá iniciar na porta 4005.

Método 3: Lançamento via comando Docker

Execute o seguinte comando no terminal (o sistema também irá iniciar na porta 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 

Como enviar logs?

Projetei o projeto tendo em mente a conveniência, principalmente para desenvolvedores. É por isso que criei bibliotecas para a maioria das linguagens de desenvolvimento populares. Fiz isto com a ideia de que o Log Bull pode ser conectado a qualquer biblioteca popular como um processador sem alterar a base de código atual.

Recomendo vivamente verificar os exemplos no website, porque existe um painel interativo para selecionar uma linguagem:

Code examples picler

Vamos usar Python como exemplo. Primeiro, precisa de instalar a biblioteca (embora também possa enviar via HTTP; existem exemplos para cURL):

pip install logbull 

Depois envie a partir do 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) 

Como visualizar logs?

Todos os logs são exibidos imediatamente no ecrã principal. Pode:

  • Reduzir o tamanho das mensagens (cortando a linha para ~50-100 caracteres).

  • Expandir a lista de campos enviados (userid, orderid, etc.).

  • Clicar num campo e adicioná-lo ao filtro. Pesquisa de logs com condições:

    Logs search with conditions

    Regular logs view

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

Também pode recolher grupos de condições (por exemplo, a mensagem inclui determinado texto, mas exclui um endereço IP de servidor específico).

Conclusão

Espero que o meu sistema de recolha de logs seja útil para aqueles desenvolvedores que não querem ou não podem (devido a recursos limitados do projeto) implementar soluções "pesadas" como o ELK. Já estou a usar o Log Bull em projetos de produção, e tudo está a correr bem. Agradeço feedback, sugestões de melhoria e problemas no GitHub.

Isenção de responsabilidade: Os artigos republicados neste site são provenientes de plataformas públicas e são fornecidos apenas para fins informativos. Eles não refletem necessariamente a opinião da MEXC. Todos os direitos permanecem com os autores originais. Se você acredita que algum conteúdo infringe direitos de terceiros, entre em contato pelo e-mail [email protected] para solicitar a remoção. A MEXC não oferece garantias quanto à precisão, integridade ou atualidade das informações e não se responsabiliza por quaisquer ações tomadas com base no conteúdo fornecido. O conteúdo não constitui aconselhamento financeiro, jurídico ou profissional, nem deve ser considerado uma recomendação ou endosso por parte da MEXC.