جمع السجلات من ملف نصي باستخدام Azure Monitor Agent

سجلات النصوص المخصصة هي أحد مصادر البيانات المستخدمة في قاعدة تجميع البيانات (DCR). يتم توفير تفاصيل إنشاء DCR في تجميع البيانات باستخدام عامل Azure Monitor. توفر هذه المقالة تفاصيل إضافية لنوع سجلات النص.

ستقوم العديد من التطبيقات والخدمات بتسجيل المعلومات إلى الملفات النصية بدلا من خدمات التسجيل القياسية مثل سجل أحداث Windows أو Syslog. يمكن جمع هذه البيانات مع عامل Azure Monitor وتخزينها في مساحة عمل Log Analytics مع البيانات التي تم جمعها من مصادر أخرى.

المتطلبات الأساسية

العملية الأساسية

يوضح الرسم التخطيطي التالي العملية الأساسية لجمع بيانات السجل من ملف نصي.

  1. يراقب العامل أي ملفات سجل تطابق نمط اسم محدد على القرص المحلي.
  2. يتم جمع كل إدخال في السجل وإرساله إلى Azure Monitor. يتضمن الدفق الوارد إدخال السجل بأكمله في عمود واحد.
  3. إذا تم استخدام التحويل الافتراضي، يتم إرسال إدخال السجل بأكمله إلى عمود واحد في الجدول الهدف.
  4. إذا تم استخدام تحويل مخصص، يمكن تحليل إدخال السجل في أعمدة متعددة في الجدول الهدف.

رسم تخطيطي يوضح مجموعة سجل نص بواسطة عامل Azure Monitor، ويعرض كلا من المجموعة البسيطة وتحويلا لملف محدد بفاصلة.

متطلبات الملف النصي وأفضل الممارسات

يجب أن يفي الملف الذي يراقبه عامل Azure Monitor بالمتطلبات التالية:

  • يجب تخزين الملف على محرك الأقراص المحلي للجهاز مع عامل Azure Monitor في الدليل الذي تتم مراقبته.
  • يجب تحديد كل سجل بنهاية السطر.
  • يجب أن يستخدم الملف ترميز ASCII أو UTF-8. لا يتم دعم التنسيقات الأخرى مثل UTF-16.
  • يجب إلحاق السجلات الجديدة بنهاية الملف وعدم الكتابة فوق السجلات القديمة. ستؤدي الكتابة فوق إلى فقدان البيانات.

التزم بالتوصيات التالية للتأكد من أنك لا تواجه مشكلات في فقدان البيانات أو الأداء:

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

الدفق الوارد

إشعار

يتوفر الآن الدعم متعدد الأسطر الذي يستخدم طابعا زمنيا للأحداث المحددة. يجب استخدام توزيع قالب إدارة الموارد حتى تتم إضافة الدعم في واجهة مستخدم المدخل.

يتضمن دفق البيانات الوارد الأعمدة في الجدول التالي.

Column نوع ‏‏الوصف
TimeGenerated datetime وقت إنشاء السجل. سيتم ملء هذه القيمة تلقائيا مع وقت إضافة السجل إلى مساحة عمل Log Analytics. يمكنك تجاوز هذه القيمة باستخدام تحويل لتعيينه TimeGenerated إلى قيمة أخرى.
RawData سلسلة إدخال السجل بأكمله في عمود واحد. يمكنك استخدام تحويل إذا كنت تريد تقسيم هذه البيانات إلى أعمدة متعددة قبل الإرسال إلى الجدول.
FilePath سلسلة إذا أضفت هذا العمود إلى الدفق الوارد في DCR، ملؤه بالمسار إلى ملف السجل. لا يتم إنشاء هذا العمود تلقائيا ولا يمكن إضافته باستخدام المدخل. يجب تعديل DCR الذي تم إنشاؤه بواسطة المدخل يدويا أو إنشاء DCR باستخدام أسلوب آخر حيث يمكنك تعريف الدفق الوارد بشكل صريح.
Computer سلسلة إذا أضفت هذا العمود إلى الدفق الوارد في DCR، ملؤه باسم الكمبيوتر مع ملف السجل. لا يتم إنشاء هذا العمود تلقائيا ولا يمكن إضافته باستخدام المدخل. يجب تعديل DCR الذي تم إنشاؤه بواسطة المدخل يدويا أو إنشاء DCR باستخدام أسلوب آخر حيث يمكنك تعريف الدفق الوارد بشكل صريح.

جدول مخصص

قبل أن تتمكن من جمع بيانات السجل من ملف نصي، يجب إنشاء جدول مخصص في مساحة عمل Log Analytics لتلقي البيانات. يجب أن يتطابق مخطط الجدول مع البيانات التي تجمعها، أو يجب إضافة تحويل للتأكد من أن مخطط الإخراج يطابق الجدول.

تحذير

يجب عدم استخدام جدول سجل مخصص موجود يستخدمه وكلاء MMA. لن يتمكن وكلاء MMA من الكتابة إلى الجدول بمجرد كتابة أول عامل AMA إلى الجدول. يجب إنشاء جدول جديد ل AMA لاستخدامه لمنع فقدان بيانات MMA.

على سبيل المثال، يمكنك استخدام البرنامج النصي PowerShell التالي لإنشاء جدول مخصص مع RawDataو FilePathو Computer. لن تحتاج إلى تحويل لهذا الجدول لأن المخطط يطابق المخطط الافتراضي للتدفق الوارد.

$tableParams = @'
{
    "properties": {
        "schema": {
               "name": "{TableName}_CL",
               "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "DateTime"
                    }, 
                    {
                        "name": "RawData",
                        "type": "String"
                    },
                    {
                        "name": "FilePath",
                        "type": "String"
                    },
                    {
                        "name": "Computer",
                        "type": "String"
                    }
              ]
        }
    }
}
'@

Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{WorkspaceName}/tables/{TableName}_CL?api-version=2021-12-01-preview" -Method PUT -payload $tableParams

إنشاء قاعدة تجميع بيانات لملف نصي

إنشاء قاعدة تجميع بيانات، كما هو موضح في تجميع البيانات باستخدام عامل Azure Monitor. في الخطوة Collect and deliver ، حدد Custom Text Logs من القائمة المنسدلة Data source type .

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

أمثلة:
- C:\Logs\MyLog.txt
- C:\Logs\MyLog*.txt
- C:\App01\AppLog.txt، C:\App02\AppLog.txt
- /var/mylog.log
- /var/mylog*.log
اسم الجدول اسم الجدول الوجهة في مساحة عمل Log Analytics.
محدد السجل غير مستخدم حاليا ولكن محجوز للاستخدام المحتمل في المستقبل مما يسمح للمحددات بخلاف نهاية السطر المدعومة حاليا (/r/n).
‏‏تحويل تحويل وقت الاستيعاب لتصفية السجلات أو لتنسيق البيانات الواردة للجدول الوجهة. استخدم source لترك البيانات الواردة دون تغيير.

ملفات السجل المحددة

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

على سبيل المثال، ضع في اعتبارك ملفا نصيا يحتوي على البيانات التالية المحددة بفاصلة. يمكن وصف هذه الحقول على أنها: Timeو CodeSeverityوModule.Message

2024-06-21 19:17:34,1423,Error,Sales,Unable to connect to pricing service.
2024-06-21 19:18:23,1420,Information,Sales,Pricing service connection established.
2024-06-21 21:45:13,2011,Warning,Procurement,Module failed and was restarted.
2024-06-21 23:53:31,4100,Information,Data,Nightly backup complete.

يوزع التحويل التالي البيانات إلى أعمدة منفصلة. نظرا لإرجاع split البيانات الديناميكية، يجب استخدام دالات مثل tostring و toint لتحويل البيانات إلى النوع العددي الصحيح. تحتاج أيضا إلى توفير اسم لكل إدخال يطابق اسم العمود في الجدول الهدف. لاحظ أن هذا المثال يوفر TimeGenerated قيمة. إذا لم يتم توفير ذلك، استخدام وقت الاستيعاب.

source | project d = split(RawData,",") | project TimeGenerated=todatetime(d[0]), Code=toint(d[1]), Severity=tostring(d[2]), Module=tostring(d[3]), Message=tostring(d[4])

لقطة شاشة تعرض تكوين مجموعة الملفات المحددة بفاصلة.

سيؤدي استرداد هذه البيانات باستخدام استعلام سجل إلى إرجاع النتائج التالية.

لقطة شاشة تعرض استعلام السجل الذي يرجع نتائج مجموعة الملفات المحددة بفاصلة.

استكشاف الأخطاء وإصلاحها

انتقل إلى الخطوات التالية إذا كنت لا تجمع البيانات من سجل النص الذي تتوقعه.

  • تحقق من كتابة البيانات إلى ملف السجل الذي يتم تجميعه.
  • تحقق من تطابق اسم ملف السجل وموقعه مع نمط الملف الذي حددته.
  • تحقق من أن مخطط الجدول الهدف يطابق الدفق الوارد أو أن لديك تحويلا سيحول الدفق الوارد إلى المخطط الصحيح.
  • راجع التحقق من العملية للتحقق مما إذا كان العامل قيد التشغيل ويتم تلقي البيانات.

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

تعلم المزيد عن: