कभी-कभी मानक इंस्ट्रूमेंटेशन प्रदर्शन समस्या के मूल कारण को ट्रैक करने के लिए पर्याप्त नहीं होता है। कस्टम मेट्रिक्स लापता टुकड़ों को ट्रैक करने में हमारी मदद करते हैं।
AppSignal के प्रदर्शन ग्राफ़ के लिए धन्यवाद हम ठीक से जानते हैं कि हमारे कोडबेस का कौन सा हिस्सा प्रदर्शन समस्याओं का कारण बनता है। नीचे दिए गए स्क्रीनशॉट में आप देख सकते हैं कि MongoDB के कारण हमारे पास एक गंभीर मंदी थी:
यह हमें यह नहीं बताता कि कौन सा अलग-अलग ReplicaSets पर चल रहे कई डेटाबेस में से इस मंदी का कारण बना। हमारे कस्टम मेट्रिक्स प्लेटफ़ॉर्म का उपयोग करके हम इस प्रश्न का उत्तर एक नज़र में दे सकते हैं।
Mongo::Monitoring
नए 2.x Ruby ड्राइवर के साथ, mongo जेम एक मॉनिटरिंग API उजागर करता है। हम इसका उपयोग डेटाबेस को भेजे गए हर क्वेरी को ट्रैक करने के लिए करते हैं।
यहां एक सब्सक्राइबर क्लास है जो तीन आवश्यक विधियों (started, succeeded और failed) को लागू करती है और डेटा को AppSignal पर भेजती है:
# 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
)
कस्टम मेट्रिक्स डैशबोर्ड
अब जब हम इन मेट्रिक्स को 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 को भेजे गए किसी भी क्वेरी अवधि से मेल खाता है।
परिणाम
अब हम व्यक्तिगत क्वेरी काउंट/अवधि को ट्रैक करते हैं और एक डैशबोर्ड मौजूद है, और हम देख सकते हैं कि हमारे प्रदर्शन ग्राफ़ में स्पाइक का कारण कौन सा डेटाबेस था:
यह कई उदाहरणों में से एक है जहां कस्टम मेट्रिक्स का उपयोग हमारे (और आपके!) एप्लिकेशन के समग्र प्रदर्शन में अधिक अंतर्दृष्टि प्राप्त करने में मदद करता है।
यदि आप कस्टम मेट्रिक्स को आज़माना चाहते हैं, या मूल्यवान मेट्रिक्स की पहचान और ट्रैकिंग में सहायता की आवश्यकता है, तो बस हमें बताएं।