Log Bull - це система збору логів з акцентом на простоту використання. Її можна розгорнути за допомогою .sh скрипту, через Docker та через Docker Compose. Проєкт є повністю відкритим кодом під ліцензією Apache 2.0.Log Bull - це система збору логів з акцентом на простоту використання. Її можна розгорнути за допомогою .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.
  • Можна створювати кілька ізольованих проєктів для збору логів (і додавати до них користувачів).
  • Надзвичайно простий інтерфейс з мінімальною конфігурацією, і взагалі без необхідності конфігурації при запуску (нульова конфігурація).
  • Бібліотеки для 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 символів).

  • Розгорнути список надісланих полів (userid, orderid тощо).

  • Клацнути на поле та додати його до фільтра. Пошук логів з умовами:

    Logs search with conditions

    Regular logs view

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

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

Висновок

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

Відмова від відповідальності: статті, опубліковані на цьому сайті, взяті з відкритих джерел і надаються виключно для інформаційних цілей. Вони не обов'язково відображають погляди MEXC. Всі права залишаються за авторами оригінальних статей. Якщо ви вважаєте, що будь-який контент порушує права третіх осіб, будь ласка, зверніться за адресою service@support.mexc.com для його видалення. MEXC не дає жодних гарантій щодо точності, повноти або своєчасності вмісту і не несе відповідальності за будь-які дії, вчинені на основі наданої інформації. Вміст не є фінансовою, юридичною або іншою професійною порадою і не повинен розглядатися як рекомендація або схвалення з боку MEXC.

Вам також може сподобатися