Prometheus और OpenTelemetry के साथ .NET अनुप्रयोगों की निगरानी

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# (.NET) अनुप्रयोगों की निगरानी: मीट्रिक्स से अलर्टिंग तक



आधुनिक .NET अनुप्रयोगों को प्रदर्शन, उपलब्धता और आंतरिक प्रक्रियाओं की स्थिति की निरंतर निगरानी की आवश्यकता होती है। इस लेख में, हम निगरानी आयोजित करने के लिए प्रमुख उपकरणों पर चर्चा करेंगे: मीट्रिक्स संग्रह के लिए Prometheus, ट्रेसिंग के लिए OpenTelemetry और संरचित लॉगिंग के लिए Serilog। आप सीखेंगे कि अपने C# अनुप्रयोग में ऑब्ज़र्वेबिलिटी (अवलोकनीयता) कैसे शामिल करें।



.NET अनुप्रयोगों की निगरानी क्यों आवश्यक है?

निगरानी के अभाव में डिबगिंग अनुमान लगाने जैसी हो जाती है। मीट्रिक्स के बिना आप प्रतिक्रिया समय में वृद्धि के बारे में नहीं जान पाएंगे, ट्रेस के बिना आप कॉल श्रृंखला में अड़चन नहीं ढूंढ पाएंगे, और लॉग के बिना आप त्रुटि का कारण नहीं समझ पाएंगे। सही ढंग से कॉन्फ़िगर की गई निगरानी आपको यह अनुमति देती है:

  • उपयोगकर्ताओं को प्रभावित करने से पहले विसंगतियों का पता लगाना।
  • व्यक्तिगत घटकों (डेटाबेस, API, कैश) के प्रदर्शन का विश्लेषण करना।
  • व्यावसायिक मीट्रिक्स (ऑर्डर की संख्या, सक्रिय सत्र) एकत्र करना।
  • घटनाओं के बारे में सूचनाओं को स्वचालित करना।


.NET निगरानी के लिए उपकरण

हम तीन मुख्य घटकों का उपयोग करेंगे:

  • Prometheus — शक्तिशाली क्वेरी भाषा PromQL के साथ मीट्रिक्स संग्रह और भंडारण प्रणाली।
  • OpenTelemetry — टेलीमेट्री (ट्रेस, मीट्रिक्स, लॉग) संग्रह के लिए मानक।
  • Serilog — .NET के लिए संरचित लॉगिंग लाइब्रेरी।


चरण 1: .NET के साथ Prometheus की स्थापना और कॉन्फ़िगरेशन

C# के साथ Prometheus को एकीकृत करने के लिए, prometheus-net पैकेज का उपयोग करें। इसे NuGet के माध्यम से स्थापित करें:

dotnet add package prometheus-net

फिर अपने Program.cs में middleware जोड़ें:

using Prometheus;

var builder = WebApplication.CreateBuilder(args);var app = builder.Build();

// Prometheus के लिए /metrics एंडपॉइंट सक्षम करेंapp.UseHttpMetrics();app.MapMetrics();

app.MapGet("/", () => "Hello World!");app.Run();

एप्लिकेशन चलाने के बाद, http://localhost:5000/metrics पर जाएं। आप मानक मीट्रिक्स देखेंगे: http_requests_total, http_request_duration_seconds और अन्य।



चरण 2: कस्टम मीट्रिक्स बनाना

अक्सर व्यावसायिक संकेतकों को ट्रैक करने की आवश्यकता होती है। उदाहरण के लिए, संसाधित ऑर्डर की संख्या:

using Prometheus;

public class OrderMetrics{ private static readonly Counter OrdersCounter = Metrics .CreateCounter("orders_processed_total", "Total number of processed orders");

public static void RecordOrder() { OrdersCounter.Inc(); }}

// कंट्रोलर में उपयोग[ApiController][Route("api/orders")]public class OrdersController : ControllerBase{ [HttpPost] public IActionResult CreateOrder() { // ... ऑर्डर बनाने का तर्क OrderMetrics.RecordOrder(); return Ok(); }}

अब /metrics में एक पंक्ति orders_processed_total 1 दिखाई देगी।



चरण 3: OpenTelemetry के साथ ट्रेसिंग

ट्रेसिंग यह समझने में मदद करती है कि अनुरोध प्रसंस्करण के प्रत्येक चरण में कितना समय लगता है। पैकेज स्थापित करें:

dotnet add package OpenTelemetry.Extensions.Hostingdotnet add package OpenTelemetry.Instrumentation.AspNetCoredotnet add package OpenTelemetry.Exporter.Console

Program.cs में OpenTelemetry कॉन्फ़िगर करें:

using OpenTelemetry.Trace;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddOpenTelemetry() .WithTracing(tracing => tracing .AddAspNetCoreInstrumentation() .AddConsoleExporter());

var app = builder.Build();app.Run();

अब प्रत्येक HTTP अनुरोध स्वचालित रूप से निष्पादन समय की जानकारी के साथ एक ट्रेस बनाएगा। निर्यात के लिए

अनुशंसाएँ