دروس الوحدة (2/4)
محلل سجل أباتشي
تتمتع سجلات Apache (التنسيق المدمج) ببنية دقيقة:
127.0.0.1 - - [10/Oct/2024:13:55:36 +0000] "GET /index.html HTTP/1.1" 200 1234يستخرج النمط الذي يحتوي على مجموعات مسماة كل حقل في لقطة واحدة:
^(?<ip>\d+\.\d+\.\d+\.\d+)\s+\S+\s+\S+\s+\[[^\]]+\]\s+"(?<metodo>\w+)\s+(?<path>\S+)\s+\S+"\s+(?<status>\d+)\s+(?<size>\d+)يبدو الأمر فظيعًا، لكنه تسلسل لأنماط بسيطة:
(?<ip>\d+\.\d+\.\d+\.\d+)-- المصدر IPv4.\s+\S+\s+\S+-- معرفات المستخدمين (عادةً-).\[[^\]]+\]-- التاريخ بين قوسين مربعين."(?<metodo>\w+)\s+(?<path>\S+)\s+\S+"-- الطلب بين علامتي اقتباس، مع أسلوب HTTP والمسار والإصدار.(?<status>\d+)\s+(?<size>\d+)- تم إرسال رمز الحالة والبايتات.
الإستراتيجية العامة
- ابدأ من السطر الحقيقي وثبت المحددات: مسافات، علامات الاقتباس، الأقواس.
- بين المحددات، حدد نوع الرمز المميز (IP، كلمة، رقم).
- قم بتضمين مجموعات مسماة فقط ما تحتاج إلى استخراجه.
تحليل السجلات المعقدة
في تحليل السجل، تكون الحقول عادةً مفصولة بمسافات إلا عندما تحتوي على سلاسل أو أقواس مقتبسة (مثل وكيل المستخدم). يؤدي استخدام استبعاد فئات الأحرف بدلاً من نقطة البدل إلى منع دمج أعمدة متعددة بشكل غير صحيح.
جربه
قم باستخراج IPv4 في بداية كل سطر سجل كمجموعة مسماة `ip`.
إظهار التلميح
قم بالارتساء في بداية السطر الذي يحتوي على ^ والعلامة m، وقم بلف IP في (؟<ip>...).
الحل متاح بعد 3 من المحاولات
تمرين المراجعة
قم باستخراج طريقة HTTP ومسار الطلب بين علامتي الاقتباس، كمجموعات "metodo" و"path".
إظهار التلميح
افتح باستخدام "، ثم (?<metodo>\\w+)\\s+(?<path>\\S+).
الحل متاح بعد 3 من المحاولات
التحدي الإضافي
Extract only the date and time part enclosed in brackets in logs, e.g. `10/Oct/2024:13:55:36 +0000`, as a named group `timestamp`.
إظهار التلميح
Use \[(?<timestamp>[^\]]+)\] to prevent the engine from matching past the closing bracket.
الحل متاح بعد 3 من المحاولات