Tag Archives: elasticsearch

ب201: ماذا تعلم عن “مدّخر السجلات” Logstash في ELK

    Logstash هو أحد حزم ELK. إن لم يكن لديك معلومات عن ELK هي اختصار Elasticsearch-Logstash-Kibana هي باختصار مجموعة من الحزم التي تتيح لك تخزين ومعالجة وعرض البيانات. Logstash  “لج ستاش” يتيح لك معالجة “سجلات البرامج” log files وهي عبارة عن ملفات تستخدمها بعض البرمجيات لتسجيل الأحداث التي طرأت على البرنامج خلال الزمن. على أية حال التعامل مع هذه الملفات أمر ليس بالسهل وخاصة أن هذه الملفات ليس لديها هيكل تنظيمي بسيط. المهم logstash الترجمة الحرفية لإسمه “مدّخر السجلات” وظيفته هي قراءة هذه السجلات (الملفات) وتخزين محتوياتها في حزمة elasticsearch. على فكرة يمكن استخدامه للقراءة والتخزين من وإلى قواعد بيانات أخرى مثل SQL Server.

    clip_image001

     

    والأمر الجميل فيه أنه

    (1) يتعقب الملفات داخل المجلد الذي تيم القراءة منه وبذلك في حال وجود ملف جديد داخل المجلد فسيقوم بشكل تلقائي بمعالجة الملف الجديد. أليس هذا جميلا. طبعا يمكنك عمل برنامج صغير باستخدام c# أو أي لغة برمجة تفضلها للقيام بنفس المهمة إن أردت. على أية حال يعتمد على ملف بامتداد sincedb_ يتبع برقم معرف لتخزين معلومات مثلا عن الملفات التي تم معالجتها.

    (2) تستطيع استخدام لغات مثل رُوبي Ruby و C# أو ترميز مثل جيسون JSON لعمل تنقيح

     

    clip_image002 الملف sincedb تجده في المسار  التالي داخل مجلد logstash الخاص بك: .\data\plugins\inputs\file\.sincedb_<id> إذا لم تجلد الملف فقد يكون بسبب أنك لم تجري أي عمليات قراءة ملفات بعد. راجع المسار لاحقا عندما بعد شروعك بعمليات القراءة.

     

    المهم سنتعرف اليوم على عميلة تنصيب وتشغيل “مدّخر السجلات” logstash. لن يتم تخزين البيانات ولكن سنقوم بقراءة النصوص المكتوبة إلى محرر الأوامر Command Line وإعادة طباعتها إلى الشاشة مرة أخرى

     

    المراحل بشكل مبسط:

    1. قم بتحميل نسخة جافا https://openjdk.java.net/ (لن أتحدث عن طريقة تنصيب وتحصير جافا راجع أحد المواضيع عن ذلك)
    2. قم بتحميل نسخة logstash من خلال الرابط التالي:  https://www.elastic.co/logstash
    3. قم بفك ضغط الملف في أحد مجلدات حاسبتك
    4. انتقل إلى المجلد config وابحث عن ملف logstash-sample.conf
    5. قم بعمل نسخة من هذا الملف وعدل اسمه إلى logstash-stdout.conf أو أي اسم يناسب
    6. ادخل المحتويات التالية إلى داخل الملف الجديد
    7. # Sample Logstash configuration for creating a simple

      # Beats -> Logstash -> Elasticsearch pipeline.

       

      input { stdin {} }

       

      output { stdout {} }

      الملف لا يحتوى الكثير سوى أننا نحدد المدخل  input وهي المكان الذي سيقوم “مدّخر السجلات” بالقراءة منه والمخرج output إلى أين سيتم تحويل البيانات المقروءة. كما أسلفت سابقا في هذه المقالة سيتم عملية القراءة من نافذة محرر الأوامر stdin وإعادة الطباعة إلى محرر الأوامر نفسه stdout

    1. لنقم بتشغيل البرنامج
    1. قم بفتح نافذة محرر الأوامر بورشل أو أي محرر آخر (command line)
    2. انتقل إلى مجلد logstash الأساسي
    3. اكتب الأمر التالي:

    .\bin\logstash.bat -f .\config\logstash-stdout.conf

    1. اذا سارت الأمور على مايرام سيظهر لك على الشاشة شبيه السطر التالي:

    [2020-03-22T10:43:34,508][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

    1. والآن logstash أصبح جاهزا للإختبار. قم بإدخل أي شيء إلى الشاشة وسيتم إعادة طباعته

     

    clip_image003 قد يظهر الخطأ ERROR: Pipelines YAML file is empty  إذا لم تقم بتحديد مسار الملف logstash-stdout.conf إن كان هناك عدد من الملفات بإمتداد conf. داخل المجلد كما في حالتنا هنا.

     

    لنقم بالإختبار:

    قم بإدخال جملة “Hello World” وستجد أن الجملة قد تم طباعتها على الشكل التالي:

     

    {

              “host” => “dell”,

          “@version” => “1”,

           “message” => “Hello World\r”,

        “@timestamp” => 2020-03-22T02:47:10.518Z

    }

     

    الخرج يشبه إلى حد كبير صيغة جيسون json مع إختلاف الفاصل بين المفتاح والقيمة حيث يتم استخدام الرمز  => . طبعا الآن بإمكاني تحويل هذه البيانات إلى Elasticsearch أو MongoDB أو حتى قواعد البيانات التقليدية مثل SQL Server

    وبهذا نكون قد وصلنا إلى نهاية المقالة ب201. في المقالات اللاحقة سنتعرف أكثر إلى طرق استخدام logstash وربطها مع elasticsearch أو مع قواعد بيانات أخرى. ابقوا معنا

%d مدونون معجبون بهذه: