Selama sekitar lima tahun, saya telah menghadapi tugas mengumpulkan log, biasanya dari basis kode berukuran kecil hingga menengah. Mengirim log dari kode bukanlah masalah: Java dan Go memiliki pustaka untuk ini yang praktis tersedia langsung. Tetapi men-deploy sesuatu untuk mengumpulkannya adalah hal yang memusingkan. Saya mengerti bahwa ini adalah tugas yang dapat diselesaikan (bahkan sebelum ChatGPT, dan sekarang lebih mudah lagi). Namun, semua sistem logging terutama ditujukan untuk dunia perusahaan besar dan persyaratannya, bukan untuk tim kecil atau pengembang tunggal dengan sedikit sumber daya, lem, dan tenggat waktu "kemarin".
Meluncurkan ELK adalah tantangan bagi saya setiap kali: banyak pengaturan, deployment yang tidak sederhana, dan ketika saya memasuki UI, mata saya kebingungan melihat tab-tabnya. Dengan Loki dan Graylog, sedikit lebih mudah, tetapi masih ada lebih banyak fitur daripada yang saya butuhkan. Pada saat yang sama, memisahkan log antar proyek dan menambahkan pengguna lain ke sistem agar mereka tidak melihat apa yang seharusnya tidak mereka lihat, juga bukan proses yang paling jelas.
Jadi sekitar setahun yang lalu, saya memutuskan untuk membuat sistem pengumpulan log saya sendiri. Yang semudah mungkin digunakan dan diluncurkan. Sistem ini akan di-deploy di server dengan satu perintah, tanpa konfigurasi atau tab yang tidak perlu di antarmuka. Begitulah Log Bull muncul, dan sekarang bersifat open source: sistem pengumpulan log untuk pengembang dengan proyek berukuran menengah.
Daftar isi:
Log Bull adalah sistem pengumpulan log dengan penekanan pada kemudahan penggunaan (konfigurasi minimal, fitur minimal, zero-config saat startup). Proyek ini sepenuhnya open source di bawah lisensi Apache 2.0. Prioritas utama saya adalah menciptakan solusi yang memungkinkan pengembang junior untuk dengan mudah memahami cara memulai sistem, cara mengirim log ke dalamnya, dan cara melihatnya dalam waktu sekitar 15 menit.
Fitur utama proyek:
https://www.youtube.com/watch?v=8H8jF8nVzJE&embedable=true
Proyek ini dikembangkan dengan Go dan dibangun di atas OpenSearch.
Situs web proyek - https://logbull.com
GitHub proyek - https://github.com/logbull/logbull
P.S. Jika Anda merasa proyek ini berguna dan memiliki akun GitHub, silakan berikan bintang ⭐️. Bintang-bintang pertama sulit untuk dikumpulkan. Saya akan sangat berterima kasih atas dukungan Anda!
Ada tiga cara untuk men-deploy proyek: melalui skrip .sh (yang saya rekomendasikan), melalui Docker dan melalui Docker Compose.
Metode 1: Instalasi melalui skrip
Skrip akan menginstal Docker, menempatkan proyek di folder /opt/logbull, dan mengkonfigurasi autostart ketika sistem di-restart. Perintah instalasi:
sudo apt-get install -y curl && \ sudo curl -sSL https://raw.githubusercontent.com/logbull/logbull/main/install-logbull.sh \ | sudo bash
Metode 2: Peluncuran melalui Docker Compose
Buat file docker-compose.yml dengan konten berikut:
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
Dan jalankan perintah docker compose up -d. Sistem akan dimulai pada port 4005.
Metode 3: Peluncuran melalui perintah Docker
Jalankan perintah berikut di terminal (sistem juga akan dimulai pada port 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
Saya merancang proyek dengan mempertimbangkan kenyamanan, terutama untuk pengembang. Itulah mengapa saya membuat pustaka untuk sebagian besar bahasa pengembangan populer. Saya melakukan ini dengan ide bahwa Log Bull dapat dihubungkan ke pustaka populer mana pun sebagai prosesor tanpa mengubah basis kode saat ini.
Saya sangat menyarankan untuk melihat contoh di situs web, karena ada panel interaktif untuk memilih bahasa:

Mari ambil Python sebagai contoh. Pertama, Anda perlu menginstal pustaka (meskipun Anda juga dapat mengirimnya melalui HTTP; ada contoh untuk cURL):
pip install logbull
Kemudian kirim dari kode:
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)
Semua log ditampilkan segera di layar utama. Anda dapat:
Mengurangi ukuran pesan (dengan memotong baris menjadi ~50-100 karakter).
Memperluas daftar bidang yang dikirim (user_id, order_id, dll.).
Klik pada bidang dan tambahkan ke filter. Pencarian log dengan kondisi:



Anda juga dapat mengumpulkan kelompok kondisi (misalnya, pesan mencakup teks tertentu, tetapi mengecualikan alamat IP server tertentu).
Saya berharap sistem pengumpulan log saya akan berguna bagi para pengembang yang tidak ingin atau tidak dapat (karena keterbatasan sumber daya proyek) mengimplementasikan solusi "berat" seperti ELK. Saya sudah menggunakan Log Bull dalam proyek produksi, dan semuanya berjalan dengan baik. Saya menyambut umpan balik, saran untuk perbaikan, dan masalah di GitHub.


