منذ حوالي خمس سنوات، أنا أمام مهمة جمع المجلات، عادة من قواعد الكود الصغيرة إلى المتوسطة. إرسال المجلات من الكود ليس مشكلة: Java و Go لديها مكتبات للقيام بذلك على نحو لا يصدق. ولكن إرسال شيء لجمعها هو مشكلة رأسية. أنا أدرك أن هذه مهمة قابلة للحل (حتى قبل ChatGPT، وحتى الآن أكثر من ذلك). أكثر من فريقين صغيرين أو المطورين الفرديين مع بضائع قليلة، والأقراص، والمرحلة الماضية "في الغد". r إن إطلاق ELK هو تحديا بالنسبة لي كل مرة: مجموعة من الإعدادات، وتشغيل غير مألوف، وعندما أذهب إلى interfaces، عينتي تذهب من الخرائط.بعد Loki وGraylog، فهي أسهل قليلا، ولكن لا تزال هناك الكثير من الميزات أكثر من الحاجة.في الوقت نفسه، تقسيم المستندات بين المشاريع وإضافة المستخدمين الآخرين إلى النظام حتى لا ترى أي شيء لا ينبغي أن يكون هو العمل الأبرز أيضًا. لذلك، قبل عام تقريبا، قررت إنشاء نظام تجميع الورق الخاص بي. واحدة هي سهلة الاستخدام والبدء على المدى القصير. سوف يتم تنفيذها على المورد مع إجراءات واحدة، دون أي تكوين أو بطاقات غير ضرورية في المتصفح. هذا هو الطريقة التي تأتي بها Log Bull، والآن هو مصدر مفتوح: نظام تجميع الورق. مع المشاريع المتوسطة. for developers Table of contents: حول المشروع كيفية استخدام Log Bull؟ كيفية إرسال اللوحات؟ كيفية رؤية اللوحات؟ النتيجة حول المشروع Log Bull هو نظام تجميع الرسائل مع التركيز على سهولة الاستخدام (التصميم الأدنى، الميزات الأدنى، 0-config عند البدء في البدء). المشروع هو مفتوح تماما تحت ترخيص Apache 2.0. كان أول تركيزاتي هو إنشاء حل يتيح للمطورين الصغار فهم بسهولة كيفية بدء النظام، كيفية إرسال الرسائل إلى ذلك، وكيفية مشاهدةها في حوالي 15 دقيقة. Key features of the project: يتم توزيعها باستخدام إرسال واحد من خلال إرسال .sh script أو إرسال Docker. يمكنك إنشاء العديد من المشاريع الفردية لجمع المستندات (و إضافة المستخدمين لهم). رابط بسيط للغاية مع الحد الأدنى من التكوين، ولا تحتاج إلى تكوين على الإطلاق عند البدء (zero-config). مكتبات لـ Python ، Java ، Go ، JavaScript (TS \ NodeJS) ، PHP ، C#. مجانًا، مفتوح المصدر، وأيضًا. لا حاجة إلى معرفة لغات LogQL أو Kibana DSL أو لغات الاستفسارات الأخرى للبحث عن المجلات. https://www.youtube.com/watch?v=8H8jF8nVzJE&embedable=true يتم تطوير المشروع في Go وتطويرها على OpenSearch. موقع المشروع - https://logbull.com مشروع GitHub - https://github.com/logbull/logbull P.S. إذا كنت تعتقد أن المشروع مفيد و لديك حساب GitHub، يرجى إعطاءها نجمة ⭐️. كيفية استخدام Log Bull؟ هناك ثلاث طرق لتنفيذ مشروع: من خلال سجل .sh (من الموصى إليه)، من خلال Docker و من خلال Docker Compose. Method 1: Installation via script سيتم تثبيت Docker ، ويضع المشروع في مجلد /opt/logbull ، ويتم تثبيت بدء التشغيل الذاتي عند إعادة تشغيل النظام. 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 إنشاء ملف 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 والقيام بالدعوة سيتم تشغيل نظام التشغيل على الباب 4005. docker compose up -d Method 3: Launch via Docker command قم بتنفيذ الخطوة التالية في المحطات (يتم تشغيل النظام أيضًا على البوابة 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 يمكن أن تتصل إلى أي مكتبة شعبية كمعالج دون تغيير قاعدة الكود الحالي. أود أن أشكركم على التحقق من ، لأن هناك منصة تفاعلية لتحديد لغة: أمثلة على الموقع أولا، تحتاج إلى تثبيت المكتبة (على الرغم من أنه يمكنك أيضًا إرسالها من خلال 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 ، وما إلى ذلك). انقر فوق مجال وتضيفه إلى الخلايا. يوتيوب البحث مع شروط: يمكنك أيضًا جمع مجموعات الشروط (على سبيل المثال، يشمل الرسالة نصًا معينًا، ولكن لا يشمل عنوان IP محمولًا معينًا). النتيجة أتمنى أن يكون نظام جمع الورق الخاص بي مفيد لأولئك المطورين الذين لا يريدون أو لا يستطيعون (بسبب موارد المشروع المحددة) تنفيذ الحلول "الصعبة" مثل ELK. أنا بالفعل تستخدم Log Bull في مشاريع الإنتاج، وكل شيء يمر بشكل جيد. . على Github