লগিং যুক্তিযুক্তভাবে আপনার পর্যবেক্ষণযোগ্যতা সমাধানের সবচেয়ে গুরুত্বপূর্ণ উপাদান। লগগুলি সিস্টেম আচরণ সম্পর্কে মৌলিক এবং সমৃদ্ধ তথ্য প্রদান করে। একটি আদর্শ বিশ্বে, আপনি লগিং সম্পর্কে সমস্ত সিদ্ধান্ত নেবেন এবং আপনার সমগ্র সিস্টেম জুড়ে একটি সামঞ্জস্যপূর্ণ পদ্ধতি প্রয়োগ করবেন।
যাইহোক, বাস্তব জগতে, আপনি লিগ্যাসি সফ্টওয়্যারের সাথে কাজ করতে পারেন বা বিভিন্ন প্রোগ্রামিং ভাষা, ফ্রেমওয়ার্ক এবং ওপেন-সোর্স প্যাকেজগুলির সাথে কাজ করতে পারেন, প্রতিটির নিজস্ব ফর্ম্যাট এবং লগিংয়ের জন্য কাঠামো রয়েছে৷
আপনার সিস্টেম জুড়ে লগ ফর্ম্যাটে এই ধরনের বৈচিত্র্যের সাথে, আপনার সমস্ত লগ থেকে সর্বাধিক মূল্য বের করার জন্য আপনি কী পদক্ষেপ নিতে পারেন? যে আমরা এই পোস্টে কভার করব কি.
আমরা দেখব কিভাবে লগ ডিজাইন করা যায়, বড় সিস্টেমে লগিং করার চ্যালেঞ্জ এবং সমাধান এবং কিভাবে লগ-ভিত্তিক মেট্রিক্স এবং দীর্ঘমেয়াদী ধরে রাখার বিষয়ে চিন্তা করা যায়।
আসুন লগ লেভেল এবং ফরম্যাটগুলির দিকে নজর দিয়ে ডুব দেওয়া যাক।
লগ ডিজাইনে অনেক বিবেচ্য বিষয় আছে, কিন্তু দুটি সবচেয়ে গুরুত্বপূর্ণ দিক হল লগ লেভেলের ব্যবহার এবং স্ট্রাকচার্ড বা আনস্ট্রাকচার্ড লগ ফরম্যাট ব্যবহার করা।
লগ স্তরগুলি তাদের তীব্রতার উপর ভিত্তি করে লগ বার্তাগুলিকে শ্রেণিবদ্ধ করতে ব্যবহৃত হয়। লগিং ফ্রেমওয়ার্ক বা সিস্টেমের উপর নির্ভর করে ব্যবহৃত নির্দিষ্ট লগ লেভেল পরিবর্তিত হতে পারে। যাইহোক, সাধারণত ব্যবহৃত লগ লেভেলের মধ্যে রয়েছে (বার্বোসিটির ক্রমানুসারে, সর্বোচ্চ থেকে সর্বনিম্ন):
উপযুক্ত স্তরে লগিং সিস্টেমের আচরণ বুঝতে, সমস্যাগুলি সনাক্ত করতে এবং সমস্যাগুলি কার্যকরভাবে সমাধান করতে সহায়তা করে।
যখন আপনার তৈরি করা সিস্টেমের উপাদানগুলির কথা আসে, তখন আমরা সুপারিশ করি যে আপনি দরকারী লগ স্তরগুলির সেট সংজ্ঞায়িত করার জন্য কিছু সময় ব্যয় করুন৷ প্রতিটি লগ স্তরে বার্তাগুলিতে কী ধরণের তথ্য অন্তর্ভুক্ত করা উচিত তা বুঝুন এবং লগ স্তরগুলি ধারাবাহিকভাবে ব্যবহার করুন৷
পরে, আমরা তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলির সাথে কীভাবে মোকাবিলা করব তা নিয়ে আলোচনা করব, যেখানে লগ লেভেলের উপর আপনার কোন নিয়ন্ত্রণ নেই৷ আমরা সেই লিগ্যাসি অ্যাপ্লিকেশানগুলিও দেখব যেগুলি আপনি নিয়ন্ত্রণ করেন কিন্তু স্ট্যান্ডার্ড লগ লেভেলে স্থানান্তরিত করার জন্য খুবই বিস্তৃত৷
কাঠামোবদ্ধ লগগুলিতে এন্ট্রিগুলির একটি সু-সংজ্ঞায়িত বিন্যাস থাকে, সাধারণত কী-মান জোড়া বা JSON অবজেক্ট হিসাবে। এটি সামঞ্জস্যপূর্ণ এবং মেশিন-পঠনযোগ্য লগ এন্ট্রিগুলির জন্য অনুমতি দেয়, এটি প্রোগ্রামগতভাবে লগ ডেটা পার্স এবং বিশ্লেষণ করা সহজ করে তোলে।
স্ট্রাকচার্ড লগিং অ্যাডভান্সড লগ ক্যোয়ারী এবং বিশ্লেষণকে সক্ষম করে, এটিকে বৃহৎ-স্কেল সিস্টেমে বিশেষভাবে উপযোগী করে তোলে।
অন্যদিকে, অসংগঠিত (ফ্রি-ফর্ম) লগিং পূর্বনির্ধারিত কাঠামো ছাড়াই আরও মানব-পাঠযোগ্য বিন্যাসে বার্তাগুলিকে ক্যাপচার করে। এই পদ্ধতিটি বিকাশকারীদের আরও স্বাভাবিকভাবে এবং নমনীয়ভাবে বার্তাগুলি লগ করার অনুমতি দেয়।
যাইহোক, ফলিত লগগুলি থেকে প্রোগ্রামগতভাবে নির্দিষ্ট তথ্য বের করা খুব চ্যালেঞ্জিং হতে পারে।
কাঠামোবদ্ধ এবং অসংগঠিত লগগুলির মধ্যে নির্বাচন করা আপনার নির্দিষ্ট চাহিদা এবং আপনার সিস্টেমের প্রয়োজনীয়তা এবং সীমাবদ্ধতার উপর নির্ভর করে। আপনি যদি লগ বিশ্লেষণ সরঞ্জামগুলির সাথে উন্নত লগ বিশ্লেষণ বা একীকরণের প্রয়োজন অনুমান করেন তবে কাঠামোগত লগগুলি উল্লেখযোগ্য সুবিধা প্রদান করতে পারে।
যাইহোক, যদি আপনার প্রয়োজন হয় সরলতা এবং পঠনযোগ্যতা, তাহলে অসংগঠিত লগগুলি যথেষ্ট হতে পারে।
কিছু ক্ষেত্রে, একটি হাইব্রিড পদ্ধতিও ব্যবহার করা যেতে পারে, যেখানে আপনি গুরুত্বপূর্ণ ইভেন্টগুলির জন্য কাঠামোবদ্ধ লগ এবং আরও সাধারণ বার্তাগুলির জন্য অসংগঠিত লগ ব্যবহার করেন।
বৃহৎ-স্কেল সিস্টেমের জন্য, সম্ভব হলে আপনার কাঠামোবদ্ধ লগিংয়ের দিকে ঝুঁকতে হবে তবে মনে রাখবেন যে এটি আপনার পরিকল্পনায় অন্য মাত্রা যোগ করে। কাঠামোবদ্ধ লগ বার্তাগুলির জন্য প্রত্যাশা হল যে একই ক্ষেত্রগুলির সেটগুলি সিস্টেমের উপাদানগুলিতে ধারাবাহিকভাবে ব্যবহার করা হবে। এর জন্য প্রয়োজন হবে কৌশলগত পরিকল্পনা।
একাধিক উপাদান সমন্বিত সিস্টেমের সাথে, প্রতিটি উপাদানের লগগুলি পরিচালনা করার জন্য সম্ভবত নিজস্ব মডেল থাকবে। আসুন এটি নিয়ে আসা চ্যালেঞ্জগুলি পর্যালোচনা করি।
উপাদানগুলি বিভিন্ন গন্তব্যে লগ করবে — ফাইল, সিস্টেম লগ, stdout বা stderr। বিতরণ করা সিস্টেমে, কার্যকর ব্যবহারের জন্য এই বিক্ষিপ্ত লগ সংগ্রহ করা কষ্টকর।
এর জন্য, লগ সংগ্রহের জন্য আপনার একটি বৈচিত্র্যময় পদ্ধতির প্রয়োজন হবে, যেমন সুমো লজিক থেকে ইনস্টল করা সংগ্রাহক এবং হোস্ট করা সংগ্রাহক ব্যবহার করা।
কিছু উপাদান অসংগঠিত, ফ্রি-ফর্ম লগিং ব্যবহার করবে, বিশেষ করে কোনো বিন্যাস অনুসরণ করবে না। ইতিমধ্যে, কাঠামোবদ্ধ লগগুলি আরও সংগঠিত হতে পারে, তবে কাঠামোগত লগ সহ উপাদানগুলি সম্পূর্ণ ভিন্ন ক্ষেত্রগুলির সেট নিয়োগ করতে পারে।
লগ এবং ফরম্যাটের বৈচিত্র্য থেকে আপনি যে তথ্য পান তা একত্রিত করার জন্য সঠিক সরঞ্জামের প্রয়োজন।
আপনার সিস্টেমের উপাদানগুলি লগ স্তরের বিভিন্ন পরিসর ব্যবহার করতে পারে। এমনকি যদি আপনি সমস্ত লগ বার্তাগুলিকে কেন্দ্রীভূত লগিং সিস্টেমে একীভূত করেন (যেমন আপনার উচিত), আপনাকে সমস্ত লগ স্তরের মিলনের সাথে মোকাবিলা করতে হবে।
একটি চ্যালেঞ্জ যা দেখা দেয় তা হল যখন বিভিন্ন লগ স্তরের সাথে একই আচরণ করা উচিত। উদাহরণস্বরূপ, একটি কম্পোনেন্টে ERROR অন্য কম্পোনেন্টে CRITICAL এর মতই হতে পারে, যার জন্য তাৎক্ষণিক বৃদ্ধির প্রয়োজন।
আপনি বিপরীত চ্যালেঞ্জের মুখোমুখি হন যখন বিভিন্ন উপাদানে একই লগ লেভেল মানে ভিন্ন জিনিস। উদাহরণস্বরূপ, একটি উপাদানে INFO বার্তাগুলি সিস্টেমের অবস্থা বোঝার জন্য প্রয়োজনীয় হতে পারে, অন্য উপাদানে সেগুলি খুব বেশি শব্দযুক্ত হতে পারে।
বৃহৎ ডিস্ট্রিবিউটেড সিস্টেমে প্রচুর লগ জমা হয়। এই লগগুলি সংগ্রহ করা এবং সংরক্ষণ করা সস্তা নয়। ক্লাউডে লগ-সম্পর্কিত খরচ সিস্টেমের মোট খরচের একটি উল্লেখযোগ্য অংশ তৈরি করতে পারে।
যদিও বৃহৎ, বিতরণ করা সিস্টেমে লগ ইন করার চ্যালেঞ্জগুলি তাৎপর্যপূর্ণ, নিম্নলিখিত কিছু অনুশীলনের মাধ্যমে সমাধান পাওয়া যেতে পারে।
আপনি যখন একটি বিতরণ সিস্টেম চালান, তখন আপনার একটি কেন্দ্রীভূত লগিং সমাধান ব্যবহার করা উচিত। আপনি যখন আপনার সিস্টেমের প্রতিটি মেশিনে লগ সংগ্রহ এজেন্ট চালান, এই সংগ্রাহকরা সমস্ত লগ আপনার কেন্দ্রীয় পর্যবেক্ষণ প্ল্যাটফর্মে পাঠাবে।
সুমো লজিক, যা সবসময় লগ ম্যানেজমেন্ট এবং অ্যানালিটিক্সের উপর ফোকাস করে, যখন লগ অ্যাগ্রিগেশনের কথা আসে তখন ক্লাসে সেরা।
আপনি যদি অ্যানালিটিক্স এবং অ্যাপ্লিকেশান এবং উপাদানগুলি জুড়ে সমস্যা সমাধানের জন্য লগ ডেটা পারস্পরিক সম্পর্ক করতে চান তবে বিভিন্ন ফর্ম্যাটে লগগুলির সাথে ডিল করা একটি বড় সমস্যা৷ একটি সমাধান হল বিভিন্ন লগকে ইউনিফাইড ফরম্যাটে রূপান্তর করা।
এই কাজের জন্য প্রচেষ্টার মাত্রা বেশি হতে পারে, তাই পর্যায়ক্রমে এটি করার কথা বিবেচনা করুন, আপনার সবচেয়ে প্রয়োজনীয় উপাদানগুলি দিয়ে শুরু করে এবং নিচের পথে কাজ করুন।
আপনার নিজের অ্যাপ্লিকেশনের জন্য, একটি স্ট্যান্ডার্ড লগিং পদ্ধতি প্রতিষ্ঠা করার জন্য কাজ করুন যা লগ স্তরগুলির একটি অভিন্ন সেট, একটি একক কাঠামোবদ্ধ লগ বিন্যাস এবং সামঞ্জস্যপূর্ণ শব্দার্থবিদ্যা গ্রহণ করে।
যদি আপনারও উত্তরাধিকারী অ্যাপ্লিকেশন থাকে, তাহলে আপনার মান মেনে চলার জন্য তাদের স্থানান্তরিত করার সাথে সম্পর্কিত ঝুঁকি এবং খরচের মাত্রা মূল্যায়ন করুন।
যদি একটি স্থানান্তর সম্ভব না হয়, তাহলে আপনার উত্তরাধিকারী অ্যাপ্লিকেশনগুলিকে আপনি তৃতীয়-পক্ষের অ্যাপ্লিকেশনগুলির মতো ব্যবহার করুন৷
তৃতীয় পক্ষের উত্স থেকে লগ সমৃদ্ধ করার জন্য বহিরাগত সিস্টেম বা পরিষেবাগুলি থেকে প্রাসঙ্গিক তথ্য সহ লগ ডেটা উন্নত করা জড়িত৷ এটি লগ ইভেন্টগুলির একটি ভাল বোঝার নিয়ে আসে, সমস্যা সমাধান, বিশ্লেষণ এবং পর্যবেক্ষণ কার্যক্রমে সহায়তা করে।
আপনার লগগুলিকে সমৃদ্ধ করতে, আপনি লগ ইভেন্টগুলির (যেমন ব্যবহারকারীর তথ্য, গ্রাহকের বিবরণ, বা সিস্টেম মেট্রিক্স) সম্পর্কিত পরিপূরক ডেটা আনতে বহিরাগত সিস্টেমগুলিকে (যেমন API বা বার্তা সারি) সংহত করতে পারেন৷
লগ ভলিউম, ফ্রিকোয়েন্সি এবং ধারণ যত্ন সহকারে পরিচালনা করা দক্ষ লগ পরিচালনা এবং সঞ্চয়স্থানের জন্য অত্যন্ত গুরুত্বপূর্ণ।
লগ ডেটা বিশ্লেষণ থেকে প্রাপ্ত মেট্রিকগুলি সিস্টেমের আচরণ এবং কর্মক্ষমতা সম্পর্কে অন্তর্দৃষ্টি প্রদান করতে পারে। কাজের লগ-ভিত্তিক মেট্রিক্সের সুবিধা এবং চ্যালেঞ্জ রয়েছে।
অর্থপূর্ণ মেট্রিক্স সংজ্ঞায়িত করা : কারণ আপনার সমস্ত উপাদান জুড়ে আপনার কাছে উপলব্ধ মেট্রিক্সের সেটটি অবিশ্বাস্যভাবে বিস্তৃত—এবং সেগুলিকে ক্যাপচার করা অর্থপূর্ণ নয়—লগগুলি থেকে কোন মেট্রিকগুলি ক্যাপচার এবং বের করতে হবে তা সনাক্ত করা একটি জটিল কাজ হতে পারে৷
এই শনাক্তকরণের জন্য সিস্টেমের আচরণের গভীর বোধগম্যতা এবং আপনার ব্যবসায়িক উদ্দেশ্যগুলির সাথে ঘনিষ্ঠ সারিবদ্ধতা প্রয়োজন।
ডেটা নিষ্কাশন এবং পার্সিং : দরকারী মেট্রিক্স বের করতে লগ পার্স করার জন্য বিশেষ সরঞ্জাম বা কাস্টম পার্সারের প্রয়োজন হতে পারে। এটি বিশেষভাবে সত্য যদি লগগুলি অসংগঠিত হয় বা এক উপাদান থেকে পরবর্তীতে অসঙ্গতভাবে বিন্যাসিত হয়।
এটি সেট আপ করা সময়সাপেক্ষ হতে পারে এবং লগ ফরম্যাট পরিবর্তন বা নতুন লগ উত্স আবির্ভূত হওয়ার সাথে সাথে রক্ষণাবেক্ষণের প্রয়োজন হতে পারে৷
আপনি একটি কেন্দ্রীভূত সিস্টেমে লগ একত্রিতকরণের দিকে অগ্রসর হওয়ার পরে, আপনাকে এখনও দীর্ঘমেয়াদী লগ ধরে রাখার নীতিগুলি বিবেচনা করতে হবে। আসুন এই এলাকার জন্য সমালোচনামূলক প্রশ্নগুলি কভার করি।
আপনার কতক্ষণ লগ রাখা উচিত তা বিভিন্ন কারণের উপর নির্ভর করে, যার মধ্যে রয়েছে:
পুরানো লগ মুছে ফেলা, অবশ্যই, আপনার স্টোরেজ খরচ কমানোর সবচেয়ে সহজ উপায়। যাইহোক, এটি কিছুটা ভারী হতে পারে, এবং আপনি কখনও কখনও চারপাশে পুরানো লগ থেকে তথ্য রাখতে চাইতে পারেন।
আপনি যখন পুরানো লগ থেকে তথ্য রাখতে চান, কিন্তু খরচ-দক্ষ হতে চান, তখন এই ব্যবস্থাগুলির মধ্যে কয়েকটি গ্রহণ করার কথা বিবেচনা করুন:
এই প্রবন্ধে, আমরা বড়-স্কেল সিস্টেমে লগিং করার মাধ্যমে কীভাবে সর্বাধিক সুবিধা পেতে পারি তা দেখেছি।
যদিও এই সিস্টেমগুলিতে লগিং করা চ্যালেঞ্জগুলির একটি অনন্য সেট উপস্থাপন করে, আমরা এই চ্যালেঞ্জগুলির সম্ভাব্য সমাধানগুলি দেখেছি, যেমন লগ একত্রীকরণ, লগগুলিকে একটি ইউনিফাইড ফর্ম্যাটে রূপান্তর করা এবং তৃতীয় পক্ষের উত্স থেকে ডেটা দিয়ে লগগুলিকে সমৃদ্ধ করা৷
লগিং পর্যবেক্ষণযোগ্যতার একটি গুরুত্বপূর্ণ অংশ। এই নিবন্ধে বর্ণিত অনুশীলনগুলি অনুসরণ করে, আপনি নিশ্চিত করতে পারেন যে আপনার লগগুলি কার্যকরভাবে পরিচালিত হয়েছে, আপনাকে সমস্যাগুলি সমাধান করতে, সমস্যাগুলি সনাক্ত করতে এবং আপনার সিস্টেমের আচরণ সম্পর্কে অন্তর্দৃষ্টি অর্জন করতে সক্ষম করে৷
এবং আপনি আপনার লগিং খরচ উপে রেখে এটি করতে পারেন।
এছাড়াও এখানে প্রকাশিত