مشاركة عبر


[مهمل] استخدام Logstash لدفق السجلات باستخدام HTTP Data Collection API (قديم)

هام

يتم الآن دعم جمع السجلات من العديد من الأجهزة والأجهزة من قبل تنسيق الأحداث العامة (CEF) عبر AMA أو Syslog عبر AMA أو السجلات المخصصة عبر موصل بيانات AMA في Microsoft Sentinel. لمزيد من المعلومات، راجع البحث عن موصل بيانات Microsoft Sentinel.

هام

استيعاب البيانات باستخدام المكون الإضافي لإخراج Logstash حاليًا في المعاينة العامة. يتم توفير هذه الميزة بدون اتفاقية على مستوى الخدمة، ولا يوصى بها لأحمال العمل الخاصة بالإنتاج. لمزيد من المعلومات، راجع ⁧⁩شروط الاستخدام التكميلية لمعاينات Microsoft Azure⁧⁩.

إشعار

يمكن لإصدار أحدث من المكون الإضافي Logstash إعادة توجيه السجلات من مصادر البيانات الخارجية إلى جداول مخصصة وقياسية باستخدام واجهة برمجة التطبيقات المستندة إلى DCR. يسمح المكون الإضافي الجديد بالتحكم الكامل في مخطط الإخراج، بما في ذلك تكوين أسماء الأعمدة وأنواعها.

باستخدام المكون الإضافي المسؤول عن الإخراج بنظام Microsoft Sentinel لمحرك مجموعة بيانات Logstash، يُمكنك إرسال أي نوع سجل تريده عبر Logstash مباشرةً إلى مساحة عمل «تحليل السجل» في نظام Microsoft Sentinel. سيتم إرسال سجلاتك إلى جدول مخصص تحدده باستخدام المكون الإضافي للإخراج. يستخدم هذا الإصدار من المكون الإضافي واجهة برمجة تطبيقات مجموعة بيانات HTTP.

لمعرفة المزيد حول العمل باستخدام محرك جمع بيانات Logstash، راجع بدء استخدام Logstash.

نظرة عامة

البنية والخلفية

رسم تخطيطي لبنية Logstash.

يتكون محرك Logstash من ثلاثة مكونات:

  • المكونات الإضافية للإدخال: تجميع مخصص للبيانات من مصادر مختلفة.
  • تصفية المكونات الإضافية: معالجة البيانات وتطبيعها وفقًا لمعايير محددة.
  • المكونات الإضافية للإخراج: إرسال مخصص للبيانات المجمعة والمعالجة إلى وجهات مختلفة.

إشعار

  • تدعم Microsoft فقط المكون الإضافي لإخراج Logstash الذي يوفره Microsoft Sentinel الذي تمت مناقشته هنا. الإصدار الحالي من هذا المكون الإضافي هو v1.0.0، الذي تم إصداره في 2020-08-25. يمكنك فتح تذكرة دعم لأي مشكلات تتعلق بالمكون الإضافي للإخراج.

  • لا تدعم Microsoft المكونات الإضافية لإخراج Logstash التابعة لجهة خارجية لـ Microsoft Sentinel، أو أي مكون إضافي أو مكون Logstash آخر من أي نوع.

  • يدعم المكون الإضافي لإخراج Logstash من Microsoft Sentinel إصدارات Logstash من 7.0 إلى 7.17.10 فقط ، والإصدارات من 8.0 إلى 8.9 و8.11. إذا كنت تستخدم Logstash 8، نوصي بتعطيل ECS في البنية الأساسية لبرنامج ربط العمليات التجارية.

يرسل المكون الإضافي لإخراج Microsoft Sentinel لـ Logstash بيانات بتنسيق JSON إلى مساحة عمل Log Analytics، باستخدام Log Analytics HTTP Data Collector REST API. يتم استيعاب البيانات في سجلات مخصصة.

توزيع المكون الإضافي لإخراج Microsoft Sentinel في Logstash

الخطوة 1: التثبيت

يتوفر المكون الإضافي لإخراج Microsoft Sentinel في مجموعة Logstash.

الخطوة 2: التكوين

استخدم المعلومات الواردة في مستند Logstash بنية ملف تكوين وأضف المكون الإضافي لإخراج Microsoft Sentinel إلى التكوين باستخدام المفاتيح والقيم التالية. (يظهر بناء جملة ملف التكوين المناسب بعد الجدول).

اسم الحقل نوع البيانات ‏‏الوصف
workspace_id سلسلة أدخل المعرف الفريد العمومي لمساحة العمل (راجع التلميح).
workspace_key سلسلة أدخل المعرف الفريد العمومي للمفتاح الأساسي لمساحة العمل (راجع التلميح).
custom_log_table_name سلسلة عيّن اسم الجدول الذي سيتم استيعاب السجلات فيه. يمكن تكوين اسم جدول واحد فقط لكل مكون إضافي للإخراج. سيظهر جدول السجل في Microsoft Sentinel ضمن السجلات، في الجداول في فئة السجلات المخصصة، مع لاحقة _CL.
endpoint سلسلة حقل اختياري. بشكل افتراضي، هذه هي نقطة نهاية Log Analytics. استخدم هذا الحقل لتعيين نقطة نهاية بديلة.
time_generated_field سلسلة حقل اختياري. تتجاوز هذه الخاصية حقل TimeGenerated الافتراضي في Log Analytics. أدخل اسم حقل الطابع الزمني في مصدر البيانات. يجب أن تتوافق البيانات الموجودة في الحقل مع تنسيق ISO 8601 (YYYY-MM-DDThh:mm:ssZ)
key_names صفيف أدخل قائمة حقول مخطط إخراج Log Analytics. يجب أن يكون كل عنصر قائمة محاطًا بعلامات اقتباس مفردة والعناصر مفصولة بفواصل، والقائمة بأكملها محاطة بأقواس مربعة. انظر المثال أدناه.
plugin_flush_interval رقم حقل اختياري. عيّن لتحديد الحد الأقصى للفاصل الزمني (بالثوان) بين عمليات إرسال الرسائل إلى Log Analytics. القيمة الافتراضية هي 5.
amount_resizing boolean صواب‏‎ أو خطأ‏‎. تمكين أو تعطيل آلية التحجيم التلقائي، التي تضبط حجم المخزن المؤقت للرسالة وفقًا لحجم بيانات السجل المستلمة.
max_items رقم حقل اختياري. ينطبق فقط إذا تم تعيين amount_resizing على "خطأ". استخدمه لتعيين حد أقصى لحجم المخزن المؤقت للرسالة (في السجلات). القيمة الافتراضية هي 2000.
azure_resource_id سلسلة حقل اختياري. يحدد معرف مورد Azure حيث توجد البيانات.
تكون قيمة معرف المورد مفيدة بشكل خاص إذا كنت تستخدم التحكم في الوصول استنادًا إلى الدور في سياق المورد لتوفير الوصول إلى بيانات معينة فقط.

تلميح

  • يمكنك العثور على معرف مساحة العمل والمفتاح الأساسي في مورد مساحة العمل، ضمن إدارة العوامل.
  • مع ذلك، نظرًا لأن وجود بيانات اعتماد ومعلومات حساسة أخرى مخزنة في نص عادي في ملفات التكوين لا يتماشى مع أفضل ممارسات الأمان، ننصحك بشدة باستخدام مخزن مفاتيح Logstash من أجل تضمين معرف مساحة العمل والمفتاح الأساسي لمساحة العمل في التكوين بشكل آمن. راجع وثائق Elastic للحصول على الإرشادات.

عينة من التكوينات

فيما يلي بعض نماذج التكوينات التي تستخدم القليل من الخيارات المختلفة.

  • تكوين أساسي يستخدم أنبوب إدخال filebeat:

      input {
          beats {
              port => "5044"
          }
      }
      filter {
      }
      output {
          microsoft-logstash-output-azure-loganalytics {
            workspace_id => "<your workspace id>"
            workspace_key => "<your workspace key>"
            custom_log_table_name => "tableName"
          }
      }
    
  • تكوين أساسي يستخدم أنبوب إدخال tcp:

      input {
          tcp {
              port => "514"
              type => syslog #optional, will effect log type in table
          }
      }
      filter {
      }
      output {
          microsoft-logstash-output-azure-loganalytics {
            workspace_id => "<your workspace id>"
            workspace_key =>  "<your workspace key>"
            custom_log_table_name => "tableName"
          }
      }
    
  • التكوين متقدم:

      input {
          tcp {
              port => 514
              type => syslog
          }
      }
      filter {
          grok {
              match => { "message" => "<%{NUMBER:PRI}>1 (?<TIME_TAG>[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}T[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2})[^ ]* (?<HOSTNAME>[^ ]*) %{GREEDYDATA:MSG}" }
          }
      }
      output {
          microsoft-logstash-output-azure-loganalytics {
              workspace_id => "<WS_ID>"
              workspace_key => "${WS_KEY}"
              custom_log_table_name => "logstashCustomTable"
              key_names => ['PRI','TIME_TAG','HOSTNAME','MSG']
              plugin_flush_interval => 5
          }
      } 
    
  • تكوين أكثر تقدما لتحليل طابع زمني مخصص وسلسلة JSON من بيانات نصية غير منظمة وتسجيل مجموعة محددة من الحقول في Log Analytics باستخدام الطابع الزمني المستخرج:

      # Example log line below:
      # Mon Nov 07 20:45:08 2022: { "name":"_custom_time_generated", "origin":"test_microsoft", "sender":"test@microsoft.com", "messages":1337}
      # take an input
      input {
          file {
              path => "/var/log/test.log"
          }
      }
      filter {
      # extract the header timestamp and the Json section
          grok {
              match => {
                  "message" => ["^(?<timestamp>.{24}):\s(?<json_data>.*)$"]
              }
          }
      # parse the extracted header as a timestamp
      date {
          id => 'parse_metric_timestamp'
              match => [ 'timestamp', 'EEE MMM dd HH:mm:ss yyyy' ]
              timezone => 'Europe/Rome'
              target => 'custom_time_generated'
          }
      json {
          source => "json_data"
          }
      }
      # output to a file for debugging (optional)
      output {
          file {
              path => "/tmp/test.txt"
              codec => line { format => "custom format: %{message} %{custom_time_generated} %{json_data}"}
          }
      }
      # output to the console output for debugging (optional)
      output {
          stdout { codec => rubydebug }
      }
      # log into Log Analytics
      output {
          microsoft-logstash-output-azure-loganalytics {
              workspace_id => '[REDACTED]'
              workspace_key => '[REDACTED]'
              custom_log_table_name => 'RSyslogMetrics'
              time_generated_field => 'custom_time_generated'
              key_names => ['custom_time_generated','name','origin','sender','messages']
          }
      }
    

    إشعار

    قم بزيارة مستودع GitHub لمعرفة المزيد حول إعدادات العمل والتكوين والأداء الداخلية الخاصة به.

الخطوة 3: إعادة تشغيل Logstash

الخطوة 4: عرض السجلات الواردة في Microsoft Sentinel

  1. تحقق من إرسال الرسائل إلى المكون الإضافي للإخراج.

  2. من قائمة التنقل في Microsoft Sentinel، انقر فوق السجلات. ضمن عنوان الجداول، قم بتوسيع فئة السجلات المخصصة. ابحث عن اسم الجدول الذي حددته (مع لاحقة _CL) وانقر فوقه في التكوين.

    لقطة شاشة لسجلات stash المخصصة.

  3. للطلاع على السجلات في الجدول، استعلم عن الجدول باستخدام اسم الجدول كمخطط.

    لقطة شاشة للاستعلام عن سجلات log stash المخصصة.

مراقبة سجلات تدقيق المكون الإضافي للإخراج

لمراقبة الاتصال والنشاط للمكون الإضافي لإخراج Microsoft Sentinel، قم بتمكين ملف سجل Logstash المناسب. راجع مستند تخطيط دليل Logstash لموقع ملف السجل.

إذا كنت لا ترى أي بيانات في ملف السجل هذا، فقم بإنشاء وإرسال بعض الأحداث محليًا (من خلال المكونات الإضافية للإدخال والتصفية) للتأكد من أن المكون الإضافي للإخراج يتلقى البيانات. سيدعم Microsoft Sentinel المشكلات المتعلقة بالمكون الإضافي للإخراج فقط.

الخطوات التالية

في هذا المستند، تعلمت كيفية استخدام Logstash لتوصيل مصادر البيانات الخارجية بـ Microsoft Sentinel. راجع المقالات التالية للتعرُّف على المزيد حول Microsoft Azure Sentinel: