परिचय: जावा अनुप्रयोगों की निगरानी क्यों आवश्यक है
\nआधुनिक जावा एप्लिकेशन एक जटिल वितरित प्रणाली है। निगरानी के बिना, आप आँख बंद करके काम कर रहे हैं: प्रतिक्रिया की गति में गिरावट, मेमोरी लीक या अचानक OutOfMemoryError उपयोगकर्ता की शिकायत तक किसी का ध्यान नहीं जा सकता है। मेट्रिक्स और अलर्ट की उचित रूप से कॉन्फ़िगर की गई निगरानी न केवल घटनाओं पर तुरंत प्रतिक्रिया करने की अनुमति देती है, बल्कि गंभीर होने से पहले बाधाओं की भविष्यवाणी भी करती है।
\nइस लेख में, हम पूरे चक्र को कवर करेंगे: बुनियादी JVM मेट्रिक्स के संग्रह से लेकर Prometheus में अलर्ट कॉन्फ़िगर करने और Grafana में विज़ुअलाइज़ेशन तक। सभी कोड उदाहरण लोकप्रिय Micrometer लाइब्रेरी का उपयोग करके Java में लिखे गए हैं।
\n\n1. जावा एप्लिकेशन की प्रमुख मेट्रिक्स
\nनिगरानी सही मेट्रिक्स चुनने से शुरू होती है। उन्हें तीन समूहों में विभाजित किया जा सकता है: JVM मेट्रिक्स, व्यावसायिक मेट्रिक्स और बुनियादी ढाँचा मेट्रिक्स।
\n\n1.1. JVM मेट्रिक्स
\nये मेट्रिक्स जावा वर्चुअल मशीन की स्थिति दर्शाती हैं। सबसे महत्वपूर्ण हैं:
\n- \n
- Heap memory usage — हीप का उपयोग (उपयोग की गई / अधिकतम मेमोरी)। तेज वृद्धि लीक का संकेत दे सकती है। \n
- GC pauses — कचरा संग्रह की आवृत्ति और अवधि। लंबे विराम (1 सेकंड से अधिक) समस्याओं का संकेत हैं। \n
- Thread states — RUNNABLE, BLOCKED, WAITING अवस्थाओं में थ्रेड्स की संख्या। अधिक BLOCKED का मतलब संभावित लॉकिंग है। \n
- CPU usage — JVM प्रक्रिया द्वारा प्रोसेसर लोड। \n
1.2. व्यावसायिक मेट्रिक्स
\nये आपके एप्लिकेशन के तर्क को दर्शाती हैं। उदाहरण:
\n- \n
- प्रति मिनट संसाधित ऑर्डर की संख्या। \n
- बाहरी API का प्रतिक्रिया समय। \n
- सत्यापन त्रुटियों की संख्या। \n
1.3. बुनियादी ढाँचा मेट्रिक्स
\n- \n
- डिस्क, नेटवर्क, होस्ट मेमोरी का उपयोग। \n
- डेटाबेस कनेक्शन की स्थिति (कनेक्शन पूल)। \n
- संदेश कतार विलंब (Kafka, RabbitMQ)। \n
2. मेट्रिक्स संग्रह के लिए उपकरण: Micrometer + Prometheus
\nजावा अनुप्रयोगों के लिए, डी-फैक्टो मानक Micrometer लाइब्रेरी है। यह विभिन्न निगरानी प्रणालियों (Prometheus, Datadog, Graphite) के लिए एक फ़ेसड प्रदान करती है। Prometheus (मेट्रिक्स स्टोरेज) और Grafana (विज़ुअलाइज़ेशन) के साथ मिलकर, आपको एक शक्तिशाली और मुफ्त इकोसिस्टम मिलता है।
\n\n2.1. Spring Boot में Micrometer कनेक्ट करना
\nयदि आप Spring Boot 2.x या 3.x का उपयोग कर रहे हैं, तो pom.xml में निर्भरता जोड़ें:
<dependency>\n <groupId>io.micrometer</groupId>\n <artifactId>micrometer-registry-prometheus</artifactId>\n</dependency>\nइसके बाद, Spring Boot Actuator स्वचालित रूप से /actuator/prometheus एंडपॉइंट को सक्षम करेगा, जो Prometheus प्रारूप में मेट्रिक्स प्रदान करेगा।
2.2. कस्टम मेट्रिक बनाना
\nमान लीजिए, आप किसी विधि के सफल और असफल कॉल की संख्या गिनना चाहते हैं। एक काउंटर बनाएँ:
\nimport io.micrometer.core.instrument.MeterRegistry;\nimport io.micrometer.core.instrument.Counter;\nimport org.springframework.stereotype.Service;\n\n@Service\npublic class OrderService {\n\n private final Counter successCounter;\n private final Counter errorCounter;\n\n public OrderService(MeterRegistry registry) {\n this.successCounter = Counter.builder("orders.success")\n .description("Number of successful orders")\n .register(registry);\n this.errorCounter = Counter.builder("orders.error")\n .description("Number of failed orders")\n .register(registry);\n }\n\n public void processOrder(String orderId) {\n try {\n // ऑर्डर प्रोसेसिंग लॉजिक\n successCounter.increment();\n } catch (Exception e) {\n errorCounter.increment();\n throw e;\n }\n }\n}\nPrometheus में, मेट्रिक orders_succ के रूप में दिखाई देगी।