Već oko pet godina, suočavam se sa zadatkom prikupljanja dnevnika, obično iz malih do srednjih baza koda. Pošiljanje dnevnika iz koda nije problem: Java i Go imaju biblioteke za to praktički izvan kutije. Ali raspoređivanje nečega da ih prikupi je glavobolja. Razumem da je to zadatak koji se može rešiti (čak i prije ChatGPT-a, a sada čak i više). više od malih timova ili pojedinačnih programera s nekoliko štapića, ljepila i „jučerašnjeg“ roka. r Pokretanje ELK-a je svaki put izazov za mene: gomila postavki, ne-trivijalna implementacija, a kada uđem u UI, oči mi beže divlje iz kartica. S Loki i Graylog, to je malo lakše, ali još uvijek ima mnogo više funkcija nego što mi je potrebno. Istovremeno, razdvajanje dnevnika između projekata i dodavanje drugih korisnika u sistem tako da ne vide ništa što ne bi trebali, nije ni najočigledniji proces. Dakle, prije otprilike godinu dana, odlučio sam da napravim svoj vlastiti sistem za prikupljanje dnevnika. Jedan koji je što lakši za upotrebu i pokretanje. On bi se raspoređivao na serveru pomoću jedne komande, bez ikakve konfiguracije ili nepotrebnih kartica u interfejsu. To je kako je Log Bull došao, a sada je otvoren izvor: sistem za prikupljanje dnevnika Projekti srednje veličine. for developers Table of contents: O projektu Kako instalirati Log Bull? Kako poslati logove? Kako gledati logove? Zaključak O projektu Log Bull je sistem za prikupljanje dnevnika sa naglaskom na jednostavnost korišćenja (minimalna konfiguracija, minimalne karakteristike, nula konfiguracija kod pokretanja). Projekt je potpuno otvorenog koda pod licencom Apache 2.0. Moj glavni prioritet bilo je stvoriti rešenje koje bi omogućilo mlađem programeru da lako shvati kako pokrenuti sistem, kako poslati dnevnike na njega i kako ih pregledati za oko 15 minuta. Key features of the project: Upućuje se pomoću jedne komande putem .sh skripta ili Docker komande. Možete kreirati više izoliranih projekata za prikupljanje dnevnika (i dodati korisnike na njih). Izuzetno jednostavan sučelje s minimalnom konfiguracijom, i nema potrebe za konfiguracijom uopšte prilikom pokretanja (zero-config). Knjižnice za Python, Java, Go, JavaScript (TS \ NodeJS), PHP, C#. Rust i Ruby su planirani. Besplatno, otvorenog koda i samostalni. Nema potrebe za poznavanjem LogQL, Kibana DSL ili drugih jezika upita za pretraživanje dnevnika. https://www.youtube.com/watch?v=8H8jF8nVzJE&embedable=true Projekt je razvijen u Go i izgrađen na OpenSearch. Web stranica projekta - https://logbull.com Projekat GitHub - https://github.com/logbull/logbull P.S. Ako smatrate da je projekt koristan i imate GitHub nalog, molim vas dajte mu zvezdu ⭐️. Prve zvezde su teško prikupiti. Kako instalirati Log Bull? Postoje tri načina za implementiranje projekta: putem .sh skripta (koji preporučujem), putem Docker i putem Docker Compose. Method 1: Installation via script Script će instalirati Docker, staviti projekt u /opt/logbull fasciklu i konfigurirati autostart kada se sistem ponovo pokrene. 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 Kreirajte datoteku docker-compose.yml sa sljedećim sadržajem: 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 i vozi zapovijed Sistem će se pokrenuti na portu 4005. docker compose up -d Method 3: Launch via Docker command Pokrenite sledeću komandu u terminalu (sustav će se pokrenuti i na portu 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 Kako poslati logove? Stoga sam stvorio biblioteke za većinu popularnih razvojnih jezika. To sam učinio s idejom da Log Bull može biti povezan sa bilo kojom popularnom bibliotekom kao procesor bez promene trenutne baze koda. Preporučujem da provjerite , jer postoji interaktivna ploča za odabir jezika: Primeri na sajtu Prvo, morate instalirati biblioteku (iako je možete poslati i putem HTTP-a; postoje primjeri za cURL): pip install logbull Zatim pošaljite kod: 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) Kako gledati logove? Svi dnevnici se odmah prikazuju na glavnom zaslonu. Možete: Smanjite veličinu poruka (rezanjem linije na ~50-100 znakova). Proširite listu upućenih polja (user_id, order_id, itd.) Kliknite na polje i dodajte ga u filter. pretraživanje dnevnika sa uslovima: Također možete prikupljati grupe uslova (na primjer, poruka uključuje određeni tekst, ali isključuje određenu IP adresu servera). Zaključak Nadam se da će moj sistem za prikupljanje dnevnika biti koristan za one programere koji ne žele ili ne mogu (zbog ograničenih resursa projekta) da implementiraju „teška“ rešenja kao što je ELK. Već koristim Log Bull u proizvodnim projektima, i sve ide dobro. . Za GitHub