মডিউল পাঠ (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+"-- এইচটিটিপি পদ্ধতি, পথ এবং সংস্করণ সহ উদ্ধৃতিতে অনুরোধ।(?<status>\d+)\s+(?<size>\d+)-- স্ট্যাটাস কোড এবং বাইট পাঠানো হয়েছে।
সাধারণ কৌশল
- বাস্তব লাইন থেকে শুরু করুন এবং ডিলিমিটারগুলি পিন করুন: স্পেস, উদ্ধৃতি, বন্ধনী।
- ডিলিমিটারের মধ্যে, টোকেনের টাইপ চিহ্নিত করুন (আইপি, শব্দ, সংখ্যা)।
- নামিত গ্রুপে মোড়ানো শুধুমাত্র যা আপনাকে বের করতে হবে।
জটিল লগ পার্সিং
লগ পার্সিং-এ, ক্ষেত্রগুলি সাধারণত স্থান-বিচ্ছিন্ন হয় যখন তারা উদ্ধৃত স্ট্রিং বা বন্ধনী (যেমন ব্যবহারকারী-এজেন্ট) ধারণ করে। ওয়াইল্ডকার্ড ডটের পরিবর্তে ক্যারেক্টার ক্লাস বাদ দিলে একাধিক কলাম ভুলভাবে মার্জ করা বাধা দেয়।
চেষ্টা করে দেখুন
নামযুক্ত গ্রুপ `ip` হিসাবে প্রতিটি লগ লাইনের শুরুতে IPv4 বের করুন।
ইঙ্গিত দেখান
^ এবং m পতাকা দিয়ে লাইনের শুরুতে নোঙ্গর করুন এবং আইপিকে (?<ip>...) দিয়ে মুড়ে দিন।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
ব্যায়াম পর্যালোচনা করুন
গোষ্ঠী `মেটোডো` এবং `পাথ` হিসাবে কোটগুলির মধ্যে অনুরোধের HTTP পদ্ধতি এবং পথটি বের করুন।
ইঙ্গিত দেখান
" দিয়ে খুলুন, তারপর (?<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 প্রচেষ্টার পরে উপলব্ধ