Noin viiden vuoden ajan olen kohdannut päiväkirjojen keräämisen, tyypillisesti pienistä ja keskisuurista koodipohjista. Päiväkirjojen lähettäminen koodista ei ole ongelma: Java ja Go ovat kirjastot tähän käytännöllisesti katsoen ulos laatikosta. Mutta jonkin keräämisen käyttöönotto on päänsärkyä. Ymmärrän, että se on ratkaistavissa oleva tehtävä (jopa ennen ChatGPT:ää ja nyt vielä enemmän). pikemminkin kuin pienet ryhmät tai yksittäiset kehittäjät, joilla on muutama tikku, liima ja ”eilen” määräaika. r ELK: n käynnistäminen on minulle haaste joka kerta: joukko asetuksia, ei-triviaalinen käyttöönotto, ja kun astun käyttöliittymään, silmäni juoksevat villiksi välilehdistä. Loki ja Graylog, se on hieman helpompaa, mutta on vielä paljon enemmän ominaisuuksia kuin tarvitsen. Joten noin vuosi sitten päätin tehdä oman lokitiedostojen keräysjärjestelmän. Yksi, joka on mahdollisimman helppokäyttöinen ja käynnistettävä. Se levitetään palvelimeen yhdellä komennolla, ilman mitään konfiguraatiota tai tarpeettomia välilehtiä rajapinnassa. Näin Log Bull tuli esiin, ja nyt se on avoimen lähdekoodin: lokitiedostojen keräysjärjestelmä keskisuurten hankkeiden kanssa. for developers Table of contents: Hankkeen suhteen Miten Log Bullia käytetään? Miten logot lähetetään? Kuinka katsella lokeja? Johtopäätös Hankkeen suhteen Log Bull on lokitiedostojen keräysjärjestelmä, jossa painotetaan helppokäyttöisyyttä (minimaalinen kokoonpano, minimaaliset ominaisuudet, nollakokoonpano käynnistyksessä). Hanke on täysin avoimen lähdekoodin Apache 2.0 -lisenssin alainen. Pääpainopisteeni oli luoda ratkaisu, jonka avulla nuorempi kehittäjä voisi helposti selvittää, miten käynnistää järjestelmä, miten lähettää lokit siihen ja miten tarkastella niitä noin 15 minuutissa. Key features of the project: Siirretään yhdellä komennolla .sh-skriptin tai Docker-komennon kautta. Voit luoda useita erillisiä projekteja lokien keräämiseksi (ja lisätä niihin käyttäjiä). Erittäin yksinkertainen käyttöliittymä, jossa on vähäinen konfigurointi, eikä kokoonpanoa tarvita lainkaan käynnistyksen yhteydessä (zero-config). Kirjastot Python, Java, Go, JavaScript (TS \ NodeJS), PHP, C#. Rust ja Ruby on suunniteltu. Vapaa, avoimen lähdekoodin ja itse isännöity. Ei tarvitse tietää LogQL, Kibana DSL tai muita kyselykieliä etsiä lokeja. https://www.youtube.com/watch?v=8H8jF8nVzJE&embedable=true Projekti on kehitetty Go ja rakennettu OpenSearch. Hankkeen verkkosivut - https://logbull.com GitHub -ohjelma https://github.com/logbull/logbull P.S. Jos löydät projektin hyödylliseksi ja sinulla on GitHub-tili, anna sille tähti ⭐️. Ensimmäiset tähdet ovat vaikeita kerätä. Olisin erittäin kiitollinen tuestasi! Miten Log Bullia käytetään? Projektin käyttöönottoon on kolme tapaa: .sh-skripti (jota suosittelen), Docker ja Docker Compose. Method 1: Installation via script Skripti asentaa Dockerin, sijoittaa projektin /opt/logbull-kansioon ja määrittää automaattisen käynnistyksen, kun järjestelmä käynnistetään uudelleen. 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 Luo docker-compose.yml tiedosto seuraavalla sisällöllä: 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 Käytä komentoa Järjestelmä käynnistyy portilla 4005. docker compose up -d Method 3: Launch via Docker command Käynnistä seuraava komento terminaalissa (järjestelmä käynnistyy myös portissa 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 Miten logot lähetetään? Suunnittelin projektin mukavuutta ajatellen, ensisijaisesti kehittäjille.Siksi olen luonut kirjastot useimpiin suosittuihin kehityskieliin. Tein tämän ajatuksella, että Log Bull voidaan liittää mihin tahansa suosittuun kirjastoon prosessorina muuttamatta nykyistä koodipohjaa. Suosittelen lämpimästi tarkistamaan , koska on vuorovaikutteinen paneeli kielen valitsemiseksi: Esimerkkejä verkkosivuilta Ensinnäkin sinun on asennettava kirjasto (vaikka voit myös lähettää sen HTTP: n kautta; on esimerkkejä cURL: stä): pip install logbull Lähetä sitten koodi: 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) Kuinka katsella lokeja? Kaikki lokit näkyvät välittömästi päänäytöllä. Voit: Vähennä viestien kokoa (leikkaamalla viiva ~50-100 merkkiin). Laajenna lähetettyjen kenttien luetteloa (user_id, order_id jne.). Napsauta kenttää ja lisää se suodattimelle. Lokit hakee ehdoilla: Voit myös kerätä ehtojen ryhmiä (esimerkiksi viesti sisältää tietyn tekstin, mutta sulkee pois tietyn palvelimen IP-osoitteen). Johtopäätös Toivon, että log-keräysjärjestelmäni on hyödyllinen niille kehittäjille, jotka eivät halua tai eivät pysty (rajoitetun projektin resurssien vuoksi) toteuttamaan ”raskaita” ratkaisuja, kuten ELK. Käytän jo Log Bullia tuotantoprojekteissa, ja kaikki menee hyvin. . Käy Githubissa