বড় লগ ফাইলগুলিতে টেল-ফ ব্যবহার করা কি ঠিক?


9

আমি ত্রুটির জন্য একটি বড় লগ ফাইল (1 গিগাবাইটের কাছাকাছি) নিরীক্ষণ করতে চাই। আমি এটি বাস্তব সময়ের কাছাকাছি হতে চাই (কয়েক সেকেন্ডের বিলম্ব ঠিক আছে)। আমার পরিকল্পনা ব্যবহার করা হয় tail -f | grep। দীর্ঘ সময় ধরে চলার সময় এ জাতীয় কোনও পদ্ধতি ব্যবহার করার ক্ষেত্রে কি কোনও পারফরম্যান্স সমস্যা রয়েছে, শূন্য বাইট থেকে 1 জিবি বলুন? এই জাতীয় পর্যবেক্ষণের জন্য কোনও মানক অনুশীলন ব্যবহার করা হয়? নোট করুন যে আমি সোলারিস 10 এ উপলব্ধ স্ট্যান্ডার্ড ইউনিক্স কমান্ড ব্যবহার করে এটি করতে চাই।

যদি এটি সম্ভব হয় তবে আমার ফাইলটি এমনকি গড়িয়ে যায় এবং আমার বাছাই করতে আরও একটি সমস্যা আছে :)। ব্যবহার tail -F( --follow=name) কারণ আমার জন্য একটি বিকল্প নয় -Fসার্ভার আমি এই চালাতে চান সমর্থিত নয়। আমার পরিকল্পনা হ'ল একটি স্ক্রিপ্ট ব্যবহার করা যা এই লেজটি শুরু করবে এবং ফাইলটি ঘূর্ণিত হয়েছে কিনা তা জানতে পোল করে। যদি হ্যাঁ, তবে লেজটি মেরে তা আবার চালু করুন। এর চেয়ে ভাল কোন পদ্ধতি?


তুমি "মারো" বলতে tailচাও, তাইনা?
স্টাফেন গিমেনেজ

হ্যাঁ, "লেজ মেরে ফেলুন", খুঁজে পাবেন না। ধন্যবাদ, প্রশ্নটি সম্পাদনা করেছেন
মনোজ এনভি

1
যদি 2 জিবি আকারের ফাইলটিতে কোনও নতুন লাইন চরিত্র না থাকে তবে লেজ কীভাবে কাজ করবে?

উত্তর:


6

আমার লিনাক্স সিস্টেমে (জিএনইউ কোর্টিলস 8.12), আমি যাচাই করতে সক্ষম হয়েছি (ব্যবহার করে strace) যে call সিস্টেম কলটি ফাইলের বেশিরভাগ অংশে দ্রুত এড়াতে tail -fব্যবহার করে lseek:

lseek(3, 0, SEEK_CUR)                   = 0
lseek(3, 0, SEEK_END)                   = 194086
lseek(3, 188416, SEEK_SET)              = 188416

এর অর্থ ট্র্যাক করা ফাইলের আকার যেভাবেই হওয়া উচিত নয়।

আপনার সিস্টেমে এটি একই প্রযোজ্য কিনা তা আপনি পরীক্ষা করতে পারেন। (অবশ্যই, এটি হওয়া উচিত।)

-
১. আমি কেবলমাত্র সেক্ষেত্রে অনির্ধারিতদের সাথে অক্ষত সমর্থন অক্ষম করার চেষ্টা করেছি ---disable-inotify


2
রিয়েল পুরুষরা উত্সটি পড়েন (:
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

2
@Gilles। আমি ওপিকে (বা পাঠককে) উত্সটি কীভাবে পড়তে হবে তা শিখতে পারি না যদি সে ইতিমধ্যে জানে না। তাকে ব্যবহার করতে বলার জন্য অনেক সহজ strace;)
স্টাফেন গিমেনেজ

আসলে, এমন একটি সিস্টেমে যেখানে tail -Fসমর্থিত নয়, সম্ভাবনাগুলি সেগুলি straceউপলভ্য নয় ...
স্টাফেন গিমেনেজ

trussসোলারিসের সম্পর্কিত ইউটিলিটি।
গিলস 'তাই মন্দ হওয়া বন্ধ করুন'

এবং এটি অনুরূপ কলগুলি দেখায়। llseek (0, 0, SEEK_CUR) = 0, llseek (0, 0xFFFFFFFFFFFFFF6, SEEK_END) = 7923269
jlliagre

5

যদি এটি কোনও নিয়মিত ফাইলের (পাইপের বিপরীতে) অনুরোধ করা হয়, জিএনইউ লেজ এবং ওপেনবিএসডি লেজ উভয়ই (শেষ পর্যন্ত বলা না হয় -n +N) ফাইলটির শেষের দিকে চেষ্টা করে, তারপরে লাইনটি মুদ্রণটি শুরু করা উচিত যেখানে এটি সন্ধান করতে পিছনের দিকে কাজ করে। আমি জানি না সোলারিসও একই কাজ করে কিনা, তবে এটি একটি যুক্তিসঙ্গত পদ্ধতির, তাই আমি বেশিরভাগ ইউনিটই একই কাজ করার প্রত্যাশা করি। সুতরাং ফাইলটির আকার কার্য সম্পাদনের জন্য অপ্রাসঙ্গিক।


2

আমি প্রতিদিন এটি করি। আমি সাধারণত আমাদের টেস্ট এবং প্রডাকশন সার্ভারগুলিতে ব্যবহার করে একটি ডজন বা তার বেশি লগ করি tail -f logs/*.{log,err,out}। প্রাথমিক লোডটি কিছুটা বেশি (গ্লোবড ফাইলগুলির সংখ্যার উপর নির্ভর করে) তবে স্ট্রিমিং রিয়েল-টাইম।

গ্রেপ-তে প্রেরণের পরিবর্তে আমি execকার্যকারিতাটি ব্যবহার করি screenযেহেতু আমি সাধারণত সমস্ত আউটপুট দেখতে চাই (ইস্যু সম্পর্কিত পুরো ট্রেসব্যাক এবং বার্তাগুলির জন্য)। উদাহরণ স্বরূপ,

!:sed -n s/.*Exception.*/\007/p

যখনই ব্যতিক্রম শব্দটি পাওয়া যায় তখন টার্মিনালটিকে বীপ (বা ফ্ল্যাশ) করার কারণ হতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.