বিতরণকৃত কাজের জন্য একটি ভাল লগিং অনুশীলন কি?


14

আমার নিম্নলিখিত সেটিংস রয়েছে:

একাধিক কর্মী তৈরি করুন, একটি গণনা করুন এবং গণনা শেষ হওয়ার পরে তাদের সমাপ্ত করুন।

সুতরাং, প্রতিটি সময় এটি টাস্কটি চালানোর জন্য পৃথক উদাহরণ হবে, সুতরাং প্রতিটি হোস্টের নিজস্ব একটি লগ ফাইল থাকবে, এটি ফাইলগুলির একটি বিশাল তালিকা তৈরি করবে।

এটি কি একটি ভাল অনুশীলন? যদি তা না হয় তবে এই বিশেষ ব্যবহারের ক্ষেত্রে টাস্ক প্রসেসিং লগিনের জন্য এর চেয়ে ভাল উপায় কী হতে পারে?

PS: আমার অবকাঠামো সার্ভারহীন। সুতরাং, আপাতত, আমি (AWS) ক্লাউডওয়াচে লগইন করছি। তবে, দয়া করে এডাব্লুএস-এর স্বাধীনভাবে প্রশ্নের উত্তর দিন এবং যতটা সম্ভব সার্ভারলেস সেটআপের জন্য মামলা করুন।

উত্তর:


12

"সার্ভারলেস" এর বেশিরভাগ অর্থ হ'ল আপনি তুলনামূলকভাবে সহজ মাইক্রোসার্ভেসেস পেয়েছেন, সাধারণত কেবলমাত্র একটি সামান্য ওয়েবআপ বা একটি একক ফাংশন যা স্বয়ংক্রিয়ভাবে একটি আরআরএস ফ্রন্ট্যান্ডের সাথে সংযুক্ত থাকে। আপনি আরও বেশি traditionalতিহ্যবাহী ওয়েব পরিষেবার জন্য যেমন ব্যবহার করেন ঠিক একই ধারণাগুলি প্রয়োগ হয়: সাধারণত দূরবর্তী সিসলগ এবং ইলাস্টিক অনুসন্ধান লেখকদের কিছুটা মিশ্রণ।

নেটওয়ার্কযুক্ত বা দূরবর্তী সিসলগ দীর্ঘকাল ধরে রয়েছে এবং এর চারপাশে মোটামুটি শক্তিশালী সরঞ্জাম রয়েছে। আপনাকে কেন্দ্রীয় সিসলগ সার্ভার চালাতে হবে তবে প্রোটোকলটি খুব সহজ এবং প্রতিটি ভাষায় খাঁটি ক্লায়েন্ট লাইব্রেরি রয়েছে যা আপনি লগ প্রেরণের জন্য ব্যবহার করতে পারেন। রিমোট সিসলগের একটি সাধারণ সমস্যা হ'ল এটি ইউডিপির চারপাশে প্রচলিত। এর অর্থ হ'ল ভারী বোঝার নীচে কিছু লগ বার্তা হারিয়ে যেতে পারে। এটি একটি ভাল জিনিস হতে পারে, একটি ক্যাসকেড ওভারলোড এড়াতে সহায়তা করে তবে এটি সচেতন হওয়ার মতো বিষয়। কিছু নতুন সিসলোগ ডেমন একটি টিসিপি-ভিত্তিক প্রোটোকলকে সমর্থন করে তবে ক্লায়েন্ট সমর্থনটি কম ইউনিফাইড হয় তাই কেবল আপনার গবেষণাটি করুন।

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

আরও জটিল লগিং টপোলজিগুলি কেবল আপনার কল্পনার দ্বারা আবদ্ধ, যদিও এই দিনগুলিতে আপনি কাফকা ডাটাবেস / কাতারে / আপনি যে কল-কল করতে চান-এটি কল করতে খুব জটিল লগ বিতরণ সিস্টেমে নেক্সাস পয়েন্ট হিসাবে ব্যবহার করবেন ।

"সার্ভারলেস" সাইডে আপনি সাধারণত এই সিস্টেমগুলির সাথে সরাসরি নেটওয়ার্ক পর্যায়ে সংহত করতে চান, সুতরাং স্থানীয় ফাইলগুলিতে লেখার পরিবর্তে আপনার সার্ভিস / ফাংশন থেকে সরাসরি সিসলগ বা ইএস-তে লগ ডেটা প্রেরণ করা (যদিও সম্ভবত এটিগুলির প্রতিধ্বনি স্থানীয় ডিবাগিং এবং উন্নয়নের জন্যও)।


6

এই উত্তরটি স্কেলিবিলিটি বিবেচনার বিষয়ে আরও - যদি শ্রমিকের সংখ্যা বেশি হতে পারে এবং / অথবা তাদের মধ্যে একাধিক একই সময়ে উচ্চ হারে লগ তৈরি করতে পারে।

হ্যাঁ, একসাথে একাধিক লগফাইল ব্যবহার করা একটি ভাল অনুশীলন।

রিয়েল টাইমে একাধিক শ্রমিকের একক লগফিল লগের সাথে একত্রিত করার চেষ্টা করলে সমস্যা উত্থাপিত হবে:

  • বার্তা হ্রাস রোধ করতে ব্লকিং মেকানিম ব্যবহার করা শ্রমিকদের ধীর করে দেবে
  • সংযুক্ত লগফাইলে লগ বার্তাগুলি অ-অফ-অর্ডার প্রদর্শিত হতে পারে
  • একটি কেন্দ্রীভূত লগিং সুবিধা যা লগগুলিকে একত্রিত করে সীমিত লেখার গতির কারণে ওভারলোড হতে পারে, বার্তাগুলি হারিয়ে যাবে

লগফাইলগুলি ভাগ করে নেওয়া (একই সময়ে একাধিক লগফিলগুলি সক্রিয় করা) এটি কিছু হোস্টিং সরবরাহকারী উচ্চ কার্যকারিতা, স্কেলযোগ্য কেন্দ্রীভূত লগিং পরিষেবাদি সরবরাহ করে by উদাহরণস্বরূপ, ফাইলগুলিতে লগ রফতানি করার সময় গুগলের স্ট্যাকড্রাইভার লগিং একাধিক শারডযুক্ত লগফাইলগুলি তৈরি করে। গুগল ক্লাউড স্টোরেজে লগ এন্ট্রি থেকে :

আপনি যখন ক্লাউড স্টোরেজ বালতিতে লগগুলি রফতানি করেন , স্ট্যাকড্রাইভার লগিং বালতিতে ফাইলগুলির একটি সেট লেখেন। ফাইলগুলি লগের ধরণ এবং তারিখ অনুসারে ডিরেক্টরি শ্রেণিবিন্যাসে সংগঠিত হয়। লগের প্রকারের মতো সাধারণ নাম syslogবা যৌগিক নাম হতে পারে appengine.googleapis.com/request_log। যদি এই লগগুলি নামের বালতিতে সংরক্ষণ করা হত my-gcs-bucket, তবে ডিরেক্টরিগুলি নিম্নলিখিত উদাহরণ হিসাবে নামকরণ করা হবে:

my-gcs-bucket/syslog/YYYY/MM/DD/
my-gcs-bucket/appengine.googleapis.com/request_log/YYYY/MM/DD/

একক বালতিতে একাধিক লগের লগ থাকতে পারে।

পাতার ডিরেক্টরিতে ( DD/) একাধিক ফাইল ধারণ করে যার মধ্যে প্রতিটি ফাইলের নামের ক্ষেত্রে নির্দিষ্ট সময়ের জন্য রফতানি লগ এন্ট্রি ধারণ করে। ফাইলগুলি তীক্ষ্ণ হয় এবং তাদের নামগুলি একটি ধারালো সংখ্যায় শেষ হয়, Snবা An(এন = 0, 1, 2, ...)। উদাহরণস্বরূপ, এখানে দুটি ফাইল যা এর মধ্যে সংরক্ষণ করা যেতে পারে directory my-gcs-bucket/syslog/2015/01/13/:

08:00:00_08:59:59_S0.json
08:00:00_08:59:59_S1.json

এই দুটি ফাইল একসাথে syslog0800 ইউটিসি শুরু হওয়ার সময়কালে সমস্ত দৃষ্টান্তের জন্য লগ এন্ট্রি ধারণ করে । সমস্ত লগ এন্ট্রি পেতে আপনার অবশ্যই প্রতিটি সময়ের জন্য সমস্ত শারড পড়তে হবে this এক্ষেত্রে ফাইল শারড 0 এবং 1 লিখিত ফাইল শর্টের সংখ্যা লগ এন্ট্রিগুলির পরিমাণের উপর নির্ভর করে প্রতি সময়ের জন্য পরিবর্তিত হতে পারে।

এই জাতীয় উচ্চ-কার্য সম্পাদন লগিং পরিষেবাগুলি ফাইলগুলিতে লগিংয়ের বিকল্পও দিতে পারে, লগফায়ালগুলির পরিচালনা এইভাবে আগ্রহী হলে পুরোপুরি এড়ানো যায়:

শেষ অবধি - যদি রিয়েল-টাইম লগফিল মার্জ করার প্রয়োজন না হয় তবে একাধিক লগফাইলে অফলাইন লগ পরিচালনার ক্ষেত্রে সহায়তা করতে পারে:

  • প্রগতিশীল লগ ব্যাকআপ, সংক্ষেপণ, সংরক্ষণাগার এবং পরিণামে নিষ্পত্তি করার পরিকল্পনা তৈরি করা সহজ
  • একাধিক লগের লগ (লগফাইলস) এর সমান্তরাল প্রক্রিয়াকরণ সম্ভব, এতে বাধা বিপত্তিগুলি হ্রাস / এড়ানো
  • কোনও ফাইল বিভাজন এবং পুনরায় লেখার প্রয়োজন নেই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.