কম্পিউটার টিউটোরিয়াল

মongodb কোয়েরি লোড ট্র্যাক করুন কাস্টম মেট্রিক্স দিয়ে সুনির্দিষ্ট পারফরম্যান্স ইনসাইট পাওয়ার জন্য

কখনো কখনো স্ট্যান্ডার্ড ইন্সট্রুমেন্টেশন পারফরম্যান্স সমস্যার মূল কারণ ট্র্যাক করার জন্য পর্যাপ্ত নয়। কাস্টম মেট্রিক্স আমাদের অনুপস্থিত টুকরো ট্র্যাক করতে সাহায্য করে।

অ্যাপসিগন্যালের পারফরম্যান্স গ্রাফের فضلেই আমরা জানি আমাদের কোডবেসের কোন অংশ পারফরম্যান্স সমস্যা সৃষ্টি করছে। নিচের স্ক্রিনশটে দেখা যাচ্ছে MongoDB-এর কারণে আমাদের একটি ভয়ংকর স্লোডাউন হয়েছিল:

এটি কিন্তু আমাদের নয় বলে যে কোন ডাটাবেস যা আলাদা আলাদা রিপ্লিকাসেটে চলছে সেটি এই স্লোডাউনের কারণ। আমাদের কাস্টম মেট্রিক্স প্ল্যাটফর্ম ব্যবহার করে আমরা এক নজরে এই প্রশ্নের উত্তর পেতে পারি।

Mongo::Monitoring

নতুন ২.এক্স রুবি ড্রাইভারের সাথে, mongo জেম একটি মনিটরিং API এক্সপোজ করে। আমরা এটি ব্যবহার করে ডাটাবেসে পাঠানো প্রতিটি কোয়েরি ট্র্যাক করি।

নিচে একটি সাবস্ক্রাইবার ক্লাস দেওয়া আছে যা তিনটি আবশ্যক মেথড (started, succeeded এবং failed) ইমপ্লিমেন্ট করে এবং ডেটা অ্যাপসিগন্যালে পাঠায়:

# config/initializers/mongo_command_subscriber.rb class MongoComandSubscriber VALID_DATABASES = Mongoid.clients.map { |k,v| v['database']} def started(event) end def failed(event) finished(event) end def succeeded(event) finished(event) end def finished(event) database = event.database_name duration = event.duration return unless VALID_DATABASES.include?(database) Appsignal.increment_counter("query_count.#{database}", 1) Appsignal.add_distribution_value("query_duration.#{database}", duration) end end # আমাদের সাবস্ক্রাইবার ক্লাস দিয়ে সব COMMAND কোয়েরি সাবস্ক্রাইব করুন Mongo::Monitoring::Global.subscribe( Mongo::Monitoring::COMMAND, MongoComandSubscriber.new )

কাস্টম মেট্রিক্স ড্যাশবোর্ড

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

- title: "MongoDB Query Load" graphs: - title: "Database Query count" kind: count filter: "query_count/*" format: number - title: "Database average query duration" kind: measurement filter: "query_duration/*" format: duration

আমরা filter কী ব্যবহার করে একটি Regex দিচ্ছি যা অ্যাপসিগন্যালে পাঠানো যেকোনো কোয়েরি ডিউরেশনকে ম্যাচ করবে।

ফলাফল

এখন আমরা প্রতিটি ডাটাবেসের কোয়েরি কাউন্ট/ডিউরেশন ট্র্যাক করছি এবং একটি ড্যাশবোর্ড তৈরি করেছি, ফলে আমরা পারফরম্যান্স গ্রাফে কোন ডাটাবেস স্পাইক তৈরি করেছে সেটি দেখতে পাচ্ছি:

এটি কাস্টম মেট্রিক্স কীভাবে সমগ্র অ্যাপ্লিকেশন পারফরম্যান্সে গভীর ইনসাইট পেতে সাহায্য করে তার এক উদাহরণ মাত্র।

আপনি যদি কাস্টম মেট্রিক্স ট্রাই করতে চান, বা বয়বাচ্ছে মেট্রিক্স আইডেন্টিফাই ও ট্র্যাক করার সাহায্য দরকার হয়, তবে আমাদের জানান।


  1. MongoDB-এ কমা-সহ স্ট্রিংকে ডাবল (Double) নম্বরে রূপান্তর করা

  2. MongoDB-এ OR শর্ত দিয়ে একাধিক ডকুমেন্ট ফেচ করা

  3. MongoDB-তে LIMIT ব্যবহার করে কোয়ারি করার পদ্ধতি

  4. MongoDB-তে কেস-ইনসেনসিটিভ (Case-Insensitive) সার্চ করা ($regex)