От около пет години се сблъсквам с задачата за събиране на дневници, обикновено от малки до средни кодови бази. Изпращането на дневници от код не е проблем: Java и Go имат библиотеки за това практически извън кутията. Но разполагането на нещо, за да ги събере, е главоболие. Разбирам, че това е изпълнима задача (дори преди ChatGPT, а сега дори и повече). По-добре от малки екипи или отделни разработчици с няколко пръчки, лепило и краен срок "вчера". r Стартирането на ELK е предизвикателство за мен всеки път: куп настройки, не-тривиално разгръщане и когато влизам в интерфейса, очите ми бягат от разделите.С Loki и Graylog, това е малко по-лесно, но все още има много повече функции, отколкото ми трябва.В същото време, разделянето на дневниците между проектите и добавянето на други потребители към системата, така че те да не виждат нищо, което не би трябвало, също не е най-очевидният процес. Така че преди около година реших да създам своя собствена система за събиране на дневници. Една, която е толкова лесна за използване и стартиране, колкото е възможно. Тя ще бъде разгърната на сървъра с една команда, без никаква конфигурация или ненужни раздели в интерфейса. Средно големи проекти. 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 P.S. Ако намерите проекта полезен и имате GitHub акаунт, моля, дайте му звезда ⭐️. Първите звезди са трудни за събиране. Как да използваме Log Bull? Има три начина за разполагане на проект: чрез .sh скрипт (което препоръчвам), чрез Docker и чрез Docker Compose. Method 1: Installation via script Скриптът ще инсталира Docker, ще постави проекта в папката /opt/logbull и ще конфигурира автостарта, когато системата се рестартира. 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 Как да изпратим лога? Затова създадох библиотеки за най-популярните езици за разработка. Направих това с идеята, че Log Bull може да бъде свързан с всяка популярна библиотека като процесор, без да променя текущата кодова база. Препоръчвам ви да проверите , защото има интерактивен панел за избор на език: Примерите на сайта Първо, трябва да инсталирате библиотеката (въпреки че можете да я изпратите и чрез 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 адрес на сървъра). Заключението Надявам се, че моята система за събиране на дневници ще бъде полезна за тези разработчици, които не искат или не могат (поради ограничените ресурси на проекта) да внедрят „тежки“ решения като ELK. Вече използвам Log Bull в производствени проекти и всичко върви добре. . на GitHub