На працягу пяці гадоў я сустракаўся з задачай збіраць логі, звычайна з малых да сярэдніх базаў кодаў. Прасылаць логі з кода не праблема: Java і Go маюць бібліятэкі для гэтага практычна з кошыка. Але размяшчэнне нешта, каб збіраць іх, гэта боль. Я разумею, што гэта вырашальная задача (нават перад ChatGPT, і цяпер яшчэ больш). Больш, чым маленькія каманды або адзіночныя распрацоўшчыкі з некалькімі палоскамі, клей і «ўчорашнім» deadline. r З Loki і Graylog, гэта трохі лёгка, але ёсць яшчэ шмат функцый, чым мне трэба.У той жа час, разлучаючы логі паміж праектамі і дадаючы іншых карыстальнікаў да сістэмы, каб яны не бачылі нічога, што яны не павінны, не найбольш эфектыўны працэс. Так што прыкладна год таму я вырашыў зрабіць сваё ўласнае сістэму зборкі лог. Такая, якая так проста выкарыстоўвацца і запусціць, як гэта можа быць. Ён быў бы размяшчаны на серверы з адной камандай, без ніякай канфігурацыі або небяспечных клавіш у інтэрфейсе. Гэта, як Log Bull прыйшоў, і цяпер ён з'яўляецца адкрытым крыніцам: сістэма зборкі лог І на сярэдніх проектах. for developers Table of contents: За праект Як размясціць Log Bull? Як прадаваць логіку? Як паглядзець логіку? Высновы За праект Log Bull з'яўляецца сістэмай зборкі лог з акцэнтам на лёгкасць выкарыстання (мінімальная канфігурацыя, мінімальныя функцыі, нулевая канфігурацыя на стартаве). Праект з'яўляецца цалкам адкрытым кодам пад ліцэнзіяй Apache 2.0. Мой асноўны пріоритет быў стварыць рашэнне, якое дазволіла б юніорскім распрацоўшчыкам лёгка зразумець, як запускаць сістэму, як адпраўляць логі да яе, і як праглядзець іх за каля 15 хвілін. Key features of the project: Выкарыстоўваўся з адной каманды з дапамогай .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 Калі вы таксама хочаце прывабіць удачу на свой лад, бярыце прыклад з герояў нашага матэрыяла! Як размясціць Log Bull? Існуе тры спосабы размяшчэння праекта: праз .sh скрипт (які я рэкамендую), праз Docker і праз Docker Compose. Method 1: Installation via script Скрипт усталяваць Docker, размесціць праект у папцы /opt/logbull, і канфігураваць autostart, калі сістэма перазагружаецца. 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 Стварыце файл 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 І адпраўляць команду Справа ў тым, што ён паступіў у порт 4005. docker compose up -d Method 3: Launch via Docker command Запусціце наступную каманда ў термінале (система таксама запускаецца на порту 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 Як прадаваць логіку? Падчас яго знаходжання тут крывая жыцця звяла яго з агентамі 34mag – так мы даведаліся, што не з усім партугальцу шанцавала і на тое, каб зняць кватэру каля лініі метро, сышло шмат часу, бо на англійскай мясцовыя рыэлтары не балакаюць прынцыпова. Я вельмі хацеў бы паглядзець , таму што ёсць інтэрактыўная панэль для выбору мовы: Прыклады на сайце Перш за ўсё, вам трэба ўсталяваць бібліятэку (хоць вы таксама можаце адпраўляць яго праз 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 і г.д.). Націсніце на поле і дадайце яго да фільтра. Логі пошуку з умовай: Вы таксама можаце збіраць групы умоў (напрыклад, паведамленне ўключае пэўны тэкст, але выключае пэўны IP-адрас сервера). Высновы Я вельмі рада, што ён быў у маім жыцці, бо гэта ён, калі можна так сказаць, паставіў машыну майго мыслення. . на Github