ইভেন্ট লগ মেট্রিকগুলির জন্য ডেটা আর্কিটেকচার?


17

আমার পরিষেবাটিতে প্রচুর চলমান ব্যবহারকারীর ইভেন্ট রয়েছে এবং আমরা " তারিখ ডি থেকে ইভেন্ট টাইপের টি সংখ্যার গণনা" এর মতো কাজ করতে চাই ।

আমরা দুটি মূল সিদ্ধান্ত নেওয়ার চেষ্টা করছি:

  1. কি সঞ্চয় করতে হবে? প্রতিটি ইভেন্ট বনাম বনাম কেবল সঞ্চয় করে St

    • (ইভেন্ট লগ শৈলী) প্রতিটি ইভেন্ট লগ এবং তাদের গণনা পরে, বনাম।
    • (টাইম-সিরিজ শৈলী) একটা একক সমষ্টিগত হয়েছে "এই ইভেন্টের গণনা সংরক্ষণ তারিখ জন্য ডি প্রতিদিন-এর জন্য"
  2. কোথায় তথ্য সংরক্ষণ করতে হবে

    • একটি সম্পর্কিত সম্পর্কিত ডাটাবেসে (বিশেষত মাইএসকিউএল)
    • একটি সম্পর্কহীন (NoSQL) ডাটাবেসে
    • ফ্ল্যাট লগ ফাইলগুলিতে (নেটওয়ার্কের মাধ্যমে কেন্দ্রীয়ভাবে সংগ্রহ করা syslog-ng)

স্ট্যান্ডার্ড অনুশীলন কী / আমি বিভিন্ন ধরণের সিস্টেমে তুলনা করার বিষয়ে আরও কোথায় পড়তে পারি?


অতিরিক্ত তথ্য:

  • মোট ইভেন্ট স্ট্রিমটি বৃহত, সম্ভাব্য প্রতিদিন কয়েকশো হাজার এন্ট্রি
  • তবে আমাদের বর্তমান প্রয়োজনটি কেবল এর মধ্যে নির্দিষ্ট ধরণের ইভেন্টগুলি গণনা করা
  • আমাদের অগত্যা কাঁচা ডেটা বা সমষ্টিগত ফলাফলের রিয়েল-টাইম অ্যাক্সেসের প্রয়োজন নেই

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


1
এই প্রকল্পে কোন ভাগ্য?
হাইওয়েলন

2
@ হাইওলন আমরা একটি হাইব্রিড সিস্টেমটি ব্যবহার করে শেষ করেছি: 1) মাইএসকিউএল যেখানে সম্ভব (কম ভলিউম) ( SELECT...GROUP BYসহজেই ব্যবহারের সমষ্টি সহজতর করে , এর ফলাফলগুলি সহজেই সংরক্ষণ করতে পারে SELECT), ২) সাধারণ বড় আকারের সমষ্টি এবং ভিজ্যুয়ালাইজেশনের জন্য গ্রাফাইট ব্যবহার করে এবং 3) রেফারেন্সের জন্য এবং বাস্তব সময়ে ডেটা প্রবাহের বিশদটি দেখার জন্য সম্পূর্ণ ইভেন্টগুলিতে লগইন করা। প্রতিটি আসলে বিভিন্ন উপায়ে মূল্যবান হয়েছে।
ইলিয়ট 42

এটি দুর্দান্ত সমাধান হিসাবে শোনাচ্ছে, আমরা যা করছি তার সাথে বেশ মিল similar
হাইওলন

1
এক বছরেরও বেশি সময় পরে আপডেট হ'ল আমরা এমন একটি সিস্টেম তৈরি করেছি যা সমস্ত কিছু লগ করে, এবং পর্যায়ক্রমে লগগুলি গণনা করে জিনিসগুলি পুনরুক্ত করে তোলে এবং তারপরে সেই গণনা করা সংখ্যাগুলি একটি ডাটাবেসে সঞ্চিত করে (মাইএসকিউএল যথেষ্ট ছিল) তবে মাইএসকিউএল যথেষ্ট ছিল)। এটি কয়েক সপ্তাহের কাজ ছিল তবে অবাক হওয়ার মতো শক্তিশালী / দ্রুত পদ্ধতির অবসান ঘটে - লগড জেএসওএন দিয়ে যখন কেবল আপনার কোডটি পুনরাবৃত্তি হয়, তখন প্রচুর মেটাডেটা যুক্ত করা সহজ এবং ঠিক আপনার কোডটির জন্য নমনীয় নিয়মগুলি কী ঠিক তার জন্য সহজ? এটি গণনা করতে চায়
ইলিয়ট 42

1
আপডেট 2016: কাফকা এই দিনগুলিতে কমপক্ষে কাঁচা স্টোরেজের জন্য এই ধরণের জিনিসগুলি করতে পারে। তারপরে আপনি যদি সেগুলি সম্পর্কে জিজ্ঞাসা / সমষ্টি করতে চান তবে আপনি এগুলিকে একটি বড় ম্যাপ্রেডস বা স্পার্ক জব বা ভার্টিকার মতো বড় গুদামে আটকে রাখতে পারেন।
ইলিয়ট 42

উত্তর:


4

এটি সর্বদা নির্ভর করে, আমি আপনাকে নতুন দৃষ্টিকোণ দেওয়ার জন্য আমার পরামর্শ দেব

কি সঞ্চয় করতে হবে? প্রতিটি ইভেন্ট বনাম কেবলমাত্র সংগ্রহগুলি সঞ্চয় করে

(ইভেন্ট লগ শৈলী) প্রতিটি ইভেন্ট লগ এবং তাদের গণনা পরে, বনাম।

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

(টাইম-সিরিজ শৈলী) প্রতিদিনের জন্য একক সমষ্টিযুক্ত "ইভেন্টের তারিখ ডি এর গণনা" সঞ্চয় করে

আপনি যদি আগামীকাল এটি বাস্তবায়ন করতে এবং ব্যবহার করতে চান তবে এটি কাজ করতে পারে তবে তারপরে যদি আপনার কোনও নতুন প্রয়োজনীয়তা থাকে বা অন্য কোনও ইভেন্টের সাথে আপনার কোনও সম্পর্ক রয়েছে যা আপনি কোনও কারণে বাদ দিয়েছেন, তবে আপনাকে এই নতুন ইভেন্টটি যুক্ত করতে হবে এবং তারপরে কিছু অপেক্ষা করতে হবে সুন্দর সমাহার স্তর পেতে দীর্ঘ সময়

কোথায় তথ্য সংরক্ষণ করতে হবে

একটি সম্পর্কিত সম্পর্কিত ডাটাবেসে (বিশেষত মাইএসকিউএল)

আপনি যদি সমস্ত ইভেন্টের রেকর্ডিং করতে যান তবে প্রথম বিকল্পটি ডিবির পক্ষে ভারী হতে পারে, তাই মাইএসকিউএল খুব ভয়ঙ্কর হয়ে উঠতে ভয় পাচ্ছে এবং আপনি আরডিবিএমএস সমাধানের জন্য যেতে চাইলে পোস্টগ্র্রেএসকিউএল বা ওরাকল বা ডিবি 2 এর মতো মালিকানাধীন বলে মনে করতে পারেন ।

তবে সংগ্রহের জন্য একটি ভাল পছন্দ হবে, উত্পন্ন লোডের উপর নির্ভর করে আপনি কোডে একত্রিত করতে পারেন এবং ডিগ্রির মধ্যে agg জমাগুলি সন্নিবেশ করতে পারেন।

একটি সম্পর্কহীন (NoSQL) ডাটাবেসে

আপনি যদি এই সমাধানের জন্য যান তবে আপনাকে দেখতে হবে যে আপনি উইকিপিডিয়ায় ভাল পঠন অনুসরণ করতে চান সেই পদ্ধতিটি আপনাকে সহায়তা করতে পারে, আমি সেই বিষয়ে আপনাকে বেশি সাহায্য করতে পারি না কারণ আমার কেবল যথেষ্ট অভিজ্ঞতা নেই, আমি বেশিরভাগই rdbms ব্যবহার করি।

ফ্ল্যাট লগ ফাইলগুলিতে (সিজলগ-এনজি মাধ্যমে নেটওয়ার্কের উপর কেন্দ্রীয়ভাবে সংগ্রহ করা)

আমি ব্যক্তিগতভাবে আপনাকে এই বিকল্পটিতে যেতে নিরুৎসাহিত করব, যদি ফাইলটি খুব বেশি বৃদ্ধি পায় তবে পার্স করা আরও কঠিন হবে, তবে এখনও আমি মূল উদ্দেশ্যটি জানি না, কোনও সিস্টেমে অনুসরণ করা বা কেবল লগ পরীক্ষা করা ফাইল ...

আশা করি এটা সাহায্য করবে!


1
লগ ফাইলগুলি আকার বা দৈর্ঘ্যে ঘোরানো উচিত। আমি মনে করি না যে শেষ উদ্বেগটি তখন একটি সমস্যা হবে।
হাইওলন

1

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

আপনার প্রশ্নের "মন্তব্যে উত্তর" সরানোর বিষয়ে @ থরবজর্ন রাভন অ্যান্ডারসনের সাথেও সম্মত হন।


1

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

যদি আপনি সময় এবং স্থান পেয়ে থাকেন তবে আমি সাধারণত যা করতে চাই তা হ'ল ডেটা সামগ্রিক, তবে বিশদটি কোনও (সংকুচিত) ফাইলে সংরক্ষণ করুন। বিশদগুলি সহজেই অ্যাক্সেসযোগ্য হবে না, যেহেতু আমার প্রায়শই তাদের প্রয়োজন হয় না, তবে শ্রেণিবদ্ধকরণের মানদণ্ড পরিবর্তিত হলে তারা বাল্ক পুনরায় প্রক্রিয়াজাতকরণের জন্য উপলব্ধ।


"ডেটা একত্রিত করুন, তবে বিশদটি একটি (সংকুচিত) ফাইলে সংরক্ষণ করুন"। বিশেষত দুর্দান্ত চিন্তা, ধন্যবাদ!
elliot42

ওপিতে উল্লিখিত লগিংয়ের পরিমাণ এবং ফিল্টারিং + এগুলি সংঘটিত হওয়ার সাথে সাথে সমষ্টি করে নিয়ে কি উদ্বেগ রয়েছে? দেখে মনে হচ্ছে লগের পরিমাণ বেশি এবং / বা সমষ্টি অ-তুচ্ছ হলে এটি বিপজ্জনক বাধা হতে পারে।
হাইওয়েলন

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

1

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

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

আরেকটি বিষয় বিবেচনা করার বিষয় হ'ল আপনি যখন সরঞ্জামটির মাধ্যমে প্রাপ্ত ফলাফলগুলি ব্যবহার শুরু করবেন, আপনি আরও বেশি তথ্যের জন্য এবং আরও বিশদ বিশদটির জন্য আপনার পরিচালনার পক্ষ থেকে অনেকগুলি অনুরোধ পাওয়া শুরু করবেন। সুতরাং ... এটি সাবধানে ব্যবহার করুন এবং দিগন্তে আপনার দৃশ্যের সাথে পরিকল্পনা করুন। এটি আপনাকে আরও কাজ দিতে পারে, তবে অবশ্যই আপনি প্রচুর সমর্থন এবং দৃশ্যমানতা পেতে পারেন (প্যাকেজে চাপ আসে) ....

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