Spring Boot में मॉनिटरिंग
एक प्रोडक्शन एप्लिकेशन को केवल चलना ही नहीं चाहिए। इसे ऑब्जर्वेबल (observable) होना चाहिए और विफल होने पर इसे ठीक करना आसान होना चाहिए। आपको हेल्थ चेक, मेट्रिक्स, लॉग्स और घटनाओं (incidents) को संभालने के लिए स्पष्ट प्रक्रियाओं की आवश्यकता होती है।
Spring Boot इन सुविधाओं को प्रदान करने के लिए Actuator का उपयोग करता है। Actuator आपको health, metrics और info जैसे एंडपॉइंट्स देता है। आप इन्हें HTTP या JMX के माध्यम से एक्सपोज़ कर सकते हैं।
मॉनिटर करने के मुख्य क्षेत्र:
• उपलब्धता (Availability): अपटाइम (uptime), रेडीनेस (readiness) और लाइवनेस (liveness) की जाँच करें। • प्रदर्शन (Performance): रिस्पॉन्स टाइम, लेटेंसी और थ्रूपुट को ट्रैक करें। • त्रुटियाँ (Errors): HTTP 4xx/5xx त्रुटियों और विफल संदेशों पर नज़र रखें। • JVM: हीप (heap), मेमोरी, CPU और थ्रेड्स की निगरानी करें। • डेटाबेस (Database): कनेक्शन पूल और स्लो क्वेरीज़ को ट्रैक करें। • Kafka: कंज्यूमर लैग (consumer lag) और रिट्राय रेट्स की निगरानी करें।
मेट्रिक्स कलेक्शन (Metrics Collection)
Spring Boot मेट्रिक्स एकत्र करने के लिए Micrometer का उपयोग करता है। आप इन मेट्रिक्स को एक्सपोज़ करने के लिए Prometheus रजिस्ट्री का उपयोग कर सकते हैं। एक सामान्य सेटअप में शामिल है:
Spring Boot App → Prometheus → Grafana
यह आपको डैशबोर्ड पर एप्लिकेशन डेटा को विज़ुअलाइज़ करने की अनुमति देता है।
लॉगिंग के सर्वोत्तम अभ्यास (Logging Best Practices)
लॉग्स आपको यह समझने में मदद करते हैं कि विफलता के दौरान क्या हुआ था। लॉग्स को मशीन-रीडेबल बनाने के लिए प्रोडक्शन में स्ट्रक्चर्ड JSON लॉगिंग का उपयोग करें।
क्या करें:
- orderId या customerId जैसे बिजनेस आईडी लॉग करें।
- एक ही रिक्वेस्ट के लॉग्स को जोड़ने के लिए कोरिलेशन आईडी (correlation IDs) का उपयोग करें।
- एक्सेप्शन्स (exceptions) के लिए स्टैक ट्रेसेस (stack traces) शामिल करें।
- स्ट्रक्चर्ड लॉग्स का उपयोग करें।
क्या न करें:
- पासवर्ड, टोकन या व्यक्तिगत डेटा लॉग न करें।
- लूप के अंदर बहुत अधिक डेटा लॉग न करें।
- System.out.println का उपयोग न करें।
- खाली catch ब्लॉक्स के साथ त्रुटियों को न छिपाएं।
ऑपरेशनल स्टेबिलिटी (Operational Stability)
ऑपरेशनल सपोर्ट का अर्थ है डिप्लॉय करने के बाद सर्विस को स्थिर रखना। आपको इन पर ध्यान देना चाहिए:
- समस्याओं की जांच करने के लिए इंसिडेंट सपोर्ट।
- समस्याओं को जल्दी पकड़ने के लिए डैशबोर्ड और अलर्ट।
- रिकवरी स्टेप्स के मार्गदर्शन के लिए रनबुक्स (Runbooks)।
- विफल रिलीज़ के लिए रोलबैक रणनीतियाँ (Rollback strategies)।
एक मजबूत Spring Boot सर्विस को मॉनिटर करना, डिबग करना और रिकवर करना आसान होता है।
Source: https://dev.to/antonio_casado_1fe39cd90e/monitoring-in-spring-boot-1220