परिचय: C# अनुप्रयोगों के लिए निगरानी क्यों महत्वपूर्ण है
\n\nआधुनिक सॉफ्टवेयर विकास में कोड लिखना केवल आधा काम है। एप्लिकेशन को स्थिर, तेज़ और पूर्वानुमानित रूप से चलाने के लिए निरंतर निगरानी आवश्यक है। C# (.NET) अनुप्रयोगों के लिए, जो अक्सर उच्च-लोड वाले कॉर्पोरेट सिस्टम, बैंकिंग क्षेत्र, ई-कॉमर्स और क्लाउड सेवाओं में उपयोग किए जाते हैं, निगरानी सिर्फ एक विकल्प नहीं बल्कि एक अनिवार्य आवश्यकता बन जाती है।
\n\nनिगरानी के बिना आप आँख बंद करके काम कर रहे हैं: मेमोरी लीक सर्वर क्रैश होने तक अनदेखी रहती हैं, धीमे अनुरोध जमा होते रहते हैं, और उपयोगकर्ता प्रतिस्पर्धियों के पास चले जाते हैं। इस लेख में हम C# अनुप्रयोगों के लिए ऑब्ज़र्वेबिलिटी (observability) सेटअप के पूर्ण चक्र को कवर करेंगे: बुनियादी मीट्रिक्स संग्रह से लेकर रीयल-टाइम में स्मार्ट अलर्ट सेटअप तक।
\n\n1. निगरानी की मूल बातें: .NET में कौन से मीट्रिक्स एकत्र करें
\n\nटूल्स को कॉन्फ़िगर करने से पहले, यह समझना महत्वपूर्ण है कि C# अनुप्रयोगों के लिए कौन से मीट्रिक्स वास्तव में महत्वपूर्ण हैं। हम उन्हें तीन समूहों में विभाजित करेंगे:
\n\n1.1. सिस्टम मीट्रिक्स (इन्फ्रास्ट्रक्चर स्तर)
\n- \n
- CPU और Memory — dotnet प्रक्रिया द्वारा प्रोसेसर लोड और RAM खपत। \n
- GC (Garbage Collection) — कचरा संग्रह की आवृत्ति और अवधि, हीप का आकार (Gen0, Gen1, Gen2, LOH)। \n
- Thread Pool — सक्रिय, मुक्त और प्रतीक्षारत थ्रेड्स की संख्या। \n
- Disk I/O और Network — डिस्क पर पढ़ना/लिखना, नेटवर्क कनेक्शन। \n
1.2. व्यावसायिक मीट्रिक्स (एप्लिकेशन स्तर)
\n- \n
- Request Rate — प्रति सेकंड अनुरोधों की संख्या (RPS)। \n
- Latency — प्रतिक्रिया समय (p50, p95, p99 प्रतिशतक)। \n
- Error Rate — 4xx और 5xx त्रुटियों का प्रतिशत। \n
- Active Users — एक साथ काम करने वाले उपयोगकर्ताओं की संख्या। \n
1.3. .NET Runtime मीट्रिक्स
\n- \n
- JIT Compilation — विधियों के संकलन का समय। \n
- Assembly Loading — लोड की गई असेंबली की संख्या। \n
- Exceptions — प्रति सेकंड फेंके गए अपवादों की संख्या। \n
.NET में इन मीट्रिक्स को एकत्र करने के लिए एक शक्तिशाली टूल का उपयोग किया जाता है — System.Diagnostics.Metrics (.NET 6+ से अंतर्निहित API) और OpenTelemetry लाइब्रेरी।
\n\n2. OpenTelemetry और Prometheus के साथ मीट्रिक्स संग्रह सेटअप
\n\nC# एप्लिकेशन की निगरानी व्यवस्थित करने का सबसे अच्छा तरीका OpenTelemetry (मीट्रिक्स संग्रह) + Prometheus (भंडारण) + Grafana (विज़ुअलाइज़ेशन) का संयोजन है। आइए चरण-दर-चरण सेटअप देखें।
\n\n2.1. NuGet पैकेज इंस्टॉल करना
\nप्रोजेक्ट में निम्नलिखित पैकेज जोड़ें:
\ndotnet add package OpenTelemetry.Extensions.Hosting\ndotnet add package OpenTelemetry.Exporter.Prometheus.AspNetCore\ndotnet add package OpenTelemetry.Instrumentation.AspNetCore\ndotnet add package OpenTelemetry.Instrumentation.Runtime\n\n2.2. Program.cs में कॉन्फ़िगरेशन
\nASP.NET Core और .NET Runtime मीट्रिक्स के स्वचालित संग्रह के लिए OpenTelemetry कॉन्फ़िगर करें:
\nusing OpenTelemetry.Metrics;\n\nvar builder = WebApplication.CreateBuilder(args);\n\nbuilder.Services.AddOpenTelemetry()\n .WithMetrics(metrics => metrics\n .AddAspNetCoreInstrumentation() // HTTP अनुरोध मीट्रिक्स\n .AddRuntimeInstrumentation() // GC, JIT, ThreadPool मीट्रिक्स\n .AddPrometheusExporter()); // Prometheus में निर्यात\n\nvar app = builder.Build();\n\napp.UseOpenTelemetryPrometheusScrapingEndpoint(); // /metrics एंडपॉइंट\n\napp.Run();\n\nअब http://localhost:5000/metrics पते पर Prometheus प्रारूप में मीट्रिक्स वाला एक एंडपॉइंट उपलब्ध होगा।
2.3. कस्टम मीट्रिक्स बनाना
\nएक व्यावसायिक मीट्रिक्स जोड़ें — संसाधित ऑर्डर का काउंटर:
\npublic class OrderMetrics\