لوج بول هو نظام جمع السجلات مع التركيز على سهولة الاستخدام. يمكن نشره عبر سكريبت .sh، أو عبر دوكر أو عبر دوكر كومبوز. المشروع مفتوح المصدر بالكامل تحت رخصة أباتشي 2.0.لوج بول هو نظام جمع السجلات مع التركيز على سهولة الاستخدام. يمكن نشره عبر سكريبت .sh، أو عبر دوكر أو عبر دوكر كومبوز. المشروع مفتوح المصدر بالكامل تحت رخصة أباتشي 2.0.

كانت ELK و Loki و Graylog مبالغًا فيها، لذلك قمت ببناء Log Bull

2025/10/16 23:31

منذ حوالي خمس سنوات، واجهت مهمة جمع السجلات، عادة من قواعد الشفرة الصغيرة إلى المتوسطة الحجم. إرسال السجلات من الكود ليس مشكلة: لدى Java و Go مكتبات لهذا الغرض بشكل عملي من البداية. لكن نشر شيء لجمعها هو صداع. أفهم أنها مهمة قابلة للحل (حتى قبل ChatGPT، والآن أكثر من ذلك). ومع ذلك، فإن جميع أنظمة التسجيل موجهة بشكل أساسي نحو عالم المؤسسات الكبيرة ومتطلباتها، بدلاً من الفرق الصغيرة أو المطورين الفرديين مع بعض العصي والغراء وموعد نهائي "بالأمس".

إطلاق ELK يمثل تحديًا بالنسبة لي في كل مرة: مجموعة من الإعدادات، ونشر غير بديهي، وعندما أدخل واجهة المستخدم، تجري عيناي بشكل جامح بين علامات التبويب. مع Loki و Graylog، الأمر أسهل قليلاً، لكن لا يزال هناك ميزات أكثر بكثير مما أحتاج. في نفس الوقت، فصل السجلات بين المشاريع وإضافة مستخدمين آخرين إلى النظام بحيث لا يرون أي شيء لا ينبغي عليهم رؤيته، ليست العملية الأكثر وضوحًا أيضًا.

لذلك قبل حوالي عام، قررت إنشاء نظام جمع السجلات الخاص بي. نظام سهل الاستخدام والإطلاق قدر الإمكان. سيتم نشره على الخادم بأمر واحد، دون أي تكوين أو علامات تبويب غير ضرورية في الواجهة. هكذا ظهر Log Bull، وهو الآن مفتوح المصدر: نظام جمع السجلات للمطورين ذوي المشاريع متوسطة الحجم.

جدول المحتويات:

  • حول المشروع
  • كيفية نشر Log Bull؟
  • كيفية إرسال السجلات؟
  • كيفية عرض السجلات؟
  • الخاتمة

حول المشروع

Log Bull هو نظام لجمع السجلات مع التركيز على سهولة الاستخدام (الحد الأدنى من التكوين، الحد الأدنى من الميزات، بدون تكوين عند بدء التشغيل). المشروع مفتوح المصدر بالكامل تحت ترخيص Apache 2.0. كانت أولويتي الرئيسية هي إنشاء حل يسمح لمطور مبتدئ بمعرفة كيفية بدء تشغيل النظام بسهولة، وكيفية إرسال السجلات إليه، وكيفية عرضها في حوالي 15 دقيقة.

الميزات الرئيسية للمشروع:

  • يتم نشره بأمر واحد عبر نص برمجي .sh أو أمر Docker.
  • يمكنك إنشاء مشاريع معزولة متعددة لجمع السجلات (وإضافة مستخدمين إليها).
  • واجهة بسيطة للغاية مع الحد الأدنى من التكوين، ولا يلزم أي تكوين على الإطلاق عند البدء (بدون مخاطر).
  • مكتبات لـ 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

ملاحظة: إذا وجدت المشروع مفيدًا ولديك حساب GitHub، فيرجى إعطائه نجمة ⭐️. من الصعب جمع النجوم الأولى. سأكون ممتنًا للغاية لدعمك!

كيفية نشر Log Bull؟

هناك ثلاث طرق لنشر المشروع: عبر نص برمجي .sh (الذي أوصي به)، عبر Docker وعبر Docker Compose.

الطريقة 1: التثبيت عبر النص البرمجي

سيقوم النص البرمجي بتثبيت Docker، ووضع المشروع في مجلد /opt/logbull، وتكوين بدء التشغيل التلقائي عند إعادة تشغيل النظام. أمر التثبيت:

sudo apt-get install -y curl && \ sudo curl -sSL https://raw.githubusercontent.com/logbull/logbull/main/install-logbull.sh \ | sudo bash 

الطريقة 2: الإطلاق عبر 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 

وقم بتشغيل الأمر docker compose up -d. سيبدأ النظام على المنفذ 4005.

الطريقة 3: الإطلاق عبر أمر Docker

قم بتشغيل الأمر التالي في المحطة الطرفية (سيبدأ النظام أيضًا على المنفذ 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 يمكن توصيله بأي مكتبة شائعة كمعالج دون تغيير قاعدة الكود الحالية.

أوصي بشدة بالاطلاع على الأمثلة على الموقع، لأن هناك لوحة تفاعلية لاختيار اللغة:

Code examples picler

لنأخذ Python كمثال. أولاً، تحتاج إلى تثبيت المكتبة (على الرغم من أنه يمكنك أيضًا إرسالها عبر 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، إلخ).

  • انقر على حقل وأضفه إلى عامل التصفية. البحث في السجلات مع الشروط:

    Logs search with conditions

    Regular logs view

    Viewing messages text only (you can cut extra fields):

يمكنك أيضًا جمع مجموعات من الشروط (على سبيل المثال، تتضمن الرسالة نصًا معينًا، ولكنها تستبعد عنوان IP محدد للخادم).

الخاتمة

آمل أن يكون نظام جمع السجلات الخاص بي مفيدًا لأولئك المطورين الذين لا يريدون أو لا يستطيعون (بسبب موارد المشروع المحدودة) تنفيذ حلول "ثقيلة الوزن" مثل ELK. أنا بالفعل أستخدم Log Bull في مشاريع الإنتاج، وكل شيء يسير على ما يرام. أرحب بالتعليقات والاقتراحات للتحسين والمشكلات على GitHub.

إخلاء مسؤولية: المقالات المُعاد نشرها على هذا الموقع مستقاة من منصات عامة، وهي مُقدمة لأغراض إعلامية فقط. لا تُظهِر بالضرورة آراء MEXC. جميع الحقوق محفوظة لمؤلفيها الأصليين. إذا كنت تعتقد أن أي محتوى ينتهك حقوق جهات خارجية، يُرجى التواصل عبر البريد الإلكتروني [email protected] لإزالته. لا تقدم MEXC أي ضمانات بشأن دقة المحتوى أو اكتماله أو حداثته، وليست مسؤولة عن أي إجراءات تُتخذ بناءً على المعلومات المُقدمة. لا يُمثل المحتوى نصيحة مالية أو قانونية أو مهنية أخرى، ولا يُعتبر توصية أو تأييدًا من MEXC.

قد يعجبك أيضاً