Log Бык - это система сбора логов с акцентом на простоту использования. Она может быть развернута с помощью .sh скрипта, через Docker и через Docker Compose. Проект полностью с открытым исходным кодом под лицензией Apache 2.0.Log Бык - это система сбора логов с акцентом на простоту использования. Она может быть развернута с помощью .sh скрипта, через Docker и через Docker Compose. Проект полностью с открытым исходным кодом под лицензией Apache 2.0.

ELK, Loki и Graylog были избыточны, поэтому я создал Log Bull

2025/10/16 23:31

Около пяти лет я сталкивался с задачей сбора логов, обычно из малых и средних кодовых баз. Отправка логов из кода не проблема: Java и Go имеют библиотеки для этого практически из коробки. Но развертывание чего-то для их сбора - это головная боль. Я понимаю, что это решаемая задача (даже до ChatGPT, а теперь тем более). Тем не менее, все системы логирования в первую очередь ориентированы на мир крупных предприятий и их требования, а не на маленькие команды или отдельных разработчиков с несколькими палками, клеем и дедлайном "вчера".

Запуск ELK для меня каждый раз вызов: куча настроек, нетривиальное развертывание, и когда я захожу в интерфейс, мои глаза разбегаются от вкладок. С Loki и Graylog немного проще, но все равно функций гораздо больше, чем мне нужно. В то же время, разделение логов между проектами и добавление других пользователей в систему так, чтобы они не видели то, что не должны, тоже не самый очевидный процесс.

Поэтому около года назад я решил создать свою собственную систему сбора логов. Такую, которая была бы максимально проста в использовании и запуске. Она развертывалась бы на сервере одной командой, без какой-либо конфигурации или ненужных вкладок в интерфейсе. Так появился Log Bull, и теперь он с открытым исходным кодом: система сбора логов для разработчиков со средними проектами.

Содержание:

  • О проекте
  • Как развернуть Log Bull?
  • Как отправлять логи?
  • Как просматривать логи?
  • Заключение

О проекте

Log Bull - это система сбора логов с акцентом на простоту использования (минимальная конфигурация, минимум функций, нулевая конфигурация при запуске). Проект полностью с открытым исходным кодом под лицензией Apache 2.0. Моим главным приоритетом было создать решение, которое позволило бы младшему разработчику легко разобраться, как запустить систему, как отправлять в нее логи и как их просматривать примерно за 15 минут.

Ключевые особенности проекта:

  • Развертывается одной командой через .sh скрипт или Docker команду.
  • Вы можете создавать несколько изолированных проектов для сбора логов (и добавлять к ним пользователей).
  • Чрезвычайно простой интерфейс с минимальной конфигурацией, и вообще без необходимости конфигурации при запуске (zero-config).
  • Библиотеки для Python, Java, Go, JavaScript (TS \ NodeJS), PHP, C#. Планируются Rust и Ruby.
  • Бесплатный, с открытым исходным кодом и самостоятельным хостингом.
  • Нет необходимости знать LogQL, Kibana DSL или другие языки запросов для поиска логов.

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

Проект разработан на Go и построен на OpenSearch.

Веб-сайт проекта - https://logbull.com

GitHub проекта - https://github.com/logbull/logbull

P.S. Если вы найдете проект полезным и у вас есть аккаунт GitHub, пожалуйста, поставьте ему звезду ⭐️. Первые звезды собирать сложно. Я был бы крайне благодарен за вашу поддержку!

Как развернуть Log Bull?

Есть три способа развернуть проект: через .sh скрипт (что я рекомендую), через Docker и через Docker Compose.

Метод 1: Установка через скрипт

Скрипт установит Docker, разместит проект в папке /opt/logbull и настроит автозапуск при перезагрузке системы. Команда установки:

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

Метод 2: Запуск через Docker Compose

Создайте файл docker-compose.yml со следующим содержимым:

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 

И выполните команду docker compose up -d. Система запустится на порту 4005.

Метод 3: Запуск через Docker команду

Выполните следующую команду в терминале (система также запустится на порту 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 

Как отправлять логи?

Я разрабатывал проект с учетом удобства, в первую очередь для разработчиков. Поэтому я создал библиотеки для большинства популярных языков разработки. Я сделал это с идеей, что Log Bull может быть подключен к любой популярной библиотеке как процессор без изменения текущей кодовой базы.

Я настоятельно рекомендую ознакомиться с примерами на веб-сайте, потому что там есть интерактивная панель для выбора языка:

Code examples picler

Возьмем Python в качестве примера. Сначала вам нужно установить библиотеку (хотя вы также можете отправлять через HTTP; есть примеры для cURL):

pip install logbull 

Затем отправляйте из кода:

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) 

Как просматривать логи?

Все логи отображаются сразу на главном экране. Вы можете:

  • Уменьшить размер сообщений (обрезав строку до ~50-100 символов).

  • Развернуть список отправленных полей (user_id, order_id и т.д.).

  • Нажать на поле и добавить его в фильтр. Поиск логов с условиями:

    Logs search with conditions

    Regular logs view

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

Вы также можете собирать группы условий (например, сообщение включает определенный текст, но исключает конкретный IP-адрес сервера).

Заключение

Я надеюсь, что моя система сбора логов будет полезна тем разработчикам, которые не хотят или не могут (из-за ограниченных ресурсов проекта) реализовать "тяжеловесные" решения, такие как ELK. Я уже использую Log Bull в производственных проектах, и все идет хорошо. Я приветствую отзывы, предложения по улучшению и проблемы на GitHub.

Отказ от ответственности: Статьи, размещенные на этом веб-сайте, взяты из общедоступных источников и предоставляются исключительно в информационных целях. Они не обязательно отражают точку зрения MEXC. Все права принадлежат первоисточникам. Если вы считаете, что какой-либо контент нарушает права третьих лиц, пожалуйста, обратитесь по адресу [email protected] для его удаления. MEXC не дает никаких гарантий в отношении точности, полноты или своевременности контента и не несет ответственности за любые действия, предпринятые на основе предоставленной информации. Контент не является финансовой, юридической или иной профессиональной консультацией и не должен рассматриваться как рекомендация или одобрение со стороны MEXC.

Вам также может быть интересно