परिचय: C# अनुप्रयोगों की निगरानी एक कला क्यों है
\nआधुनिक C# (.NET) विकास में, निगरानी केवल एक विकल्प नहीं रह गई है। यह production-वातावरण का एक अनिवार्य तत्व है, जो न केवल विफलताओं को रिकॉर्ड करने की अनुमति देता है, बल्कि उनकी भविष्यवाणी भी करता है। उन्नत स्तर पर, निगरानी एक प्रारंभिक चेतावनी प्रणाली में बदल जाती है: आप केवल डैशबोर्ड नहीं देखते, बल्कि जटिल मीट्रिक्स के आधार पर अलर्ट कॉन्फ़िगर करते हैं।
\nइस लेख में, हम चर्चा करेंगे कि मानक CPU और मेमोरी काउंटर से आगे कैसे बढ़ें। आप सीखेंगे कि कस्टम बिज़नेस मीट्रिक्स कैसे एकत्र करें, Prometheus और Alertmanager के साथ अलर्ट कैसे कॉन्फ़िगर करें, और ट्रेसिंग के लिए OpenTelemetry का उपयोग कैसे करें। सभी उदाहरण C# में होंगे।
\n\n1. उन्नत इंस्ट्रुमेंटेशन: App Metrics और Prometheus
\n1.1. ASP.NET Core में Prometheus को जोड़ना
\n.NET में बुनियादी निगरानी अक्सर अंतर्निहित PerformanceCounter तक सीमित होती है। हालांकि, माइक्रोसर्विस आर्किटेक्चर के लिए Prometheus मानक बन गया है। पैकेज स्थापित करें:
dotnet add package prometheus-net.AspNetCore\nफिर Program.cs में middleware जोड़ें:
using Prometheus;\n\nvar builder = WebApplication.CreateBuilder(args);\nvar app = builder.Build();\n\n// मीट्रिक्स एंडपॉइंट सक्षम करें\napp.UseHttpMetrics();\napp.UseRouting();\napp.MapMetrics(); // /metrics\n\napp.Run();\nयह आपको बुनियादी मीट्रिक्स देगा: अनुरोधों की संख्या, अवधि, त्रुटियाँ। लेकिन उन्नत स्तर के लिए यह पर्याप्त नहीं है।
\n\n1.2. कस्टम बिज़नेस मीट्रिक्स
\nमान लीजिए, आप बनाए गए ऑर्डर की संख्या या महत्वपूर्ण बिज़नेस ऑपरेशन के निष्पादन समय को ट्रैक करना चाहते हैं। Counter और Histogram का उपयोग करें:
using Prometheus;\n\npublic class OrderMetrics\n{\n private static readonly Counter OrdersCreated = Metrics\n .CreateCounter("orders_created_total", "Total number of created orders");\n\n private static readonly Histogram OrderProcessingTime = Metrics\n .CreateHistogram("order_processing_seconds", "Histogram of order processing time");\n\n public void RecordOrderCreation(double elapsedSeconds)\n {\n OrdersCreated.Inc();\n OrderProcessingTime.Observe(elapsedSeconds);\n }\n}\nअब किसी भी सेवा में आप OrderMetrics इंजेक्ट कर सकते हैं और डेटा रिकॉर्ड कर सकते हैं। यह आपको Grafana में सेकंड-स्तरीय सटीकता के साथ डैशबोर्ड बनाने की अनुमति देगा।
2. अलर्ट: सरल ट्रिगर से SLO-उन्मुख नियमों तक
\n2.1. C# मीट्रिक्स के लिए Alertmanager कॉन्फ़िगरेशन
\nमीट्रिक्स एकत्र करना आधा काम है। दूसरा आधा अलर्ट है। Prometheus के लिए एक नियम बनाएं (alerts.yml):
groups:\n - name: csharp_app_alerts\n rules:\n - alert: HighErrorRate\n expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.05\n for: 2m\n labels:\n severity: critical\n annotations:\n summary: "C# ऐप में उच्च त्रुटि दर"\n description: "पिछले 5 मिनट में त्रुटि दर {{ $value }} है"\nयह एक बुनियादी उदाहरण है। उन्नत स्तर पर, SLO-अलर्ट जोड़ना उचित है। उदाहरण के लिए, यदि 99% अनुरोध 200 मिलीसेकंड में पूरे नहीं होते हैं, तो यह चिंता का कारण है।
\n\n2.2. बिज़नेस मीट्रिक्स पर आधारित अलर्ट
\nपिछले अनुभाग के कस्टम काउंटर का उपयोग करें। यदि ऑर्डर की संख्या अचानक गिर जाती है, तो इसका मतलब है कि कुछ टूट गया है:
\n - alert: OrdersStopped\n expr: rate(orders_created_total[10m]) == 0\n for: 5m\n labels:\n severity: warning\n annotations:\n summary: "पिछले 10 मिनट में कोई ऑर्डर नहीं बनाया गया"\nऐसा अलर्ट मानक OS मीट्रिक्स से प्राप्त नहीं किया जा सकता है - इसके लिए बिज़नेस लॉजिक की गहरी समझ की आवश्यकता होती है।
\n\n3. OpenTelemetry: C# में वितरित ट्रेसिंग
\n3.1. OpenTelemetry SDK का एकीकरण
\nजब आपके पास C# में 10 माइक्रोसर्विसेज हैं, तो अलग-अलग मीट्रिक्स मदद नहीं करेंगे। ट्रेसिंग की आवश्यकता है। स्थापित करें