কখনও কখনও স্ট্যান্ডার্ড ইন্সট্রুমেন্টেশন পারফরম্যান্স সমস্যার মূল কারণ ট্র্যাক করার জন্য যথেষ্ট নয়। কাস্টম মেট্রিক্স আমাদের অনুপস্থিত টুকরা ট্র্যাক করতে সাহায্য করে৷
AppSignal এর পারফরম্যান্স গ্রাফের জন্য ধন্যবাদ আমরা জানি যে আমাদের কোডবেসের কোন অংশে কার্যক্ষমতার সমস্যা হয়। নীচের স্ক্রিনশটটিতে আপনি দেখতে পাচ্ছেন যে MongoDB এর কারণে আমাদের একটি গুরুতর মন্দা ছিল:
এটি আমাদের যা বলে না তা হল যা বিভিন্ন রেপ্লিকাসেটে চলমান অসংখ্য ডাটাবেসের মধ্যে এই মন্দার কারণ। আমাদের কাস্টম মেট্রিক্স প্ল্যাটফর্ম ব্যবহার করে আমরা এক নজরে এই প্রশ্নের উত্তর দিতে পারি।
মঙ্গো::মনিটরিং
নতুন 2.x রুবি ড্রাইভারের সাথে, mongo
মণি একটি পর্যবেক্ষণ API প্রকাশ করে। ডাটাবেসে পাঠানো প্রতিটি প্রশ্ন ট্র্যাক করতে আমরা এটি ব্যবহার করি।
এখানে একটি সাবস্ক্রাইবার ক্লাস রয়েছে যা তিনটি প্রয়োজনীয় পদ্ধতি প্রয়োগ করে (শুরু, সফল এবং ব্যর্থ) এবং অ্যাপসিগন্যালে ডেটা পাঠায়:
# 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
# Subscribe to all COMMAND queries with our subscriber class
Mongo::Monitoring::Global.subscribe(
Mongo::Monitoring::COMMAND,
MongoComandSubscriber.new
)
কাস্টম মেট্রিক্স ড্যাশবোর্ড
এখন যেহেতু আমরা এই মেট্রিকগুলি AppSignal-এ পাঠাচ্ছি, আমাদের মেট্রিকগুলি কল্পনা করার জন্য একটি ড্যাশবোর্ড তৈরি করতে হবে৷ আসুন দুটি গ্রাফ তৈরি করি, একটি ক্যোয়ারী গণনার জন্য এবং একটি গড় ক্যোয়ারী সময়কালের জন্য:
- 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
ব্যবহার করি আমরা AppSignal-এ পাঠানো যেকোনো প্রশ্নের সময়কালের সাথে মেলে এমন একটি Regex প্রদানের চাবি।
ফলাফল
এখন আমরা পৃথক ক্যোয়ারী গণনা/সময়কাল ট্র্যাক করি এবং একটি ড্যাশবোর্ড আছে এবং দেখতে পারি কোন ডাটাবেস আমাদের কর্মক্ষমতা গ্রাফে স্পাইক করেছে:
এটি এমন অনেক উদাহরণের মধ্যে একটি যেখানে কাস্টম মেট্রিক্স ব্যবহার করা আমাদের (এবং আপনার!) অ্যাপ্লিকেশনের সামগ্রিক কর্মক্ষমতা সম্পর্কে আরও অন্তর্দৃষ্টি অর্জন করতে সহায়তা করে৷
আপনি যদি কাস্টম মেট্রিক্স ব্যবহার করে দেখতে চান, বা মূল্যবান মেট্রিকগুলি সনাক্ত করতে এবং ট্র্যাক করার জন্য সাহায্যের প্রয়োজন হয় তবে আমাদের জানান৷