Për rreth pesë vjet, jam përballur me detyrën e mbledhjes së logove, zakonisht nga bazat e vogla deri në mesatare të kodit. Dërgimi i logove nga kodi nuk është një problem: Java dhe Go kanë biblioteka për këtë praktikisht jashtë kutisë. Por vendosja e diçkaje për t'i mbledhur ato është një dhimbje koke. Unë e kuptoj se është një detyrë e zgjidhshme (edhe para ChatGPT, dhe tani edhe më shumë). Megjithatë, të gjitha sistemet e logimit janë të orientuara kryesisht drejt botës së madhe të ndërmarrjeve dhe kërkesave të saj, më shumë se ekipet e vogla ose zhvilluesit e vetëm me disa shkopinj, ngjyrë dhe një afat të “djeshëm”. r Lansimi i ELK është një sfidë për mua çdo herë: një grumbull i cilësimeve, një vendosje jo-triviale, dhe kur hyj në UI, sytë e mi rrjedhin të egër nga skedarët.Me Loki dhe Graylog, është pak më e lehtë, por ka ende shumë më shumë karakteristika se sa kam nevojë. në të njëjtën kohë, ndarja e logove midis projekteve dhe shtimi i përdoruesve të tjerë në sistem në mënyrë që ata të mos shohin asgjë që nuk duhet, nuk është procesi më i dukshëm. Pra, rreth një vit më parë, vendosa të bëj sistemin tim të mbledhjes së ditarëve. Një që është aq e lehtë për t'u përdorur dhe nisur sa të jetë e mundur. Ajo do të implementohej në server me një komandë të vetme, pa ndonjë konfigurim ose skedarë të panevojshëm në ndërfaqe. Kjo është se si erdhi Log Bull, dhe tani është me burim të hapur: një sistem i mbledhjes së ditarëve Projekte të mesme. for developers Table of contents: Për projektin Si të vendosni Log Bull? Si të dërgoni logs? Si të shikoni logs? Konkludimi Për projektin Log Bull është një sistem i mbledhjes së ditarëve me një theks në lehtësinë e përdorimit (konfigurim minimal, karakteristika minimale, zero-config në nisje). Projekti është plotësisht me burim të hapur nën licencën Apache 2.0. Key features of the project: Vendoset me një komandë të vetme nëpërmjet një skripti .sh ose një komandë Docker. Ju mund të krijoni projekte të shumta të vetme për të mbledhur logs (dhe të shtoni përdorues në to). Ndërfaqe jashtëzakonisht e thjeshtë me konfigurim minimal, dhe asnjë konfigurim i nevojshëm në fillim (zero-config). Bibliotekat për Python, Java, Go, JavaScript (TS \ NodeJS), PHP, C#. Rust dhe Ruby janë të planifikuara. Falas, me burim të hapur dhe vetë-hosting. Nuk ka nevojë të dini LogQL, Kibana DSL ose gjuhë të tjera të pyetjeve për të kërkuar logs. https://www.youtube.com/watch?v=8H8jF8nVzJE&embedable=true Projekti është zhvilluar në Go dhe është ndërtuar në OpenSearch. Faqja e internetit e projektit - https://logbull.com Projekti GitHub - https://github.com/logbull/logbull P.S. Nëse e gjeni projektin të dobishëm dhe keni një llogari GitHub, ju lutem jepni një yll ⭐️. Yjet e parë janë të vështira për të mbledhur. Si të vendosni Log Bull? Ekzistojnë tri mënyra për të vendosur një projekt: përmes një skripti .sh (që unë rekomandoj), përmes Docker dhe përmes Docker Compose. Method 1: Installation via script Skenari do të instalojë Docker, do të vendosë projektin në dosjen /opt/logbull dhe do të konfigurojë autostart kur sistemi të rifillojë. 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 Krijoni dosjen docker-compose.yml me përmbajtjen e mëposhtme: 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 dhe drejtoje komandën Sistemi do të fillojë në portin 4005. docker compose up -d Method 3: Launch via Docker command Ekzekutoni komandën e mëposhtme në terminal (sistemi gjithashtu do të fillojë në portin 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 Si të dërgoni logs? Unë kam projektuar projektin me lehtësi në mendje, kryesisht për zhvilluesit. Kjo është arsyeja pse kam krijuar biblioteka për gjuhët më të njohura të zhvillimit. Unë e bëra këtë me idenë se Log Bull mund të lidhet me çdo bibliotekë të njohura si një procesor pa ndryshuar bazën aktuale të kodit. Ju rekomandojmë të kontrolloni jashtë , sepse ka një panel interaktiv për zgjedhjen e një gjuhe: Shembujt në WEB Së pari, ju duhet të instaloni bibliotekën (edhe pse ju gjithashtu mund ta dërgoni atë nëpërmjet HTTP; ka shembuj për cURL): pip install logbull Pastaj dërgoni nga kodi: 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) Si të shikoni logs? Të gjitha regjistrimet shfaqen menjëherë në ekranin kryesor. ju mund të: Zvogëloni madhësinë e mesazheve (duke prerë vijën në ~50-100 karaktere). Zgjeroni listën e fushave të dërguara (user_id, order_id, etj.). Klikoni në një fushë dhe shtoni atë në filtër. Regjistron kërkimin me kushte: Ju gjithashtu mund të mbledhë grupe të kushteve (për shembull, mesazhi përfshin tekst të caktuar, por përjashtohet një adresë specifike IP server). Konkludimi Shpresoj që sistemi im i mbledhjes së logut do të jetë i dobishëm për ata zhvillues që nuk duan ose nuk munden (për shkak të burimeve të kufizuara të projektit) të zbatojnë zgjidhje "të rënda" të tilla si ELK. Unë tashmë po përdor Log Bull në projektet e prodhimit, dhe gjithçka po shkon mirë. . Në Github